我正在使用 Python 计算一些非常大的数字,我想将之前计算的结果存储在 Berkeley DB 中。
问题是 Berkeley DB 必须使用字符串,而我必须为计算结果存储一个整数元组。
例如,我得到 (m, n)
作为结果,一种方法是将其存储为 "%d,%d"% (m, n)
并使用 re
读出。我还可以使用 pickle
或 marshal
存储元组。
哪个性能更好?
最佳答案
对于纯粹的速度,marshal
将为您带来最快的结果。
时间:
>>> timeit.timeit("pickle.dumps([1,2,3])","import pickle",number=10000)
0.2939901351928711
>>> timeit.timeit("json.dumps([1,2,3])","import json",number=10000)
0.09756112098693848
>>> timeit.timeit("pickle.dumps([1,2,3])","import cPickle as pickle",number=10000)
0.031056880950927734
>>> timeit.timeit("marshal.dumps([1,2,3])","import marshal", number=10000)
0.00703883171081543
关于Python:使用 `pickle`或 `marshal`与使用 `re`的性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662757/