Skip to content

stantonk/ultrajson

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UltraJSON

UltraJSON is an ultra fast JSON encoder and decoder written in pure C with bindings for Python 2.5+ and 3.

To install it just run Pip as usual:

$ pip install ujson

Usage

May be used as a drop in replacement for most other JSON parsers for Python:

>>> import ujson
>>> ujson.dumps([{"key": "value"}, 81, True])
'[{"key":"value"},81,true]'
>>> ujson.loads("""[{"key": "value"}, 81, true]""")
[{u'key': u'value'}, 81, True]

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

About

Ultra fast JSON decoder and encoder written in C with Python bindings

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 68.4%
  • Python 31.6%