更快的python pickle替换

larch-pickle的Python项目详细描述


此模块可作为pickle的透明替换。

与原始python pickle的区别:

  • no memo attribute.
  • no clear_memo().
  • no persistent_id interface.
  • byte strings are always assumed to be utf-8 encoded.
  • Pickler has an additional with_refs parameter. Setting with_refs to false, the pickler will ignore object references. This can result in an extra speed boost.

安装

落叶松泡菜需要boost库进行编译。如果boost不在 标准包含路径安装时使用:

python build_ext -I /path/to/boost install

与其他泡菜包装相比的速度

转储字典(10个循环)

PackageSecondsSize
marshal0.4614115975952
larch-pickle0.6643339714411
ujson1.9421413141354
msgpack2.047049843459
json2.1411714365311
cPickle4.0959912781866

加载字典(10个循环)

PackageSeconds
msgpack1.38378
marshal1.49512
larch-pickle1.51489
ujson2.42431
cPickle2.42524
json6.04131

转储对象(10个循环)

PackageSecondsSize
larch-pickle1.0744310094415
ujson2.5550213331354
cPickle4.7080512961909

加载对象(10个循环)

PackageSeconds
larch-pickle1.6615
ujson2.45786
cPickle2.58697

转储字符串(10个循环)

PackageSecondsSize
marshal0.5674732826787
msgpack0.97522629464951
larch-pickle1.1636812103729
json1.1900531966498
ujson1.5164830987525
cPickle4.1295219871780

加载字符串(10个循环)

PackageSeconds
larch-pickle0.353255
marshal0.435936
msgpack0.469068
cPickle1.72308
ujson1.82656
json3.01798

转储列表(10个循环)

PackageSecondsSize
marshal0.86188642703907
larch-pickle2.3357416054577
json3.1105435917346
ujson4.428434938373
msgpack5.5532131440375
cPickle15.553133700258

加载列表(10个循环)

PackageSeconds
larch-pickle2.07305
marshal2.14713
msgpack2.46054
ujson4.14067
json5.20221
cPickle8.1974

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
socketJava加密聊天客户端未通过关联   java保存JFileChooser的状态   java如何让代码等待GUI完成?   java可序列化和接口:Parcelable在写入可序列化对象时遇到IOException   java Jersey客户端将覆盖ROBOTS响应   java空指针异常&如何克服   java如何使用JAXR设置字符集?   JavaSpring自定义转换器被覆盖   java将泛型类型的值设置为DTO字段   使用netty的java音频流服务器   java滚动条添加到面板时不显示在滚动窗格中   java windows通过IIS Url重写单点登录tomcat   Web应用程序的java容器管理安全性   java使用mybatis将POJO项数组传递到存储过程?