Skip to content

Latest commit

 

History

History
373 lines (272 loc) · 42.1 KB

File metadata and controls

373 lines (272 loc) · 42.1 KB

Json-Performance

Performance profiling of JSON libraries (Compiled and run on Windows 10.0.26100 using the MSVC 19.44.35221.0 compiler).

Latest Results: (Dec 12, 2025)

Using the following commits:


| Jsonifier: 28dfa9b
| Glaze: d8a8fb9
| Simdjson: ae32422

1400 iterations on a (AMD EPYC 7763 64-Core Processor), where the most stable 20 subsequent iterations are sampled.

Note:

These benchmarks were executed using the CPU benchmark library benchmarksuite.


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 46.8074 4.68521 5.21633e+07 899 18335 8.33251 10.356 2.93604e+08 905 103750
glaze 30.1021 23.9115 8.5556e+07 917 30795 20.3449 64.2571 1.69152e+08 893 59100
simdjson 15.0908 11.3045 1.63112e+08 890 56710

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 125.193 4.28406 1.95058e+07 4238 32310 152.592 10.9397 1.60724e+07 4273 26815
simdjson 100.931 6.5436 2.4219e+07 4247 40175
jsonifier 76.8211 3.47888 3.17987e+07 4239 52640 80.7734 4.48614 3.02482e+07 4222 49895

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 106.804 6.94309 2.2883e+07 1937 17330 80.5407 18.0863 3.03907e+07 1938 23010
glaze 103.278 2.39014 2.36134e+07 1936 17890 120.884 23.0903 2.0623e+07 1939 15645
simdjson 44.0838 1.73635 5.53688e+07 1940 41990

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 103.695 7.21191 2.35893e+07 1937 17875 99.8116 21.153 2.47625e+07 1937 18785
jsonifier 99.9756 4.56011 2.44268e+07 1939 18520 98.0973 15.5126 2.50638e+07 1938 18990
simdjson 59.8869 5.8161 4.08478e+07 1939 30935

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 64.4497 5.29804 3.77371e+07 449 6655 85.2448 2.60311 2.85276e+07 450 5040
glaze 26.5571 3.45053 9.20067e+07 449 16150 31.5784 22.7834 7.84119e+07 450 13840
simdjson 16.5989 2.35016 1.47309e+08 449 25830

Json Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 715.361 13.9716 3.42564e+06 49369 66020 583.792 2.66701 4.18421e+06 49948 81600
glaze 413.061 21.4616 5.93802e+06 48418 112210 530.394 5.67426 4.6051e+06 49341 88655
simdjson 363.572 12.2294 6.79501e+06 50138 132940

Json Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 556.5 5.64008 4.39456e+06 34992 60005 472.797 19.2107 5.31577e+06 35071 72750
jsonifier 364.309 6.07779 6.71097e+06 33854 88655 946.28 2.92299 2.5818e+06 35771 36055
simdjson 274.301 11.9034 9.0068e+06 33993 119480

Partial Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
simdjson 314.641 24.462 7.87894e+06 986 3065
jsonifier 118.717 12.1375 2.01295e+07 1006 7940 780.228 21.1906 3.1541e+06 1203 1520

Partial Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
simdjson 396.666 19.8192 5.97482e+06 660 1575
jsonifier 104.18 11.6799 2.30542e+07 690 6240 652.865 26.0859 3.53152e+06 706 1045

Abc (Out of Order) Test (Prettified) Results (View the data used in the following test):


The JSON documents in the previous tests featured keys ranging from "a" to "z", where each key corresponds to an array of values. Notably, the documents in this test arrange these keys in reverse order, deviating from the typical "a" to "z" arrangement.

This test effectively demonstrates the challenges encountered when utilizing simdjson and iterative parsers that lack the ability to efficiently allocate memory locations throughhashing. In cases where the keys are not in the expected sequence, performance is significantly compromised, with the severity escalating as the document size increases.

In contrast, hash-based solutions offer a viable alternative by circumventing these issues and maintaining optimal performance regardless of the JSON document's scale, or ordering of the keys being parsed.

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 757.21 6.6443 3.23056e+06 50417 63565 765.821 2.91409 3.19325e+06 48031 59840
glaze 686.597 8.07675 3.55846e+06 50129 69620 542.488 6.01707 4.50307e+06 50547 88805
simdjson 538.176 15.0196 4.61284e+06 50061 90100

Abc (Out of Order) Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 542.701 6.11022 4.50664e+06 34730 61080 702.667 2.85302 3.47681e+06 36274 49240
glaze 507.972 6.07688 4.81103e+06 34019 63880 492.003 21.9665 5.09658e+06 33065 65760
simdjson 271.157 11.3104 9.07909e+06 33129 117380

Discord Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 837.642 12.5126 2.92344e+06 92442 105465 950.91 3.62705 2.57735e+06 92442 92970
glaze 743.753 11.4762 3.30033e+06 92442 119040 611.236 5.73104 4.01165e+06 92442 144680
simdjson 490.908 9.48359 4.9848e+06 92442 179780

Discord Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 553.204 9.12042 4.42547e+06 55353 95600 630.84 2.58428 3.87624e+06 55353 83710
jsonifier 548.781 9.84746 4.45794e+06 55353 96295 838.351 2.67796 2.91626e+06 55353 63000
simdjson 198.812 7.6126 1.23107e+07 55353 265880

Canada Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 576.549 1.23058 4.24134e+06 6661897 1.10205e+07 1044.43 1.2317 2.34143e+06 6661897 6.0835e+06
glaze 514.273 1.29825 4.75498e+06 6661897 1.23548e+07 571.225 3.74049 4.28253e+06 6661897 1.11275e+07
simdjson 450.34 1.9996 5.43058e+06 6661897 1.41095e+07

Canada Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 209.972 1.72929 1.16463e+07 2090234 9.49492e+06 451.254 1.28332 5.41934e+06 2090234 4.41802e+06
glaze 202.293 1.67517 1.20884e+07 2090234 9.85472e+06 358.491 1.33902 6.8213e+06 2090234 5.56094e+06
simdjson 144.482 1.13187 1.69245e+07 2090234 1.37975e+07

CitmCatalog Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 957.893 2.50193 2.55367e+06 1439562 1.43386e+06 1415.21 2.2488 1.72821e+06 1439562 970350
glaze 809.485 8.13017 3.0293e+06 1439584 1.70088e+06 588.53 2.57883 4.15578e+06 1439584 2.33362e+06
simdjson 630.104 1.70788 3.8811e+06 1423415 2.1546e+06

CitmCatalog Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 511.374 4.2172 4.78495e+06 500299 933680 360.742 2.36127 6.78046e+06 500299 1.32306e+06
jsonifier 455.745 4.67939 5.37007e+06 500299 1.04791e+06 895.248 5 2.73277e+06 500299 533360
simdjson 237.73 1.35952 1.02869e+07 492910 1.97755e+06

Twitter Partial Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
simdjson 1016.42 6.68973 2.40636e+06 44653 41940
jsonifier 307.52 7.86646 7.95799e+06 44653 138640 2057.39 4.17489 1.18745e+06 44653 20715

Twitter Partial Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
simdjson 878.766 5.24827 2.78298e+06 37543 40780
jsonifier 299.049 12.0957 8.18298e+06 37543 119860 2086.05 4.11472 1.17071e+06 37543 17185

Twitter Test (Prettified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 777.179 6.81507 3.15594e+06 414021 509715 809.641 4.73249 3.02263e+06 414021 488215
glaze 588.436 5.85078 4.16139e+06 414021 672040 384.12 3.01801 6.36795e+06 414021 1.02833e+06
simdjson 570.935 4.02356 4.28539e+06 418582 699700

Twitter Test (Minified) Results (View the data used in the following test):


Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns) Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
jsonifier 530.621 7.23465 4.61582e+06 277014 498795 800.623 4.16222 3.05656e+06 277014 330400
glaze 522.064 5.27284 4.68827e+06 277014 506610 354.381 4.43891 6.90615e+06 277014 746215
simdjson 383.907 4.22396 6.37457e+06 278407 692245

Library Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 713.601 2.38028 3.42673e+06 466906 624180
simdjson 348.042 2.33778 7.02733e+06 466906 1.27974e+06
jsonifier 147.929 1.02033 1.65301e+07 466906 3.01016e+06

Library Write (MB/S) Write Percentage Deviation (+/-%) Write (Cycles/MB) Write Length (Bytes) Write Time (ns)
glaze 870.995 1.95925 2.80773e+06 699405 765975
jsonifier 798.727 1.63909 3.06143e+06 699405 835210

Library Read (MB/S) Read Percentage Deviation (+/-%) Read (Cycles/MB) Read Length (Bytes) Read Time (ns)
glaze 1971.85 3.15183 1.2405e+06 646997 313045
jsonifier 298.299 0.424898 8.19768e+06 646997 2.06849e+06