Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update benchmark? #154

Closed
asl97 opened this issue Nov 17, 2014 · 3 comments · Fixed by #205
Closed

Update benchmark? #154

asl97 opened this issue Nov 17, 2014 · 3 comments · Fixed by #205

Comments

@asl97
Copy link

asl97 commented Nov 17, 2014

the benchmark is from way back in Oct 1, 2012.

i am sure people would appreciate having the benchmark updated, two years is a long time.

maybe with python 2.7 and 3.4.

@alecz20
Copy link

alecz20 commented Mar 19, 2015

It would also be useful to benchmark against the built-in json. Otherwise most people will see little reason to use a 3rd party library.

@thedrow
Copy link

thedrow commented May 31, 2015

I just run them and despite the fact that the yajl python libraries are not compiled against the latest version of yajl, yajl beats ujson sometimes.
This is Python 2.7, Linux Kernel 3.19, Intel i7.

Array with 256 doubles:
ujson encode      : 3978.64437 calls/sec
simplejson encode : 3821.51380 calls/sec
yajl  encode      : 6574.79962 calls/sec
ujson decode      : 30692.91889 calls/sec
simplejson decode : 14941.13569 calls/sec
yajl decode       : 12874.18924 calls/sec
Array with 256 utf-8 strings:
ujson encode      : 5954.11378 calls/sec
simplejson encode : 1717.85727 calls/sec
yajl  encode      : 8328.19527 calls/sec
ujson decode      : 2784.48001 calls/sec
simplejson decode : 396.52147 calls/sec
yajl decode       : 772.28426 calls/sec
Medium complex object:
ujson encode      : 14082.60525 calls/sec
simplejson encode : 4728.99544 calls/sec
yajl  encode      : 7081.62117 calls/sec
ujson decode      : 10862.68991 calls/sec
simplejson decode : 9293.90498 calls/sec
yajl decode       : 6756.56510 calls/sec
Array with 256 strings:
ujson encode      : 32737.41098 calls/sec
yajl  encode      : 32246.41425 calls/sec
ujson decode      : 21416.63258 calls/sec
simplejson decode : 37943.32073 calls/sec
yajl decode       : 14673.90023 calls/sec
Array with 256 True values:
ujson encode      : 117132.23869 calls/sec
simplejson encode : 56785.52764 calls/sec
yajl  encode      : 116535.18279 calls/sec
ujson decode      : 145127.30763 calls/sec
simplejson decode : 125071.90964 calls/sec
yajl decode       : 77555.07324 calls/sec
Array with 256 dict{string, int} pairs:
ujson encode      : 13473.23409 calls/sec
simplejson encode : 4764.63673 calls/sec
yajl  encode      : 13346.14606 calls/sec
ujson decode      : 18307.96710 calls/sec
simplejson decode : 12994.07037 calls/sec
yajl decode       : 11197.20224 calls/sec
Dict with 256 arrays with 256 dict{string, int} pairs:
ujson encode      : 51.28932 calls/sec
simplejson encode : 15.77712 calls/sec
yajl  encode      : 51.88562 calls/sec
ujson decode      : 41.20073 calls/sec
simplejson decode : 26.81546 calls/sec
yajl decode       : 26.63153 calls/sec
Dict with 256 arrays with 256 dict{string, int} pairs, outputting sorted keys:
ujson encode      : 30.04553 calls/sec
simplejson encode : 11.00317 calls/sec

Also the benchmark fails since yajl doesn't have the sort_keys keyword argument so I removed that benchmark run.

@thedrow
Copy link

thedrow commented May 31, 2015

These are the results with the latest yajl library compiled for py-yajl:

Array with 256 doubles:
ujson encode      : 3604.66482 calls/sec
simplejson encode : 3469.81611 calls/sec
yajl  encode      : 3402.23647 calls/sec
ujson decode      : 28445.94915 calls/sec
simplejson decode : 13528.99605 calls/sec
yajl decode       : 11318.42849 calls/sec
Array with 256 utf-8 strings:
ujson encode      : 5538.60334 calls/sec
simplejson encode : 1539.96128 calls/sec
yajl  encode      : 7586.65323 calls/sec
ujson decode      : 2424.90382 calls/sec
simplejson decode : 367.65814 calls/sec
yajl decode       : 751.74323 calls/sec
Medium complex object:
ujson encode      : 13583.38245 calls/sec
simplejson encode : 4499.96406 calls/sec
yajl  encode      : 4788.08932 calls/sec
ujson decode      : 10758.61460 calls/sec
simplejson decode : 9532.78208 calls/sec
yajl decode       : 6918.70207 calls/sec
Array with 256 strings:
ujson encode      : 32337.75626 calls/sec
yajl  encode      : 26755.13806 calls/sec
ujson decode      : 20543.82831 calls/sec
simplejson decode : 36797.30488 calls/sec
yajl decode       : 14212.01543 calls/sec
Array with 256 True values:
ujson encode      : 113939.86020 calls/sec
simplejson encode : 56195.50008 calls/sec
yajl  encode      : 119910.09396 calls/sec
ujson decode      : 145953.51123 calls/sec
simplejson decode : 122890.56091 calls/sec
yajl decode       : 75283.49523 calls/sec
Array with 256 dict{string, int} pairs:
ujson encode      : 12886.53421 calls/sec
simplejson encode : 4636.27038 calls/sec
yajl  encode      : 12233.84849 calls/sec
ujson decode      : 16897.14518 calls/sec
simplejson decode : 11584.29268 calls/sec
yajl decode       : 10588.39864 calls/sec
Dict with 256 arrays with 256 dict{string, int} pairs:
ujson encode      : 44.33154 calls/sec
simplejson encode : 13.13501 calls/sec
yajl  encode      : 42.47944 calls/sec
ujson decode      : 35.49541 calls/sec
simplejson decode : 22.48087 calls/sec
yajl decode       : 22.87589 calls/sec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants