【发布时间】:2023-03-31 21:00:02
【问题描述】:
这适用于 Python 3.6。
编辑并删除了很多被证明不相关的内容。
我曾认为 json 比 pickle 更快,而 Stack Overflow 上的其他答案和 cmets 似乎很多其他人也相信这一点。
我的测试是否洁净?差距比我预期的要大得多。我在非常大的物体上得到了相同的结果。
import json
import pickle
import timeit
file_name = 'foo'
num_tests = 100000
obj = {1: 1}
command = 'pickle.dumps(obj)'
setup = 'from __main__ import pickle, obj'
result = timeit.timeit(command, setup=setup, number=num_tests)
print("pickle: %f seconds" % result)
command = 'json.dumps(obj)'
setup = 'from __main__ import json, obj'
result = timeit.timeit(command, setup=setup, number=num_tests)
print("json: %f seconds" % result)
和输出:
pickle: 0.054130 seconds
json: 0.467168 seconds
【问题讨论】:
-
什么版本的python?
-
因为
JSON是文本序列化格式,旨在便于人类阅读和移植。pickle是一种二进制表示,旨在提高效率,但仅限于 Python。我不知道你为什么期望JSON更快。 -
两者都不是为速度而生的——如果您关心快速和紧凑,请考虑msgpack。
-
@pingul 我已经更新了代码以在 Python 3 上使用最高的酸洗协议进行测试。使用相对较小的数据结构,我得到了大约 2 倍的加速。我想这种差异会随着物体越大而变得越明显。 Here is the gist
标签: python json benchmarking pickle