Если вас в первую очередь заботят скорость и пространство, используйте cPickle, потому что cPickle быстрее, чем JSON.
Если вас больше интересует совместимость, безопасность и / или удобочитаемость, используйте JSON.
Результаты тестов, упомянутые в других ответах, были записаны в 2010 году, а обновленные тесты в 2016 году с протоколом cPickle 2 показывают:
- cPickle загрузка в 3,8 раза быстрее
- cPickle в 1,5 раза быстрее читает
- cPickle немного меньшая кодировка
Воспроизведите это самостоятельно с помощью этой сути , которая основана на тесте Konstantin, упомянутом в других ответах, но с использованием cPickle с протоколом 2 вместо pickle и с использованием json вместо simplejson (поскольку json быстрее, чем simplejson ), например
wget https://gist.github.com/jdimatteo/af317ef24ccf1b3fa91f4399902bb534/raw/03e8dbab11b5605bc572bc117c8ac34cfa959a70/pickle_vs_json.py
python pickle_vs_json.py
Результаты с python 2.7 на достойном процессоре Xeon 2015 года:
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 с протоколом pickle 3 работает еще быстрее.