zoukankan      html  css  js  c++  java
  • 出乎意料的python2 json高性能处理的最佳方案: pypy2 + python原生json库

    网上一圈发现,python2里ujson评价最高,而python3里orjson评价不错,据同事的评测,在3版本里, ujson和orjson不相上下(不清楚具体的json结构的细节,可能不是很大的数据集)

    选了一个稍微有点尺寸的 json数据做了下试验


    root@ubuntu:/home/yey/perftest# python jsonbench.py
    json.loads 51582/sec
    ujson.loads 202109/sec
    json.dumps 97214/sec
    ujson.dumps 187700/sec

    ujson的loads是json的4倍, ujson的dumps是json的2倍,似乎是不错。

    并且从网上的评价来看,ujson似乎是python2下的最佳选择了。

    在我的场景中,我需要高性能的处理,为此我引入了pypy, 看上面的结果,我想当然的使用了pypy + ujson的组合,结果却不理想,研究发现一个惊人反转:pypy+ujson < python+json < python+ujson < pypy+json

    root@ubuntu:/home/yey/perftest# pypy/bin/pypy jsonbench.py

    json.loads 403308/sec
    ujson.loads 42868/sec
    json.dumps 210220/sec
    ujson.dumps 20783/sec

    结论,如果只需要loads, 那么排名如下

    pypy+json (40w/s) 
    python+ujson(20w/s)
    python+json(5w/s)
    pypy+ujson仅有 4w/s

    如果只需要dumps,    
    pypy+json 21w/s,
    python+ujson 18w/s,  (这个结论可能跟我的实际测试不符,我的json数据集比这个测试里的更大)
    python+json 9w/s,
    pypy+ujson 2w/s

    所以:如果是python2下需要高性能处理json, 没有太复杂的转化的话,最优解是 pypy+json

    当然pypy也有一些限制,比如说某些库并不支持pypy下运行,这些需要注意。

  • 相关阅读:
    Win10系统的开机启动项如何去关闭?
    如何对Win10电脑文件夹选项进行设置?
    DNS缓存失败怎么解决?
    如何关闭Win10系统的时间轴功能?
    怎么处理Win7电脑打开软件速度慢的情况?
    Win10带有网络连接的安全模式怎么开启?
    如何解决Win10电脑网速慢的问题?
    【Beta】Scrum Meeting 5
    【Beta】Scrum Meeting 4
    【Beta】Scrum Meeting 3
  • 原文地址:https://www.cnblogs.com/yeyong/p/11855174.html
Copyright © 2011-2022 走看看