Si lo que más le preocupa es la velocidad y el espacio, use cPickle porque cPickle es más rápido que JSON.
Si está más preocupado por la interoperabilidad, la seguridad y / o la legibilidad humana, utilice JSON.
Los resultados de las pruebas a los que se hace referencia en otras respuestas se registraron en 2010, y las pruebas actualizadas en 2016 con el protocolo cPickle 2 muestran:
- cPickle carga 3.8 veces más rápida
- cPickle lectura 1,5 veces más rápida
- cPickle codificación ligeramente más pequeña
Reproduzca esto usted mismo con esta esencia , que se basa en el punto de referencia de Konstantin al que se hace referencia en otras respuestas, pero usando cPickle con el protocolo 2 en lugar de pickle, y usando json en lugar de simplejson (ya que json es más rápido que simplejson ), por ejemplo
wget https://gist.github.com/jdimatteo/af317ef24ccf1b3fa91f4399902bb534/raw/03e8dbab11b5605bc572bc117c8ac34cfa959a70/pickle_vs_json.py
python pickle_vs_json.py
Resultados con python 2.7 en un procesador Xeon 2015 decente:
Dir Entries Method Time Length
dump 10 JSON 0.017 1484510
load 10 JSON 0.375 -
dump 10 Pickle 0.011 1428790
load 10 Pickle 0.098 -
dump 20 JSON 0.036 2969020
load 20 JSON 1.498 -
dump 20 Pickle 0.022 2857580
load 20 Pickle 0.394 -
dump 50 JSON 0.079 7422550
load 50 JSON 9.485 -
dump 50 Pickle 0.055 7143950
load 50 Pickle 2.518 -
dump 100 JSON 0.165 14845100
load 100 JSON 37.730 -
dump 100 Pickle 0.107 14287900
load 100 Pickle 9.907 -
Python 3.4 con el protocolo pickle 3 es aún más rápido.