Skip to main content
UltraJSON is a fast and extendable JSON encoder and decoder written in pure C

Python bindings are available as the module ujson (through easy_install / pypi):
http://pypi.python.org/pypi/ujson/


Installation instructions:

1. Build and install ujson Python extension (requires root)
Go to <root>/python
Type: python setup.py build install

2. Run tests (as needed)
Type: python tests.py

Benchmarks:

64-bit benchmarks Linux
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
OS Version: Ubuntu 11.04
System Type: x64-based PC
Processor: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz
Total Physical Memory: 4096 MB

py-yajl 0.3.5 => http://rtyler.github.com/py-yajl
simplejson 2.1.2 => http://simplejson.readthedocs.org/en/latest/index.html
cjson 1.0.5 => http://pypi.python.org/pypi/python-cjson

Note: Some of the string benchmarks are unfair as much of the final performance depends on to what extent the individual JSON encoders/decoders implement the JSON specification and Unicode standard.
At the time of writing py-yayl and cjson did not fully comply to the JSON specification and Unicode standard.

Array with 256 utf-8 strings:
*yajl encode : 5132.81010 calls/sec
ujson encode : 2793.22602 calls/sec
simplejson encode : 1609.20858 calls/sec
cjson encode : 139.65933 calls/sec
*) Output not ASCII but UTF-8 (default escaping behaviour not implemented)

ujson decode : 1404.18567 calls/sec
cjson decode : 814.54848 calls/sec
yajl decode : 594.28917 calls/sec
simplejson decode : 347.25104 calls/sec


Medium complex object:
ujson encode : 18757.01101 calls/sec
yajl encode : 6315.14030 calls/sec
simplejson encode : 5542.03928 calls/sec
cjson encode : 4651.59072 calls/sec

ujson decode : 10759.69649 calls/sec
simplejson decode : 8148.35221 calls/sec
cjson decode : 7931.04387 calls/sec
yajl decode : 5887.38201 calls/sec

Array with 256 strings:
ujson encode : 40427.72790 calls/sec
yajl encode : 23158.54336 calls/sec
simplejson encode : 22544.31270 calls/sec
cjson encode : 12726.16278 calls/sec

*simplejson decode : 28077.25572 calls/sec
ujson decode : 26161.35785 calls/sec
cjson decode : 25661.96211 calls/sec
yajl decode : 13565.59414 calls/sec

*) Specific decoder advantage from 8-bit strings (character encoding not preserved)

Array with 256 doubles:
cjson encode : 10890.30488 calls/sec
yajl encode : 6335.60567 calls/sec
ujson encode : 6035.47694 calls/sec
simplejson encode : 4153.79495 calls/sec

ujson decode : 27824.38869 calls/sec
simplejson decode : 12599.16997 calls/sec
yajl decode : 11014.36990 calls/sec
cjson decode : 8082.23784 calls/sec

Array with 256 True values:
ujson encode : 189406.12793 calls/sec
yajl encode : 97727.04396 calls/sec
cjson encode : 73106.77801 calls/sec
simplejson encode : 50481.90233 calls/sec

ujson decode : 148107.72025 calls/sec
simplejson decode : 125620.84065 calls/sec
cjson decode : 76946.51962 calls/sec
yajl decode : 73256.86109 calls/sec

Array with 256 dict{string, int} pairs:
ujson encode : 26391.91864 calls/sec
yajl encode : 12496.90579 calls/sec
simplejson encode : 6294.72548 calls/sec
cjson encode : 5044.07534 calls/sec

ujson decode : 16069.25600 calls/sec
cjson decode : 13145.57687 calls/sec
simplejson decode : 10464.16719 calls/sec
yajl decode : 8713.18458 calls/sec

Dict with 256 arrays with 256 dict{string, int} pairs:
ujson encode : 93.33057 calls/sec
yajl encode : 47.37864 calls/sec
cjson encode : 19.17972 calls/sec
simplejson encode : 18.89625 calls/sec

ujson decode : 42.76765 calls/sec
cjson decode : 33.52049 calls/sec
simplejson decode : 25.83548 calls/sec
yajl decode : 24.70140 calls/sec



32-bit benchmarks Windows
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
OS Version: 6.1.7601 Service Pack 1 Build 7601
System Type: x64-based PC
Processor: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz 2.83 GHz
Total Physical Memory: 8191 MB

Array with 256 utf-8 strings:
ujson encode : 1191.98175 calls/sec
simplejson encode : 1013.98279 calls/sec
cjson encode : 1040.66063 calls/sec

ujson decode : 1215.66875 calls/sec
cjson decode : 493.30484 calls/sec
simplejson decode : 269.85512 calls/sec

Medium complex object:
ujson encode : 10307.63723 calls/sec
simplejson encode : 2534.94769 calls/sec
cjson encode : 2047.95118 calls/sec

ujson decode : 7274.10026 calls/sec
cjson decode : 3575.39307 calls/sec
simplejson decode : 3565.51252 calls/sec

Array with 256 strings:
ujson encode : 21348.25210 calls/sec
simplejson encode : 15736.74638 calls/sec
cjson encode : 6371.26334 calls/sec

ujson decode : 26050.25316 calls/sec
cjson decode : 16468.88215 calls/sec
simplejson decode : 21115.75770 calls/sec

Array with 256 doubles:
ujson encode : 26975.49110 calls/sec
simplejson encode : 2046.29746 calls/sec
cjson encode : 2133.56594 calls/sec

ujson decode : 28430.33722 calls/sec
cjson decode : 4114.36400 calls/sec
simplejson decode : 4419.08507 calls/sec

Array with 256 True values:
ujson encode : 89846.12897 calls/sec
simplejson encode : 34288.36862 calls/sec
cjson encode : 47168.35849 calls/sec

ujson decode : 99423.47549 calls/sec
cjson decode : 58795.91460 calls/sec
simplejson decode : 76296.14699 calls/sec

Array with 256 dict{string, int} pairs:
ujson encode : 14776.41614 calls/sec
simplejson encode : 3876.86634 calls/sec
cjson encode : 3050.65343 calls/sec

ujson decode : 12934.39432 calls/sec
cjson decode : 7993.04345 calls/sec
simplejson decode : 7152.09475 calls/sec

Here is the benchmark run from a 32bit CentOS 5.6 (Python 2.4) machine:

Array with 256 utf-8 strings:
ujson encode : 1453.30891 calls/sec
simplejson encode : 658.31181 calls/sec
cjson encode : 62.18416 calls/sec

ujson decode : 1016.58767 calls/sec
cjson decode : 455.28550 calls/sec
simplejson decode : 124.20439 calls/sec

Medium complex object:
ujson encode : 6010.21634 calls/sec
simplejson encode : 1418.77823 calls/sec
cjson encode : 1252.92530 calls/sec

ujson decode : 4637.52630 calls/sec
cjson decode : 3444.13604 calls/sec
simplejson decode : 2166.18641 calls/sec

Array with 256 strings:
ujson encode : 12252.28889 calls/sec
simplejson encode : 9351.67532 calls/sec
cjson encode : 7786.13697 calls/sec

ujson decode : 10951.17394 calls/sec
cjson decode : 15971.02425 calls/sec
simplejson decode : 6796.77480 calls/sec

Array with 256 doubles:
ujson encode : 16300.61218 calls/sec
simplejson encode : 1613.39428 calls/sec
cjson encode : 2035.58937 calls/sec

ujson decode : 17301.00746 calls/sec
cjson decode : 5785.33627 calls/sec
simplejson decode : 6199.49364 calls/sec

Array with 256 True values:
ujson encode : 72618.15350 calls/sec
simplejson encode : 18707.57593 calls/sec
cjson encode : 24150.26201 calls/sec

ujson decode : 53650.94162 calls/sec
cjson decode : 48069.53050 calls/sec
simplejson decode : 47098.40293 calls/sec

Array with 256 dict{string, int} pairs:
ujson encode : 8811.85922 calls/sec
simplejson encode : 2756.91262 calls/sec
cjson encode : 1758.26962 calls/sec

ujson decode : 6490.36358 calls/sec
cjson decode : 6330.77263 calls/sec
simplejson decode : 4161.97048 calls/sec

Dict with 256 arrays with 256 dict{string, int} pairs:
ujson encode : 31.08834 calls/sec
simplejson encode : 10.41434 calls/sec
cjson encode : 6.93790 calls/sec

ujson decode : 19.81373 calls/sec
cjson decode : 20.31727 calls/sec
simplejson decode : 15.05690 calls/sec


See (python/benchmark.py) for further information.


Metadata

Release files for ujson 1.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ujson 1.19
File Size Uploaded
ujson-1.19.zip 191.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ujson 1.19
File Interpreter ABI Platform
ujson-1.19.win32-py3.2.exe Details
ujson-1.19.win32-py2.7.exe Details

Total release size: 611.4 kB

Release files / ujson-1.19.zip

Download URL ujson-1.19.zip
Size 191.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2fc787104b5b8aee9bd6a3f8a0f3c51aae9bd7140913df8727b0fd85d8f9c3f5
BLAKE2b-256 checksum
How to use checksums
1f5bb83bb26e894634777066c1a4d3d9d472323fdd5039b2588d13d0e64d73a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ujson-1.19.win32-py3.2.exe

Download URL ujson-1.19.win32-py3.2.exe
Size 209.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b222345c75bca3b76c3a9dc95dbf4452df7c44b3a8ca1ed584dd87eca7632ddc
BLAKE2b-256 checksum
How to use checksums
5af78d14298b3c3be6d4f90d3f92f4d10aeb467701d553cec623ca9b7c27c865
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / ujson-1.19.win32-py2.7.exe

Download URL ujson-1.19.win32-py2.7.exe
Size 209.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a3202e0a59bcdffa0b5fc2160db78017f8617faeec20cbbebb78dd6814b54401
BLAKE2b-256 checksum
How to use checksums
d4c60745b86eddd3d49b53af21d1533ed6f67cad008d31b4548ffd4f421ef078
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

5.9.0

65 release files

5.8.0

61 release files

5.5.0

65 release files

5.3.0

50 release files

5.1.0

50 release files

5.0.0

50 release files

4.3.0

44 release files

4.2.0

44 release files

4.1.0

21 release files

4.0.2

21 release files

2.0.3

7 release files

2.0.2

7 release files

2.0.1

7 release files

2.0.0

1 release file

1.35

1 release file

1.34

2 release files

1.33

3 release files

1.30

4 release files

1.23

4 release files

1.22

4 release files

1.21

4 release files

This release

1.19 This release

3 release files

1.18

1 release file

1.15

1 release file

1.9

1 release file

1.8

1 release file

1.6

1 release file

1.4

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page