-
#1637419 проверил производительность ujson относительно Python 2.7.2 на рабочем компе и VPS'ке у Linode. Ну и Python 2.6.7 для создания контраста. Собрать под PyPy не вышло, хотя поддержка заявлена(readme читал). С удивлением обнаружил, что собирается под 3.x, однако падает при импорте — пичалько, но пофиксить знаний не хватает.В продолжение поста
Результаты в камментах.
А резюме примерно такое: стандартный json модуль в Python 2.7 прекрасен и его достаточно в 95% случаев, но в специфических задачах ujson может только улучшить картину.
-
Python 2.6.7 (r267:88850, Nov 14 2011, 03:46:19) [GCC 4.5.3]
Gentoo Linux 3.0.4-hardened-r4 #1 SMP Wed Nov 2 12:43:47 MSK 2011
x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux
ujson: 1.9
simplejson: 2.2.1
cjson: 1.0.5
json: default
Ready? Configure affinity and priority, starting in 20...
=== Array with 256 utf-8 strings: ===
ujson encode : 906.22523 calls/sec
json encode : 669.80406 calls/sec
simplejson encode : 600.11977 calls/sec
cjson encode : 113.05503 calls/sec
ujson decode : 764.69850 calls/sec
cjson decode : 505.21725 calls/sec
simplejson decode : 209.35972 calls/sec
json decode : 128.70468 calls/sec
=== Medium complex object: ===
ujson encode : 5553.99391 calls/sec
simplejson encode : 2026.34737 calls/sec
cjson encode : 1745.33838 calls/sec
json encode : 264.30142 calls/sec
ujson decode : 4886.70630 calls/sec
cjson decode : 3983.51094 calls/sec
simplejson decode : 3532.49823 calls/sec
json decode : 80.34214 calls/sec
=== Array with 256 strings: ===
ujson encode : 11930.52580 calls/sec
simplejson encode : 9200.18987 calls/sec
cjson encode : 6747.83864 calls/sec
json encode : 1970.71126 calls/sec
cjson decode : 12346.45395 calls/sec
ujson decode : 11916.38114 calls/sec
simplejson decode : 10256.65204 calls/sec
json decode : 268.80056 calls/sec
=== Array with 256 doubles: ===
ujson encode : 4897.04916 calls/sec
cjson encode : 2958.07754 calls/sec
simplejson encode : 2380.54884 calls/sec
json encode : 669.33083 calls/sec
ujson decode : 13598.68627 calls/sec
simplejson decode : 9780.91773 calls/sec
cjson decode : 9104.09322 calls/sec
json decode : 230.48164 calls/sec
=== Array with 256 True values: ===
ujson encode : 57819.85059 calls/sec
cjson encode : 48350.19512 calls/sec
simplejson encode : 28729.47522 calls/sec
json encode : 2958.28985 calls/sec
ujson decode : 61197.12391 calls/sec
cjson decode : 49303.00200 calls/sec
simplejson decode : 45849.34956 calls/sec
json decode : 376.03898 calls/sec
=== Array with 256 dict{string, int} pairs: ===
ujson encode : 7366.34237 calls/sec
simplejson encode : 3282.14271 calls/sec
cjson encode : 3118.83259 calls/sec
json encode : 353.10573 calls/sec
ujson decode : 7544.41511 calls/sec
cjson decode : 6841.00115 calls/sec
simplejson decode : 5633.02924 calls/sec
json decode : 108.21653 calls/sec
=== Dict with 256 arrays with 256 dict{string, int} pairs: ===
ujson encode : 26.00639 calls/sec
cjson encode : 11.80949 calls/sec
simplejson encode : 9.72888 calls/sec
json encode : 1.31726 calls/sec
ujson decode : 19.07842 calls/sec
cjson decode : 17.14387 calls/sec
simplejson decode : 13.42794 calls/sec
json decode : 0.41477 calls/sec/1 · Reply -
Python 2.7.2 (default, Oct 16 2011, 18:17:22) [GCC 4.5.3]
Gentoo Linux li195-127 3.0.4-linode38 #1 SMP Thu Sep 22 14:59:08 EDT 2011
i686 Intel(R) Xeon(R) CPU L5520 @ 2.27GHz GenuineIntel GNU/Linux
ujson: 1.9
simplejson: 2.2.1
cjson: 1.0.5
json: default
Ready? Configure affinity and priority, starting in 20...
=== Array with 256 utf-8 strings: ===
json encode : 670.19953 calls/sec
ujson encode : 549.53825 calls/sec
simplejson encode : 275.95053 calls/sec
cjson encode : 50.97958 calls/sec
ujson decode : 427.20876 calls/sec
cjson decode : 301.28658 calls/sec
json decode : 134.25594 calls/sec
simplejson decode : 118.82564 calls/sec
=== Medium complex object: ===
ujson encode : 4255.61205 calls/sec
simplejson encode : 1508.21696 calls/sec
cjson encode : 1500.85604 calls/sec
json encode : 1421.25442 calls/sec
ujson decode : 2929.94447 calls/sec
simplejson decode : 2700.26826 calls/sec
cjson decode : 2597.13825 calls/sec
json decode : 1104.15834 calls/sec
=== Array with 256 strings: ===
json encode : 10030.60380 calls/sec
ujson encode : 8491.53732 calls/sec
simplejson encode : 5764.64842 calls/sec
cjson encode : 4892.17867 calls/sec
ujson decode : 9072.36100 calls/sec
cjson decode : 8169.18691 calls/sec
simplejson decode : 7838.82129 calls/sec
json decode : 4447.18188 calls/sec
=== Array with 256 doubles: ===
ujson encode : 9990.80074 calls/sec
cjson encode : 5317.02458 calls/sec
simplejson encode : 1088.30317 calls/sec
json encode : 1075.10894 calls/sec
ujson decode : 13955.33087 calls/sec
json decode : 3595.59994 calls/sec
simplejson decode : 3364.57574 calls/sec
cjson decode : 3027.93563 calls/sec
=== Array with 256 True values: ===
ujson encode : 38694.83318 calls/sec
cjson encode : 22636.52956 calls/sec
json encode : 18600.01444 calls/sec
simplejson encode : 15895.58818 calls/sec
json decode : 49192.84543 calls/sec
ujson decode : 39683.32842 calls/sec
cjson decode : 33561.25702 calls/sec
simplejson decode : 33159.64127 calls/sec
=== Array with 256 dict{string, int} pairs: ===
ujson encode : 6571.65768 calls/sec
json encode : 2720.01505 calls/sec
simplejson encode : 2091.39231 calls/sec
cjson encode : 1818.49524 calls/sec
ujson decode : 5679.88157 calls/sec
cjson decode : 4279.95357 calls/sec
simplejson decode : 3961.38711 calls/sec
json decode : 1194.12116 calls/sec
=== Dict with 256 arrays with 256 dict{string, int} pairs: ===
ujson encode : 17.33478 calls/sec
json encode : 9.31697 calls/sec
cjson encode : 7.01565 calls/sec
simplejson encode : 6.21420 calls/sec
ujson decode : 18.35424 calls/sec
cjson decode : 16.94902 calls/sec
simplejson decode : 12.49209 calls/sec
json decode : 4.52451 calls/sec/3 · Reply -
@Yurtaev, извини за спам, спать пора, косячу(: попытка номер 3 ( /2 и /6 не удались):
Python 2.7.2 (default, Nov 28 2011, 22:57:22) [GCC 4.5.3]
Gentoo Linux 3.0.4-hardened-r4 #1 SMP Wed Nov 2 12:43:47 MSK 2011
x86_64 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux
ujson: 1.9
simplejson: 2.2.1
cjson: 1.0.5
json: default
Ready? Configure affinity and priority, starting in 20...
=== Array with 256 utf-8 strings: ===
json encode : 1200.59831 calls/sec
ujson encode : 864.16306 calls/sec
simplejson encode : 685.94422 calls/sec
cjson encode : 113.75893 calls/sec
ujson decode : 749.08358 calls/sec
cjson decode : 505.39218 calls/sec
json decode : 263.17836 calls/sec
simplejson decode : 205.92516 calls/sec
=== Medium complex object: ===
ujson encode : 5882.02858 calls/sec
json encode : 3056.15470 calls/sec
cjson encode : 2743.71934 calls/sec
simplejson encode : 2739.46184 calls/sec
ujson decode : 5163.18241 calls/sec
cjson decode : 4703.37259 calls/sec
simplejson decode : 4189.28105 calls/sec
json decode : 1953.35008 calls/sec
=== Array with 256 strings: ===
json encode : 17706.23376 calls/sec
ujson encode : 11959.42075 calls/sec
simplejson encode : 9448.32239 calls/sec
cjson encode : 7433.56182 calls/sec
cjson decode : 13001.26408 calls/sec
ujson decode : 12245.28143 calls/sec
simplejson decode : 11156.51774 calls/sec
json decode : 7447.28595 calls/sec
=== Array with 256 doubles: ===
cjson encode : 8142.16107 calls/sec
ujson encode : 4994.02939 calls/sec
json encode : 2170.01974 calls/sec
simplejson encode : 2156.11152 calls/sec
ujson decode : 14163.70626 calls/sec
json decode : 8151.58755 calls/sec
simplejson decode : 7175.34106 calls/sec
cjson decode : 6621.89450 calls/sec
=== Array with 256 True values: ===
ujson encode : 62564.36846 calls/sec
cjson encode : 46447.29423 calls/sec
json encode : 38223.67046 calls/sec
simplejson encode : 29209.42896 calls/sec
ujson decode : 66012.52794 calls/sec
json decode : 65246.89509 calls/sec
cjson decode : 51920.26695 calls/sec
simplejson decode : 51536.66173 calls/sec
=== Array with 256 dict{string, int} pairs: ===
ujson encode : 7597.60604 calls/sec
json encode : 5719.59385 calls/sec
simplejson encode : 3762.37709 calls/sec
cjson encode : 3615.33924 calls/sec
ujson decode : 8157.94060 calls/sec
cjson decode : 7201.49857 calls/sec
simplejson decode : 5928.24433 calls/sec
json decode : 1937.92134 calls/sec
=== Dict with 256 arrays with 256 dict{string, int} pairs: ===
ujson encode : 27.58141 calls/sec
json encode : 18.55247 calls/sec
simplejson encode : 11.20949 calls/sec
cjson encode : 13.55605 calls/sec
ujson decode : 20.73253 calls/sec
cjson decode : 17.82937 calls/sec
simplejson decode : 13.86789 calls/sec
json decode : 6.56444 calls/sec/7 · Reply