1
0
mirror of https://github.com/ultrajson/ultrajson.git synced 2024-11-24 05:12:02 +01:00
Ultra fast JSON decoder and encoder written in C with Python bindings
Go to file
2012-12-17 17:49:38 +01:00
lib Improved double decoding performance and added additional tests 2012-12-17 15:27:19 +01:00
python Implemented encoder support for Python Set object and derivatives. Bumped version 2012-12-17 17:49:38 +01:00
tests Implemented encoder support for Python Set object and derivatives. Bumped version 2012-12-17 17:49:38 +01:00
LICENSE.txt Updated license to 3-clause BSD 2012-06-25 11:29:54 +02:00
MANIFEST.in Fixed MANIFEST.in 2012-10-01 13:55:06 +02:00
README.rst Update README.rst 2012-10-01 13:46:23 +03:00
setup.py Fixed type-o in pull request. Bumped version 2012-12-17 15:32:44 +01:00

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 |
+-----------------------------------------+--------+------------+--------+---------+