不是逐句翻译,如有困惑,参见原文: Ultra fast JSON encoder and decoder for Python

Python中我们大量使用 JSON,Python 2.6 自带的那个太慢,所以我们后来使用 simplejson。今时今日 JavaScript 和 JSON 更广泛地使用了,所以我觉得可能这是一个值得我用 C 去优化的领域,而且也可以正明我宝刀未老。

UltraJSON

我花了一个周末来研究一下 JSON 编码,并把我结果称为 UltraJSON,从目前我做的初步的基准测试来看,他是我能找到的所有 JSON 编解码器中最快的(如果不是,那我可以把它优化得更快)。

Python 绑定

其实 UltraJSON 并非只能用于特定语言,只是为了方便我的同事使用,我就实现了它的 Python 绑定,称为 ujson 模块。
更新:UltraJSON 现在可以在 PyPI 中找到了,包名叫 ujson,用 easy_install 或 pip 可以很方便地安装它,你懂的。

easy_install ujson      或        pip install ujson

当前基准测试

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

Benchmarks

UltraJSON calls/sec compared to three other popular JSON parsers with performance gain specified below each.

Test machine:

Linux version 2.6.32-131.0.15.el6.x86_64

Versions:

  • ujson: 1.21
  • simplejson: 2.6.2
  • cjson: 1.05
  • yajl: 0.3.5
  • Python: Python 2.6.6 (r266:84292, Jul 20 2011, 10:22:43)
  ujson simplejson cjson yajl
Array with 256 utf-8 strings        
Encode 4090,74 899,39 83,86 3189,86
    4,55 48,78 1,28
Decode 863,29 586,15 201,61 352,48
    1,47 4,28 2,45
Medium complex object        
Encode 9750,37 1377,15 1512,06 3341,91
    7,08 6,45 2,92
Decode 5576,75 4247,16 3587,83 2850,13
    1,31 1,55 1,96
Array with 256 strings        
Encode 17998,01 12954,46 8715,02 15924,35
    1,39 2,07 1,13
Decode 14540,71 19696,13 14908,46 9547,14
    0,74 0,98 1,52
Array with 256 doubles        
Encode 2185,20 1466,87 1956,99 3421,10
    1,49 1,12 0,64
Decode 16062,01 8990,50 9743,40 8331,74
    1,79 1,65 1,93
Array with 256 True values        
Encode 69767,60 25202,56 41145,99 64330,76
    2,77 1,70 1,08
Decode 91416,02 56439,97 54918,09 42786,02
    1,62 1,66 2,14
Array with 256 dict{string, int} pairs        
         
Encode 11307,54 1830,45 2720,90 7725,56
    6,18 4,16 1,46
Decode 8695,94 7572,89 6076,71 5231,32
    1,15 1,43 1,66
Dict with 256 arrays with 256 dict        
Encode 37,76 4,88 10,49 27,62
    7,74 3,60 1,37
Decode 17,70 15,56 11,25 12,00
    1,14 1,57 1,47

 

More on GitHub

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