用于python的json编解码器
mrjson的Python项目详细描述
mrjson
MRJSON是一个用C/C++编写的JSON编码器和解码器,用于Python 2.5 +和3的绑定。对于长字符串、浮点数和mrjson基准测试,我需要比我的用例中最快的python解析器快2-3倍的性能。
要安装它,只需像往常一样运行pip:
$ pip install mrjson
用法
可以用作json的替代品
>>>importmrjsonasjson>>>json.dumps([{"key":"value"},81,True])'[{"key":"value"},81,true]'>>>json.loads("""[{"key": "value"}, 81, true]""")[{'key':'value'},81,True]
编码器差异
sure_ascii在基本json模块中默认为true,但由于空间和性能原因,这里默认为false。
indent、separators和sortkeys不受支持,因为漂亮的打印不需要性能。如果你有一个用例,写一个问题。
allow\u nan不受支持,因为默认情况下支持nan和无穷大。
如果自定义对象实现返回有效json字符串的json()方法,则支持自定义对象。
基准
对自己的文件进行基准测试,因为结果可能会有很大的不同:
$ python -m timeit -s "import mrjson as json;st = open('canada.json').read();" "json.loads(st)"
100 loops, best of 3: 8.05 msec per loop
$ python -m timeit -s "import json;st = open('canada.json').read();" "json.loads(st)"
10 loops, best of 3: 32.7 msec per loop
或者运行bench.py来测试其他模块的mrjson。由于英特尔的AVX2指令和^ {A1}用于发布实现Florian Loitsch浮点到字符串算法的C++代码,MRJSON特别擅长解码长字符串和浮点数。
负载
只有128字节长的字符串。
主要是浮点数——从{a2}中的CANADA.JSON,最快的C++ JSON解析器在该机器上以7.9毫秒的形式出现,用于比较
twitter上的一条tweet-twit.json
的citm_catalog.json转储
只有128字节长的字符串。
大部分是浮点数-canada.json来自The Native JSON Benchmark
twitter上的一条tweet-twit.json
的citm_catalog.json