当前位置:  开发笔记 > 编程语言 > 正文

Python JSON解码性能

如何解决《PythonJSON解码性能》经验,为你挑选了4个好方法。

我正在使用jsonPython 2.6中的模块来加载和解码JSON文件.但是我目前的表现比预期慢.我正在使用一个6MB大小的测试用例,json.loads()需要20秒.

我以为该json模块有一些本机代码来加速解码?

如何检查是否正在使用?

作为比较,我下载并安装了python-cjson模块,并且cjson.decode()在相同的测试用例中花了1秒钟.

我宁愿使用Python 2.6提供的JSON模块,因此我的代码用户不需要安装其他模块.

(我正在Mac OS X上开发,但我在Windows XP上得到了类似的结果.)



1> Ivo Danihelk..:

新的Yajl - 又一个JSON库非常快.

yajl        serialize: 0.180  deserialize: 0.182  total: 0.362
simplejson  serialize: 0.840  deserialize: 0.490  total: 1.331
stdlib json serialize: 2.812  deserialize: 8.725  total: 11.537

您可以自己比较这些库.

更新: UltraJSON更快.



2> A. Coady..:

它可能因平台而异,但内置的json模块基于simplejson,不包括C加速.我发现simplejson无论如何都要像python-cjson一样快,所以我更喜欢它,因为它显然具有与内置相同的接口.

try:
    import simplejson as json
except ImportError:
    import json

在我看来,这是一段时间内最好的习惯用语,在向前兼容时可以获得性能.


不再.许多新的json模块更快.

3> Tomas..:

我正在解析相同的文件10倍.文件大小为1,856,944字节.

Python 2.6:

yajl        serialize: 0.294  deserialize: 0.334  total: 0.627
cjson       serialize: 0.494  deserialize: 0.276  total: 0.769
simplejson  serialize: 0.554  deserialize: 0.268  total: 0.823
stdlib json serialize: 3.917  deserialize: 17.508 total: 21.425

Python 2.7:

yajl        serialize: 0.289  deserialize: 0.312  total: 0.601
cjson       serialize: 0.232  deserialize: 0.254  total: 0.486
simplejson  serialize: 0.288  deserialize: 0.253  total: 0.540
stdlib json serialize: 0.273  deserialize: 0.256  total: 0.528

不确定为什么数字与您的结果不成比例.我猜,新的图书馆?


原因很简单:在Python 2.7中添加了json的C加速.从发行说明:"更新的模块:json模块升级到simplejson包的2.0.9版本,其中包括一个C编码和解码更快的C扩展." http://docs.python.org/dev/whatsnew/2.7.html
+1非常有价值的数字托马斯.所以2.7修复了一切.

4> TONy.W..:

看看UltraJSON https://github.com/esnme/ultrajson

这里我的测试(代码来自:https://gist.github.com/lightcatcher/1136415)

平台:OS X 10.8.3 MBP 2.2 GHz Intel Core i7

JSON:

simplejson == 3.1.0

蟒蛇-cjson == 1.0.5

jsonlib == 1.6.1

ujson == 1.30

yajl == 0.3.5

JSON Benchmark
2.7.2 (default, Oct 11 2012, 20:14:37)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]
-----------------------------
ENCODING
simplejson: 0.293394s
cjson: 0.461517s
ujson: 0.222278s
jsonlib: 0.428641s
json: 0.759091s
yajl: 0.388836s

DECODING
simplejson: 0.556367s
cjson: 0.42649s
ujson: 0.212396s
jsonlib: 0.265861s
json: 0.365553s
yajl: 0.361718s

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有