Python:使用 `pickle`或 `marshal`与使用 `re`的性能比较

标签 python performance serialization deserialization

我正在使用 Python 计算一些非常大的数字,我想将之前计算的结果存储在 Berkeley DB 中。

问题是 Berkeley DB 必须使用字符串,而我必须为计算结果存储一个整数元组。

例如,我得到 (m, n) 作为结果,一种方法是将其存储为 "%d,%d"% (m, n) 并使用 re 读出。我还可以使用 picklemarshal 存储元组。

哪个性能更好?

最佳答案

对于纯粹的速度,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/

相关文章:

python - Discord 机器人无法使用 Python 在 Heroku 上运行

python - 将每一行转换为数据框并连接结果

performance - 递归算法的运行时间

Java 从另一个类的数组列表中调用详细信息

java - kryo 序列化是否适用于不可序列化的类并且类具有不可序列化的属性?

python - 在 Jupyter/pandas 中显示 2 位小数,并使用逗号分隔千位?

python - 如何覆盖我的模板而不是 django 管理面板来重置密码?

performance - 基于网络应用程序中的交易数据以可扩展的方式计算结果?

asp.net - 如何预热 ASP.NET Web 应用程序,以便导航到时启动时间不会太长?

android - 将对象存储到 SQLite 数据库最佳实践