设为首页 收藏本站
查看: 785|回复: 0

[经验分享] UltraJSON——Python 的极速 JSON 编解码器

[复制链接]

尚未签到

发表于 2017-5-5 09:43:19 | 显示全部楼层 |阅读模式
  赖勇浩(http://laiyonghao.com)
  
注:不是逐句翻译,如有困惑,参详原文(http://pushingtheweb.com/2011/03/ultra-fast-json-encoding-decoding-python/)。
  
在 ESN,我们大量使用 JSON,Python 2.6 自带的那个太慢,所以我们后来使用 simplejson。今时今日 JavaScript 和 JSON 更广泛地使用了,所以我觉得可能这是一个值得我用 C 去优化的领域,而且也可以正明我宝刀未老。
UltraJSON
  我花了一个周末来研究一下 JSON 编码,并把我结果称为 UltraJSON,从目前我做的初步的基准测试来看,他是我能找到的所有 JSON 编解码器中最快的(如果不是,那我可以把它优化得更快!)。
Python 绑定
  其实 UltraJSON 并非只能用于特定语言,只是为了方便我的同事使用,我就实现了它的 Python 绑定,称为 ujson 模块。
更新:UltraJSON 现在可以在 PyPI 中找到了,包名叫 ujson,用 easy_install 或 pip 可以很方便地安装它,你懂的。
当前基准测试
  64位 Linux 基准测试
  Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
OS Version: Ubuntu 10.10
System Type: x64-based PC
Processor: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz
Total Physical Memory: 4096 MB

Array with 256 utf-8 strings:
ujson encode : 2874.54652 calls/sec
simplejson encode : 1539.47999 calls/sec
cjson encode : 132.33571 calls/sec

ujson decode : 2072.09417 calls/sec
cjson decode : 991.20903 calls/sec
simplejson decode : 310.75309 calls/sec

Medium complex object:
ujson encode : 19001.01929 calls/sec
simplejson encode : 3512.29205 calls/sec
cjson encode : 3063.69959 calls/sec

ujson decode : 12791.80993 calls/sec
cjson decode : 8288.32916 calls/sec
simplejson decode : 6640.22169 calls/sec

Array with 256 strings:
ujson encode : 40161.78453 calls/sec
simplejson encode : 19301.40779 calls/sec
cjson encode : 12337.13166 calls/sec

ujson decode : 36944.81317 calls/sec
cjson decode : 30187.40167 calls/sec
simplejson decode : 25105.56562 calls/sec

Array with 256 doubles:
ujson encode : 6054.71950 calls/sec
simplejson encode : 2912.44353 calls/sec
cjson encode : 3539.51228 calls/sec

ujson decode : 27794.29735 calls/sec
cjson decode : 14892.38775 calls/sec
simplejson decode : 14879.00070 calls/sec

Array with 256 True values:
ujson encode : 168086.95325 calls/sec
simplejson encode : 49348.93309 calls/sec
cjson encode : 67392.90623 calls/sec

ujson decode : 139359.25968 calls/sec
cjson decode : 82552.26652 calls/sec
simplejson decode : 114998.51396 calls/sec

Array with 256 dict{string, int} pairs:
ujson encode : 24125.68837 calls/sec
simplejson encode : 5751.74871 calls/sec
cjson encode : 4735.65147 calls/sec

ujson decode : 17176.70493 calls/sec
cjson decode : 13420.93963 calls/sec
simplejson decode : 9854.27352 calls/sec

Dict with 256 arrays with 256 dict{string, int} pairs:
ujson encode : 86.52449 calls/sec
simplejson encode : 17.46117 calls/sec
cjson encode : 18.31323 calls/sec

ujson decode : 49.54660 calls/sec
cjson decode : 38.34094 calls/sec
simplejson decode : 28.18035 calls/sec
More on GitHub
  很期待看到有人使用这个项目,更赞的是贡献代码,所以来我的 GitHub 仓库(https://github.com/jskorpan/ultrajson)看看吧。
你要是把它绑定到更多语言就真的是酷毙了!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373281-1-1.html 上篇帖子: 为个小善——发布 Python 库 absolute32 下篇帖子: 用 Python 的 Descriptor 特性解决一个变态的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表