mirror of
https://github.com/nlohmann/json.git
synced 2026-11-04 11:49:22 +00:00
docs: re-measure the 3.13.0 post and apply the review
Measure everything again against develop with the open pull requests of 11-03 (suite, timeline, comparison on the Mac and on x86-64, compile times, stream gap), add the suite on an Intel MacBook Pro as a check, mark the ways that keep number text as "N" in the use-case charts, move the loop-shape box to theme 5, and apply the style and wording fixes of the review. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
27 files changed
+13759
-13610
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -1,183 +1,183 @@
|
||||
benchmark,unit,3.12.0,3.13.0,speedup
|
||||
Accept/canada,ns,1.26911e+07,2.31896e+06,5.473
|
||||
Accept/citm_catalog,ns,6.38348e+06,907300,7.036
|
||||
Accept/floats,ns,1.13021e+08,2.2302e+07,5.068
|
||||
Accept/jeopardy,ns,2.18859e+08,5.74875e+07,3.807
|
||||
Accept/signed_ints,ns,1.15082e+08,2.76628e+07,4.160
|
||||
Accept/small_signed_ints,ns,5.58745e+07,1.76566e+07,3.165
|
||||
Accept/twitter,ns,2.45895e+06,474623,5.181
|
||||
Accept/unsigned_ints,ns,1.13737e+08,2.91215e+07,3.906
|
||||
BinaryToCbor/1024,ns,303.306,101.854,2.978
|
||||
BinaryToCbor/128,ns,247.228,115.274,2.145
|
||||
BinaryToCbor/16,ns,239.518,48.6796,4.920
|
||||
BinaryToCbor/16384,ns,949.458,408.254,2.326
|
||||
BinaryToCbor/2048,ns,320.309,119.299,2.685
|
||||
BinaryToCbor/256,ns,265.095,88.0809,3.010
|
||||
BinaryToCbor/32,ns,249.054,48.4924,5.136
|
||||
BinaryToCbor/32768,ns,1533.16,801.01,1.914
|
||||
BinaryToCbor/4096,ns,412.14,169.413,2.433
|
||||
BinaryToCbor/512,ns,289.358,97.2851,2.974
|
||||
BinaryToCbor/64,ns,249.278,83.8812,2.972
|
||||
BinaryToCbor/8,ns,242.904,48.4594,5.013
|
||||
BinaryToCbor/8192,ns,511.492,247.585,2.066
|
||||
Copy/canada,ns,3.65404e+06,2.86994e+06,1.273
|
||||
Copy/citm_catalog,ns,1.62077e+06,1.45859e+06,1.111
|
||||
Copy/twitter,ns,799004,725731,1.101
|
||||
CopyAssign/canada,ns,3.66694e+06,2.88365e+06,1.272
|
||||
CopyAssign/citm_catalog,ns,1.65324e+06,1.49021e+06,1.109
|
||||
CopyAssign/twitter,ns,807988,738979,1.093
|
||||
CopyOnly/canada,ns,1.51887e+06,1.50295e+06,1.011
|
||||
CopyOnly/citm_catalog,ns,743278,781882,0.951
|
||||
CopyOnly/twitter,ns,400238,403229,0.993
|
||||
CopyRing/canada,ns,3.68209e+06,2.88747e+06,1.275
|
||||
CopyRing/citm_catalog,ns,1.68855e+06,1.51116e+06,1.117
|
||||
CopyRing/twitter,ns,849612,769730,1.104
|
||||
DestroyOnly/canada,ns,2.12854e+06,1.37108e+06,1.552
|
||||
DestroyOnly/citm_catalog,ns,875707,674090,1.299
|
||||
DestroyOnly/twitter,ns,401328,322604,1.244
|
||||
Diff/canada,ns,3.81123e+07,3.68674e+06,10.338
|
||||
Diff/citm_catalog,ns,6.77551e+06,1.06847e+06,6.341
|
||||
Diff/twitter,ns,4.82656e+06,639150,7.552
|
||||
Dump/canada / -,ns,6.6893e+06,2.28575e+06,2.927
|
||||
Dump/canada / 4,ns,8.91301e+06,3.0094e+06,2.962
|
||||
Dump/citm_catalog / -,ns,1.38998e+06,291064,4.776
|
||||
Dump/citm_catalog / 4,ns,1.92209e+06,414843,4.633
|
||||
Dump/floats / -,ns,6.31567e+07,2.35913e+07,2.677
|
||||
Dump/floats / 4,ns,7.1106e+07,2.44198e+07,2.912
|
||||
Dump/jeopardy / -,ns,2.03467e+08,3.07362e+07,6.620
|
||||
Dump/jeopardy / 4,ns,2.18712e+08,3.4619e+07,6.318
|
||||
Dump/signed_ints / -,ns,2.37468e+07,1.06034e+07,2.240
|
||||
Dump/signed_ints / 4,ns,3.1988e+07,1.12253e+07,2.850
|
||||
Dump/small_signed_ints / -,ns,1.7782e+07,7.91902e+06,2.245
|
||||
Dump/small_signed_ints / 4,ns,2.4964e+07,8.76268e+06,2.849
|
||||
Dump/twitter / -,ns,1.39069e+06,208747,6.662
|
||||
Dump/twitter / 4,ns,1.58219e+06,246027,6.431
|
||||
Dump/unsigned_ints / -,ns,2.36168e+07,7.99718e+06,2.953
|
||||
Dump/unsigned_ints / 4,ns,3.19304e+07,8.41574e+06,3.794
|
||||
Equal/canada,ns,454099,336428,1.350
|
||||
Equal/citm_catalog,ns,265088,254849,1.040
|
||||
Equal/twitter,ns,140412,127744,1.099
|
||||
Flatten/canada,ns,2.8443e+07,1.1054e+07,2.573
|
||||
Flatten/citm_catalog,ns,6.37309e+06,3.00071e+06,2.124
|
||||
Flatten/twitter,ns,3.47895e+06,2.04063e+06,1.705
|
||||
FlattenOrdered/citm_catalog,ns,2.51402e+08,1.38824e+06,181.094
|
||||
FlattenOrdered/twitter,ns,4.89453e+07,860119,56.905
|
||||
FromBinaryBuffer/bjdata / canada,ns,8.21979e+06,4.07412e+06,2.018
|
||||
FromBinaryBuffer/bjdata / twitter,ns,3.11089e+06,957789,3.248
|
||||
FromBinaryBuffer/bjdata_optimized / canada,ns,8.68489e+06,2.39853e+06,3.621
|
||||
FromBinaryBuffer/bjdata_optimized / twitter,ns,3.11963e+06,952143,3.276
|
||||
FromBinaryBuffer/bson / canada,ns,9.42574e+06,4.20336e+06,2.242
|
||||
FromBinaryBuffer/bson / citm_catalog,ns,3.86254e+06,1.56165e+06,2.473
|
||||
FromBinaryBuffer/bson / twitter,ns,3.0653e+06,923900,3.318
|
||||
FromBinaryBuffer/cbor / canada,ns,8.3425e+06,2.06207e+06,4.046
|
||||
FromBinaryBuffer/cbor / citm_catalog,ns,3.68456e+06,1.43886e+06,2.561
|
||||
FromBinaryBuffer/cbor / floats,ns,2.89541e+07,5.43061e+06,5.332
|
||||
FromBinaryBuffer/cbor / jeopardy,ns,3.5724e+08,1.12871e+08,3.165
|
||||
FromBinaryBuffer/cbor / signed_ints,ns,3.56166e+07,9.68737e+06,3.677
|
||||
FromBinaryBuffer/cbor / twitter,ns,3.03558e+06,953772,3.183
|
||||
FromBinaryBuffer/msgpack / canada,ns,8.3272e+06,2.06449e+06,4.034
|
||||
FromBinaryBuffer/msgpack / citm_catalog,ns,3.68401e+06,1.41095e+06,2.611
|
||||
FromBinaryBuffer/msgpack / jeopardy,ns,3.54505e+08,1.09031e+08,3.251
|
||||
FromBinaryBuffer/msgpack / twitter,ns,3.02687e+06,934627,3.239
|
||||
FromBinaryBuffer/ubjson / canada,ns,8.23819e+06,4.08039e+06,2.019
|
||||
FromBinaryBuffer/ubjson / citm_catalog,ns,3.81107e+06,1.72436e+06,2.210
|
||||
FromBinaryBuffer/ubjson / jeopardy,ns,3.64419e+08,1.13389e+08,3.214
|
||||
FromBinaryBuffer/ubjson / twitter,ns,3.1103e+06,957344,3.249
|
||||
FromBinaryBuffer/ubjson_optimized / canada,ns,8.48001e+06,2.36934e+06,3.579
|
||||
FromBinaryBuffer/ubjson_optimized / twitter,ns,3.10764e+06,952334,3.263
|
||||
FromBinaryFile/bjdata / twitter,ns,1.03821e+07,1.90031e+06,5.463
|
||||
FromBinaryFile/bson / twitter,ns,1.01272e+07,1.80218e+06,5.619
|
||||
FromBinaryFile/cbor / canada,ns,1.41591e+07,4.41088e+06,3.210
|
||||
FromBinaryFile/cbor / twitter,ns,9.81686e+06,1.53188e+06,6.408
|
||||
FromBinaryFile/ubjson / canada,ns,1.36558e+07,6.313e+06,2.163
|
||||
FromBinaryFile/ubjson / twitter,ns,1.03653e+07,1.90283e+06,5.447
|
||||
FromBinaryShape/containers / bjdata,ns,1.41661e+07,7.16958e+06,1.976
|
||||
FromBinaryShape/containers / bson,ns,1.69957e+07,7.73162e+06,2.198
|
||||
FromBinaryShape/containers / cbor,ns,1.37448e+07,3.88944e+06,3.534
|
||||
FromBinaryShape/containers / msgpack,ns,1.36707e+07,3.84073e+06,3.559
|
||||
FromBinaryShape/containers / ubjson,ns,1.41846e+07,7.17314e+06,1.977
|
||||
FromBinaryShape/containers / ubjson_optimized,ns,1.47508e+07,4.4236e+06,3.335
|
||||
FromBinaryShape/nested / bjdata,ns,93440.7,37989.3,2.460
|
||||
FromBinaryShape/nested / bson,ns,99835.8,42028.7,2.375
|
||||
FromBinaryShape/nested / cbor,ns,92913.6,35141.4,2.644
|
||||
FromBinaryShape/nested / msgpack,ns,90678.9,34607.5,2.620
|
||||
FromBinaryShape/nested / ubjson,ns,93863.6,38056.3,2.466
|
||||
FromBinaryShape/scalars / bjdata,ns,2.44312e+07,1.13593e+07,2.151
|
||||
FromBinaryShape/scalars / cbor,ns,2.54479e+07,5.6307e+06,4.519
|
||||
FromBinaryShape/scalars / msgpack,ns,2.42975e+07,5.5278e+06,4.396
|
||||
FromBinaryShape/scalars / ubjson,ns,2.46773e+07,1.14308e+07,2.159
|
||||
FromCborChunkedString/10000 chunks,ns,89835.8,81350.8,1.104
|
||||
FromMsgpack/canada,ns,1.41497e+07,4.42303e+06,3.199
|
||||
FromMsgpack/citm_catalog,ns,8.88096e+06,2.25194e+06,3.944
|
||||
FromMsgpack/floats,ns,5.92552e+07,2.76614e+07,2.142
|
||||
FromMsgpack/jeopardy,ns,1.13309e+09,1.82341e+08,6.214
|
||||
FromMsgpack/signed_ints,ns,6.22313e+07,3.28285e+07,1.896
|
||||
FromMsgpack/small_signed_ints,ns,6.26259e+07,3.37353e+07,1.856
|
||||
FromMsgpack/twitter,ns,9.78102e+06,1.47267e+06,6.642
|
||||
FromMsgpack/unsigned_ints,ns,5.55099e+07,2.76571e+07,2.007
|
||||
"GetArray<std::array<int, 1000>>",ns,2231.77,639.734,3.489
|
||||
GetArray<std::deque<int>>,ns,8132.06,1161.87,6.999
|
||||
GetArray<std::set<int>>,ns,58400.5,41782.2,1.398
|
||||
GetArray<std::vector<int>>,ns,6658.53,666.403,9.992
|
||||
GetMap/citm_catalog,ns,3.41376e+06,2.3993e+06,1.423
|
||||
GetVectorDouble/floats,ns,6.68224e+06,642457,10.401
|
||||
GetVectorInt/signed_ints,ns,8.0387e+06,3.34843e+06,2.401
|
||||
Iterate/canada,ns,868241,320718,2.707
|
||||
Iterate/citm_catalog,ns,298022,167702,1.777
|
||||
Iterate/twitter,ns,87014.5,62127.2,1.401
|
||||
JsonPointerAt/citm_catalog,ns,1.82891e+06,1.14298e+06,1.600
|
||||
JsonPointerAt/twitter,ns,787985,594251,1.326
|
||||
JsonPointerContains/citm_catalog,ns,2.71277e+06,1.23364e+06,2.199
|
||||
JsonPointerContains/twitter,ns,1.29352e+06,608656,2.125
|
||||
JsonPointerParse/citm_catalog,ns,5.67308e+06,2.17151e+06,2.613
|
||||
JsonPointerParse/twitter,ns,2.41421e+06,1.00071e+06,2.413
|
||||
JsonPointerToString/citm_catalog,ns,6.62468e+06,1.87578e+06,3.532
|
||||
JsonPointerToString/twitter,ns,2.1792e+06,806356,2.703
|
||||
ParseFILE/canada,ns,5.23333e+07,1.38865e+07,3.769
|
||||
ParseFILE/citm_catalog,ns,3.4642e+07,7.34915e+06,4.714
|
||||
ParseFILE/twitter,ns,1.35777e+07,3.3065e+06,4.106
|
||||
ParseFile/canada,ns,1.74258e+07,6.136e+06,2.840
|
||||
ParseFile/citm_catalog,ns,7.66744e+06,2.424e+06,3.163
|
||||
ParseFile/floats,ns,1.275e+08,4.72331e+07,2.699
|
||||
ParseFile/jeopardy,ns,3.27525e+08,1.54786e+08,2.116
|
||||
ParseFile/signed_ints,ns,1.2488e+08,4.54429e+07,2.748
|
||||
ParseFile/small_signed_ints,ns,6.29991e+07,3.26251e+07,1.931
|
||||
ParseFile/twitter,ns,3.32202e+06,1.35873e+06,2.445
|
||||
ParseFile/unsigned_ints,ns,1.20673e+08,4.65984e+07,2.590
|
||||
ParseIndented/canada / 4,ns,3.39369e+07,5.15262e+06,6.586
|
||||
ParseIndented/citm_catalog / 4,ns,7.23096e+06,1.78365e+06,4.054
|
||||
ParseIndented/jeopardy / 4,ns,3.35238e+08,1.31409e+08,2.551
|
||||
ParseIndented/twitter / 4,ns,3.59342e+06,1.1224e+06,3.202
|
||||
ParseStreamValues/ndjson,ns,7.01242e+06,3.71441e+06,1.888
|
||||
ParseStreamValues/numbers,ns,1.89341e+06,380502,4.976
|
||||
ParseString/canada,ns,1.50855e+07,4.42155e+06,3.412
|
||||
ParseString/citm_catalog,ns,7.3013e+06,1.77547e+06,4.112
|
||||
ParseString/floats,ns,1.18738e+08,2.7604e+07,4.301
|
||||
ParseString/jeopardy,ns,3.03339e+08,1.28463e+08,2.361
|
||||
ParseString/signed_ints,ns,1.20073e+08,3.12419e+07,3.843
|
||||
ParseString/small_signed_ints,ns,6.0595e+07,2.40917e+07,2.515
|
||||
ParseString/twitter,ns,3.17558e+06,1.05133e+06,3.021
|
||||
ParseString/unsigned_ints,ns,1.18614e+08,3.21863e+07,3.685
|
||||
ParseStringOrdered/canada,ns,1.50775e+07,4.37102e+06,3.449
|
||||
ParseStringOrdered/citm_catalog,ns,1.08507e+07,1.61676e+06,6.711
|
||||
ParseStringOrdered/jeopardy,ns,3.60997e+08,1.09757e+08,3.289
|
||||
ParseStringOrdered/twitter,ns,4.35833e+06,906250,4.809
|
||||
Patch/canada,ns,9.97854e+06,3.36623e+06,2.964
|
||||
Patch/citm_catalog,ns,2.52632e+06,1.61385e+06,1.565
|
||||
Patch/twitter,ns,1.45777e+06,850736,1.714
|
||||
SaxParse/canada,ns,1.27867e+07,3.22211e+06,3.968
|
||||
SaxParse/citm_catalog,ns,6.40874e+06,983039,6.519
|
||||
SaxParse/twitter,ns,2.47756e+06,477699,5.186
|
||||
ToCbor/canada,ns,1.37097e+06,545183,2.515
|
||||
ToCbor/citm_catalog,ns,1.02285e+06,256578,3.986
|
||||
ToCbor/floats,ns,8.91388e+06,1.89274e+06,4.710
|
||||
ToCbor/jeopardy,ns,7.19583e+07,2.13225e+07,3.375
|
||||
ToCbor/signed_ints,ns,1.13095e+07,2.75682e+06,4.102
|
||||
ToCbor/small_signed_ints,ns,1.0181e+07,2.39796e+06,4.246
|
||||
ToCbor/twitter,ns,633945,141532,4.479
|
||||
ToCbor/unsigned_ints,ns,7.99728e+06,2.79118e+06,2.865
|
||||
ToJsonStrings/copy,ns,5.82015e+06,5.54332e+06,1.050
|
||||
ToJsonStrings/move,ns,5.81645e+06,3.0241e+06,1.923
|
||||
Unflatten/canada,ns,4.1091e+07,1.08224e+07,3.797
|
||||
Unflatten/citm_catalog,ns,9.69933e+06,3.46205e+06,2.802
|
||||
Unflatten/twitter,ns,4.51774e+06,2.10929e+06,2.142
|
||||
Accept/canada,ns,1.29488e+07,2.3494e+06,5.512
|
||||
Accept/citm_catalog,ns,6.53091e+06,923408,7.073
|
||||
Accept/floats,ns,1.15702e+08,2.26771e+07,5.102
|
||||
Accept/jeopardy,ns,2.20758e+08,5.92935e+07,3.723
|
||||
Accept/signed_ints,ns,1.17358e+08,2.82947e+07,4.148
|
||||
Accept/small_signed_ints,ns,5.75113e+07,1.80352e+07,3.189
|
||||
Accept/twitter,ns,2.51345e+06,483792,5.195
|
||||
Accept/unsigned_ints,ns,1.16297e+08,2.97181e+07,3.913
|
||||
BinaryToCbor/1024,ns,298.444,107.095,2.787
|
||||
BinaryToCbor/128,ns,248.661,116.711,2.131
|
||||
BinaryToCbor/16,ns,244.687,49.6325,4.930
|
||||
BinaryToCbor/16384,ns,952.115,413.62,2.302
|
||||
BinaryToCbor/2048,ns,328.419,125.183,2.624
|
||||
BinaryToCbor/256,ns,264.678,90.8937,2.912
|
||||
BinaryToCbor/32,ns,251.632,50.4059,4.992
|
||||
BinaryToCbor/32768,ns,1541.05,802.721,1.920
|
||||
BinaryToCbor/4096,ns,406.957,177.412,2.294
|
||||
BinaryToCbor/512,ns,289.876,102.063,2.840
|
||||
BinaryToCbor/64,ns,254.928,84.6434,3.012
|
||||
BinaryToCbor/8,ns,247.618,49.3761,5.015
|
||||
BinaryToCbor/8192,ns,514.281,256.456,2.005
|
||||
Copy/canada,ns,3.78116e+06,2.92734e+06,1.292
|
||||
Copy/citm_catalog,ns,1.7026e+06,1.51108e+06,1.127
|
||||
Copy/twitter,ns,840201,767400,1.095
|
||||
CopyAssign/canada,ns,3.86416e+06,2.94449e+06,1.312
|
||||
CopyAssign/citm_catalog,ns,1.76529e+06,1.58608e+06,1.113
|
||||
CopyAssign/twitter,ns,884985,790724,1.119
|
||||
CopyOnly/canada,ns,1.60229e+06,1.57507e+06,1.017
|
||||
CopyOnly/citm_catalog,ns,786244,817481,0.962
|
||||
CopyOnly/twitter,ns,423631,420649,1.007
|
||||
CopyRing/canada,ns,3.86433e+06,2.99657e+06,1.290
|
||||
CopyRing/citm_catalog,ns,1.84434e+06,1.60579e+06,1.149
|
||||
CopyRing/twitter,ns,951510,818035,1.163
|
||||
DestroyOnly/canada,ns,2.22138e+06,1.40157e+06,1.585
|
||||
DestroyOnly/citm_catalog,ns,926244,711471,1.302
|
||||
DestroyOnly/twitter,ns,416055,336082,1.238
|
||||
Diff/canada,ns,3.98055e+07,3.80466e+06,10.462
|
||||
Diff/citm_catalog,ns,7.1859e+06,1.12351e+06,6.396
|
||||
Diff/twitter,ns,5.11261e+06,661062,7.734
|
||||
Dump/canada / -,ns,6.95189e+06,2.33647e+06,2.975
|
||||
Dump/canada / 4,ns,9.09882e+06,3.10291e+06,2.932
|
||||
Dump/citm_catalog / -,ns,1.42117e+06,295678,4.806
|
||||
Dump/citm_catalog / 4,ns,1.98589e+06,422600,4.699
|
||||
Dump/floats / -,ns,6.4332e+07,2.37747e+07,2.706
|
||||
Dump/floats / 4,ns,7.25695e+07,2.46207e+07,2.947
|
||||
Dump/jeopardy / -,ns,2.06771e+08,3.17494e+07,6.513
|
||||
Dump/jeopardy / 4,ns,2.27967e+08,3.53626e+07,6.447
|
||||
Dump/signed_ints / -,ns,2.40551e+07,1.0736e+07,2.241
|
||||
Dump/signed_ints / 4,ns,3.25192e+07,1.1333e+07,2.869
|
||||
Dump/small_signed_ints / -,ns,1.81398e+07,8.12457e+06,2.233
|
||||
Dump/small_signed_ints / 4,ns,2.55296e+07,8.80796e+06,2.898
|
||||
Dump/twitter / -,ns,1.43584e+06,214252,6.702
|
||||
Dump/twitter / 4,ns,1.63183e+06,253042,6.449
|
||||
Dump/unsigned_ints / -,ns,2.39512e+07,8.11916e+06,2.950
|
||||
Dump/unsigned_ints / 4,ns,3.22761e+07,8.58925e+06,3.758
|
||||
Equal/canada,ns,473767,349284,1.356
|
||||
Equal/citm_catalog,ns,279548,263329,1.062
|
||||
Equal/twitter,ns,145555,131450,1.107
|
||||
Flatten/canada,ns,2.94475e+07,1.11184e+07,2.649
|
||||
Flatten/citm_catalog,ns,6.7155e+06,3.07325e+06,2.185
|
||||
Flatten/twitter,ns,3.66077e+06,2.10599e+06,1.738
|
||||
FlattenOrdered/citm_catalog,ns,2.62026e+08,1.42645e+06,183.691
|
||||
FlattenOrdered/twitter,ns,5.1275e+07,890275,57.595
|
||||
FromBinaryBuffer/bjdata / canada,ns,8.81972e+06,4.16727e+06,2.116
|
||||
FromBinaryBuffer/bjdata / twitter,ns,3.32045e+06,976266,3.401
|
||||
FromBinaryBuffer/bjdata_optimized / canada,ns,9.2386e+06,2.47996e+06,3.725
|
||||
FromBinaryBuffer/bjdata_optimized / twitter,ns,3.30526e+06,985625,3.353
|
||||
FromBinaryBuffer/bson / canada,ns,1.00372e+07,4.31554e+06,2.326
|
||||
FromBinaryBuffer/bson / citm_catalog,ns,4.07611e+06,1.60647e+06,2.537
|
||||
FromBinaryBuffer/bson / twitter,ns,3.25635e+06,936933,3.476
|
||||
FromBinaryBuffer/cbor / canada,ns,8.89562e+06,2.11517e+06,4.206
|
||||
FromBinaryBuffer/cbor / citm_catalog,ns,3.94234e+06,1.45242e+06,2.714
|
||||
FromBinaryBuffer/cbor / floats,ns,3.0473e+07,5.47969e+06,5.561
|
||||
FromBinaryBuffer/cbor / jeopardy,ns,3.73185e+08,1.14934e+08,3.247
|
||||
FromBinaryBuffer/cbor / signed_ints,ns,3.66673e+07,9.88892e+06,3.708
|
||||
FromBinaryBuffer/cbor / twitter,ns,3.23196e+06,953415,3.390
|
||||
FromBinaryBuffer/msgpack / canada,ns,8.85983e+06,2.12215e+06,4.175
|
||||
FromBinaryBuffer/msgpack / citm_catalog,ns,3.84901e+06,1.4503e+06,2.654
|
||||
FromBinaryBuffer/msgpack / jeopardy,ns,3.73143e+08,1.11034e+08,3.361
|
||||
FromBinaryBuffer/msgpack / twitter,ns,3.2397e+06,954811,3.393
|
||||
FromBinaryBuffer/ubjson / canada,ns,8.84059e+06,4.20402e+06,2.103
|
||||
FromBinaryBuffer/ubjson / citm_catalog,ns,4.0708e+06,1.78566e+06,2.280
|
||||
FromBinaryBuffer/ubjson / jeopardy,ns,3.79093e+08,1.17024e+08,3.239
|
||||
FromBinaryBuffer/ubjson / twitter,ns,3.29948e+06,981057,3.363
|
||||
FromBinaryBuffer/ubjson_optimized / canada,ns,8.88909e+06,2.42788e+06,3.661
|
||||
FromBinaryBuffer/ubjson_optimized / twitter,ns,3.29784e+06,974810,3.383
|
||||
FromBinaryFile/bjdata / twitter,ns,1.09208e+07,1.94678e+06,5.610
|
||||
FromBinaryFile/bson / twitter,ns,1.07209e+07,1.84971e+06,5.796
|
||||
FromBinaryFile/cbor / canada,ns,1.49218e+07,4.48832e+06,3.325
|
||||
FromBinaryFile/cbor / twitter,ns,1.03718e+07,1.57388e+06,6.590
|
||||
FromBinaryFile/ubjson / canada,ns,1.43414e+07,6.42996e+06,2.230
|
||||
FromBinaryFile/ubjson / twitter,ns,1.09266e+07,1.97275e+06,5.539
|
||||
FromBinaryShape/containers / bjdata,ns,1.46977e+07,7.23447e+06,2.032
|
||||
FromBinaryShape/containers / bson,ns,1.75596e+07,7.88867e+06,2.226
|
||||
FromBinaryShape/containers / cbor,ns,1.46488e+07,4.15792e+06,3.523
|
||||
FromBinaryShape/containers / msgpack,ns,1.45853e+07,3.89266e+06,3.747
|
||||
FromBinaryShape/containers / ubjson,ns,1.49773e+07,7.23987e+06,2.069
|
||||
FromBinaryShape/containers / ubjson_optimized,ns,1.54989e+07,4.55976e+06,3.399
|
||||
FromBinaryShape/nested / bjdata,ns,96825.9,38335.1,2.526
|
||||
FromBinaryShape/nested / bson,ns,101356,42620.2,2.378
|
||||
FromBinaryShape/nested / cbor,ns,94929.8,35845.6,2.648
|
||||
FromBinaryShape/nested / msgpack,ns,92610.2,35078.3,2.640
|
||||
FromBinaryShape/nested / ubjson,ns,96090.6,38285.6,2.510
|
||||
FromBinaryShape/scalars / bjdata,ns,2.52616e+07,1.15856e+07,2.180
|
||||
FromBinaryShape/scalars / cbor,ns,2.62118e+07,5.88743e+06,4.452
|
||||
FromBinaryShape/scalars / msgpack,ns,2.50706e+07,5.65159e+06,4.436
|
||||
FromBinaryShape/scalars / ubjson,ns,2.53402e+07,1.16191e+07,2.181
|
||||
FromCborChunkedString/10000 chunks,ns,91845.9,82875.5,1.108
|
||||
FromMsgpack/canada,ns,1.48853e+07,4.56225e+06,3.263
|
||||
FromMsgpack/citm_catalog,ns,9.3559e+06,2.26246e+06,4.135
|
||||
FromMsgpack/floats,ns,6.12575e+07,2.86709e+07,2.137
|
||||
FromMsgpack/jeopardy,ns,1.16767e+09,1.90153e+08,6.141
|
||||
FromMsgpack/signed_ints,ns,6.38812e+07,3.28867e+07,1.942
|
||||
FromMsgpack/small_signed_ints,ns,6.44688e+07,3.44227e+07,1.873
|
||||
FromMsgpack/twitter,ns,1.02787e+07,1.48541e+06,6.920
|
||||
FromMsgpack/unsigned_ints,ns,5.7784e+07,2.83078e+07,2.041
|
||||
"GetArray<std::array<int, 1000>>",ns,2274.63,654.431,3.476
|
||||
GetArray<std::deque<int>>,ns,8288.3,1175.75,7.049
|
||||
GetArray<std::set<int>>,ns,60017.4,42504.9,1.412
|
||||
GetArray<std::vector<int>>,ns,6785.73,681.915,9.951
|
||||
GetMap/citm_catalog,ns,3.60313e+06,2.48546e+06,1.450
|
||||
GetVectorDouble/floats,ns,6.83612e+06,656162,10.418
|
||||
GetVectorInt/signed_ints,ns,8.22365e+06,3.46495e+06,2.373
|
||||
Iterate/canada,ns,897083,328035,2.735
|
||||
Iterate/citm_catalog,ns,305421,171245,1.784
|
||||
Iterate/twitter,ns,89996.6,61975.8,1.452
|
||||
JsonPointerAt/citm_catalog,ns,1.89898e+06,1.17751e+06,1.613
|
||||
JsonPointerAt/twitter,ns,817946,611519,1.338
|
||||
JsonPointerContains/citm_catalog,ns,2.8177e+06,1.26796e+06,2.222
|
||||
JsonPointerContains/twitter,ns,1.33508e+06,628630,2.124
|
||||
JsonPointerParse/citm_catalog,ns,5.81355e+06,2.24831e+06,2.586
|
||||
JsonPointerParse/twitter,ns,2.47971e+06,1.02159e+06,2.427
|
||||
JsonPointerToString/citm_catalog,ns,6.7858e+06,1.93924e+06,3.499
|
||||
JsonPointerToString/twitter,ns,2.23096e+06,834416,2.674
|
||||
ParseFILE/canada,ns,5.41907e+07,1.46942e+07,3.688
|
||||
ParseFILE/citm_catalog,ns,3.59542e+07,7.58092e+06,4.743
|
||||
ParseFILE/twitter,ns,1.4087e+07,3.44991e+06,4.083
|
||||
ParseFile/canada,ns,1.82792e+07,6.46954e+06,2.825
|
||||
ParseFile/citm_catalog,ns,8.12979e+06,2.52336e+06,3.222
|
||||
ParseFile/floats,ns,1.31229e+08,4.81407e+07,2.726
|
||||
ParseFile/jeopardy,ns,3.38017e+08,1.62098e+08,2.085
|
||||
ParseFile/signed_ints,ns,1.28749e+08,4.62304e+07,2.785
|
||||
ParseFile/small_signed_ints,ns,6.47398e+07,3.34103e+07,1.938
|
||||
ParseFile/twitter,ns,3.43041e+06,1.37495e+06,2.495
|
||||
ParseFile/unsigned_ints,ns,1.24001e+08,4.74365e+07,2.614
|
||||
ParseIndented/canada / 4,ns,3.4977e+07,5.37149e+06,6.512
|
||||
ParseIndented/citm_catalog / 4,ns,7.52423e+06,1.81376e+06,4.148
|
||||
ParseIndented/jeopardy / 4,ns,3.45046e+08,1.33383e+08,2.587
|
||||
ParseIndented/twitter / 4,ns,3.72283e+06,1.12645e+06,3.305
|
||||
ParseStreamValues/ndjson,ns,7.15876e+06,3.76965e+06,1.899
|
||||
ParseStreamValues/numbers,ns,1.92619e+06,383138,5.027
|
||||
ParseString/canada,ns,1.55213e+07,4.62776e+06,3.354
|
||||
ParseString/citm_catalog,ns,7.56417e+06,1.77967e+06,4.250
|
||||
ParseString/floats,ns,1.21779e+08,2.83035e+07,4.303
|
||||
ParseString/jeopardy,ns,3.16817e+08,1.30897e+08,2.420
|
||||
ParseString/signed_ints,ns,1.22931e+08,3.19852e+07,3.843
|
||||
ParseString/small_signed_ints,ns,6.2685e+07,2.49764e+07,2.510
|
||||
ParseString/twitter,ns,3.2961e+06,1.04867e+06,3.143
|
||||
ParseString/unsigned_ints,ns,1.21229e+08,3.29241e+07,3.682
|
||||
ParseStringOrdered/canada,ns,1.5388e+07,4.5275e+06,3.399
|
||||
ParseStringOrdered/citm_catalog,ns,1.15204e+07,1.68115e+06,6.853
|
||||
ParseStringOrdered/jeopardy,ns,3.73533e+08,1.13397e+08,3.294
|
||||
ParseStringOrdered/twitter,ns,4.5979e+06,948606,4.847
|
||||
Patch/canada,ns,1.03684e+07,3.47719e+06,2.982
|
||||
Patch/citm_catalog,ns,2.74522e+06,1.74191e+06,1.576
|
||||
Patch/twitter,ns,1.57928e+06,888657,1.777
|
||||
SaxParse/canada,ns,1.31023e+07,3.26697e+06,4.011
|
||||
SaxParse/citm_catalog,ns,6.54642e+06,966806,6.771
|
||||
SaxParse/twitter,ns,2.53102e+06,483052,5.240
|
||||
ToCbor/canada,ns,1.41339e+06,556912,2.538
|
||||
ToCbor/citm_catalog,ns,1.04743e+06,259178,4.041
|
||||
ToCbor/floats,ns,9.04677e+06,1.90094e+06,4.759
|
||||
ToCbor/jeopardy,ns,7.39339e+07,2.20678e+07,3.350
|
||||
ToCbor/signed_ints,ns,1.15333e+07,2.827e+06,4.080
|
||||
ToCbor/small_signed_ints,ns,1.0394e+07,2.47974e+06,4.192
|
||||
ToCbor/twitter,ns,658566,143397,4.593
|
||||
ToCbor/unsigned_ints,ns,8.17966e+06,2.81588e+06,2.905
|
||||
ToJsonStrings/copy,ns,6.12e+06,5.65303e+06,1.083
|
||||
ToJsonStrings/move,ns,6.13061e+06,3.13303e+06,1.957
|
||||
Unflatten/canada,ns,4.25276e+07,1.10995e+07,3.831
|
||||
Unflatten/citm_catalog,ns,1.01866e+07,3.62185e+06,2.813
|
||||
Unflatten/twitter,ns,4.74536e+06,2.21103e+06,2.146
|
||||
|
@@ -315,4 +315,40 @@ index,commit,date,pr,subject,parse_twitter,parse_citm,parse_canada,parse_citm_co
|
||||
313,21ec9bd801,2026-10-27,5915,json_view: fewer allocations when parsing small documents (#5915),1388.282,2469.118,6066.495,2340.391,1744.901,478.745,214.934,292.970,2309.264,422.842,1323.237,138.541,1454.151,1707.314,178.058,366.514,958.110
|
||||
314,2bb2feeef4,2026-10-27,5942,"Fix the red CI on develop (json_view pointer tokens, bson, from_json tests, Infer, IWYU) (#5942)",1391.981,2468.266,6068.495,2335.707,1751.527,482.908,214.285,291.291,2300.453,417.876,1328.089,138.010,1454.934,1701.845,178.250,367.182,964.917
|
||||
315,78a0687147,2026-10-27,5940,Strong exception guarantee for operator[](json_pointer) (#5940),1379.414,2467.492,6109.136,2335.309,1723.090,480.260,216.197,292.075,2313.798,415.444,1314.530,138.314,1449.629,1698.792,177.628,364.844,965.314
|
||||
316,candidate,,,develop + open pull requests,1372.590,2427.358,6109.560,2302.737,1710.146,479.478,211.001,288.697,2298.316,416.541,1311.621,139.627,1439.814,1711.536,177.113,365.393,979.186
|
||||
316,091c10d4a5,2026-10-28,5936,Fix self-aliasing in json_pointer::operator/= and patch_inplace (#5936),1389.195,2462.409,6052.125,2321.091,1722.944,473.064,214.421,290.952,2279.997,416.589,1315.370,138.531,1437.996,1683.844,176.596,363.105,952.473
|
||||
317,54f6b3ef06,2026-10-28,5945,json_view: source positions in materialize() with JSON_DIAGNOSTIC_POSITIONS (#5945),1417.895,2496.591,6325.787,2377.105,1737.749,478.133,213.209,293.150,2304.971,422.648,1348.357,139.793,1490.556,1735.758,178.445,368.380,990.587
|
||||
318,0115bb47b3,2026-10-30,5965,Name the source and license of adapted code in the file comments (#5965),1378.289,2456.731,6043.011,2330.780,1711.965,470.960,212.371,290.798,2298.443,419.433,1323.072,137.982,1441.316,1690.457,176.197,363.182,977.928
|
||||
319,0b91f9ddd8,2026-10-30,5926,json_view: check_utf8 skips well-formed runs with the parser's string scan (#5926),1400.777,2488.449,6137.021,2359.856,1747.026,473.449,213.226,290.736,2320.524,420.950,1325.039,139.324,1452.907,1703.426,177.699,364.500,988.981
|
||||
320,ea03d601af,2026-10-30,5890,json_view: comparison without temporaries and a faster image float check (#5890),1388.958,2477.531,6127.547,2357.032,1781.238,477.111,216.144,293.938,2340.267,424.058,1337.149,139.387,1459.923,1723.919,,,
|
||||
321,755bb16d7a,2026-10-30,5966,Fix the red CI on develop: remove the duplicate is_editable in basic_json_view (#5966),1411.867,2497.560,6085.938,2326.880,1726.740,480.376,212.294,292.134,2312.521,420.608,1325.345,138.544,1465.640,1744.928,177.785,367.385,992.034
|
||||
322,4fe670b5f4,2026-10-31,5969,json_view: decode chains of unicode escapes in a loop (#5969),1390.866,2466.769,6026.817,2328.995,1736.168,475.935,212.530,291.166,2284.708,418.661,1323.436,137.513,1495.099,1736.832,176.566,365.541,963.794
|
||||
323,9c349b1d7c,2026-10-31,5964,Write integers of 17 to 20 digits eight digits at a time in dump() (#5964),1390.500,2469.332,6079.698,2359.276,1718.121,470.647,209.615,289.143,2300.836,419.976,1331.637,138.488,1450.106,1703.483,176.731,365.394,953.483
|
||||
324,3fd3e0fdaa,2026-11-01,5908,json_view: dump and read canada.json-style floats faster (batched float decisions) (#5908),1366.359,2456.409,6058.422,2329.066,1713.347,470.784,209.895,289.318,2294.111,417.490,1319.403,138.100,1435.053,1698.647,176.006,363.191,954.196
|
||||
325,76001c6b4c,2026-11-01,5968,"BSON reader: find C-string terminators 8 bytes at a time, skip array element names (#5968)",1408.222,2488.159,6124.287,2363.039,1759.751,477.558,216.880,294.011,2317.898,420.892,1345.718,138.602,1460.432,1713.978,179.721,370.205,970.525
|
||||
326,1a018577cc,2026-11-01,5970,json_view: accept() checks the text without writing an index (#5970),1427.279,2506.345,6160.916,2368.009,1765.595,480.552,214.060,293.093,2341.368,419.303,1330.990,138.625,1463.731,1724.021,181.150,373.171,964.666
|
||||
327,162eda2574,2026-11-01,5971,json_view: skip the digits of a fraction 16 bytes at a time (SSE2) (#5971),1404.191,2474.144,6049.006,2363.726,1711.013,471.608,211.613,289.736,2290.230,418.673,1322.822,138.556,1441.219,1697.559,178.814,370.881,956.959
|
||||
328,6c3ab966d3,2026-11-01,5975,CBOR reader: read runs of scalar array elements in one loop (#5975),1385.800,2466.923,6050.480,2325.901,1725.552,474.248,210.034,289.350,2296.399,418.689,1327.626,137.722,1440.577,1698.622,178.627,367.797,953.174
|
||||
329,aecbef3949,2026-11-01,5976,Binary readers: swap the bytes of floats with a single byteswap (#5976),1393.659,2479.298,6092.110,2337.421,1718.218,472.539,211.337,289.638,2307.378,417.589,1324.038,137.341,1447.860,1701.387,179.160,369.448,956.324
|
||||
330,edf8d17601,2026-11-01,5980,MessagePack reader: read runs of scalar array elements in one loop (#5980),1422.081,2486.171,6157.302,2360.678,1733.503,477.472,211.189,289.309,2307.724,419.448,1334.857,138.914,1449.345,1721.126,180.127,369.693,967.370
|
||||
331,fb515ddc34,2026-11-01,5981,UBJSON/BJData readers: read optimized arrays of numbers in one loop (#5981),1387.633,2470.528,6067.657,2345.342,1721.303,476.141,212.198,288.466,2292.649,416.597,1324.486,139.598,1441.019,1705.957,179.190,367.903,959.677
|
||||
332,517444b504,2026-11-01,5978,accept() checks strings without copying them (#5978),1385.026,2453.809,5975.744,2322.357,1711.222,475.186,210.256,288.348,2282.444,415.256,1321.012,138.726,1434.772,1698.120,178.106,365.411,976.135
|
||||
333,9742edc294,2026-11-01,5979,"BSON writer: write to_bson(j) in one pass, with sizes written afterwards (#5979)",1418.816,2514.802,6091.854,2380.269,1772.646,474.067,211.598,290.653,2316.886,421.043,1346.324,139.213,1469.659,1754.493,180.269,372.201,982.753
|
||||
334,f022e3c59c,2026-11-01,5982,Binary readers and writers: faster UTF-8 checks of strings (#5982),1399.836,2474.703,6060.781,2341.409,1707.583,468.692,209.824,290.357,2290.034,418.739,1312.448,138.360,1458.779,1707.575,178.911,369.303,968.200
|
||||
335,ddc34f546a,2026-11-01,5974,json_view: exceptions name the path and the bytes of the value (#5974),1394.263,2489.906,6017.599,2345.632,1728.593,473.672,210.364,289.980,2306.608,420.394,1327.301,138.827,1448.846,1707.037,177.406,368.436,978.755
|
||||
336,b2674a4a2f,2026-11-01,5984,BSON reader: check array element names in place in strict mode (#5984),1392.028,2460.989,5975.355,2357.154,1726.291,472.389,209.872,289.219,2301.092,417.632,1309.441,138.779,1438.270,1709.943,177.580,366.368,973.214
|
||||
337,76dbe8f9c9,2026-11-02,6009,"Fix the red CI on develop: Visual Studio 2017 build of the BSON writer, Valgrind timeouts (#6009)",1387.812,2461.244,5975.843,2323.693,1713.572,469.489,209.863,289.058,2291.892,415.935,1306.729,138.322,1447.714,1694.220,177.698,363.994,972.289
|
||||
338,03d408aafa,2026-11-02,6003,JSON_DIAGNOSTIC_POSITIONS: comparing a value-initialized iterator throws instead of crashing (#6003),1385.014,2455.146,5981.995,2380.493,1732.039,466.575,209.272,289.474,2295.226,416.844,1301.454,138.016,1445.840,1703.494,176.691,365.416,967.929
|
||||
339,66e2eeeec0,2026-11-02,6000,Do not construct the base class when destroying a container (#6000),1403.795,2457.426,6001.495,2323.510,1718.268,471.022,210.474,288.385,2308.462,417.187,1313.263,138.770,1437.867,1705.586,179.168,363.523,966.701
|
||||
340,bdc737db6d,2026-11-02,5999,json_view: dump() without StringType::capacity() (#5999),1378.656,2452.954,6020.464,2339.908,1724.630,470.774,211.638,288.939,2303.773,418.311,1312.024,139.010,1446.709,1704.406,177.291,363.859,966.602
|
||||
341,494a74c242,2026-11-02,5996,"insert(): strong guarantee for single elements, basic guarantee for the rest (#5996)",1390.153,2478.991,6032.084,2342.171,1727.040,469.799,213.660,291.104,2307.193,419.623,1329.285,139.000,1461.294,1718.750,178.995,366.898,974.652
|
||||
342,bfe69c73c2,2026-11-02,5992,"json_view: get<T>() of a boolean throws for the exact number types, as basic_json does (#5992)",1387.497,2452.207,6023.042,2335.261,1720.938,471.966,212.162,288.851,2310.949,417.260,1315.155,137.821,1448.762,1710.153,175.990,366.239,970.052
|
||||
343,ff0bdfdef3,2026-11-02,5990,Keep the byte range in exceptions about the root value (#5990),1386.358,2469.197,6037.812,2344.775,1768.382,479.285,214.375,290.939,2329.486,421.838,1332.654,138.666,1455.905,1720.376,178.637,368.500,972.955
|
||||
344,1d69ef9ab4,2026-11-02,5997,"Raise line coverage to 99.9 %: fix the measurement, remove unreachable code, add tests (#5997)",1404.481,2456.447,6166.942,2338.226,1749.981,478.338,211.609,289.387,2304.532,419.095,1321.195,140.055,1460.574,1706.842,179.067,369.688,982.029
|
||||
345,5c4f585ac2,2026-11-02,6004,"Lexer, parser, stream adapter, SAX: remove checks that invariants make dead (#6004)",1386.586,2468.772,6188.662,2373.328,1775.098,483.139,211.476,291.250,2315.874,420.854,1321.718,138.268,1464.254,1709.146,180.316,367.994,965.010
|
||||
346,100f676b3e,2026-11-02,6012,Restore the two commits of #6005 that the stack merge dropped (fixes the build of develop) (#6012),1369.597,2437.356,6122.282,2305.291,1691.485,472.217,208.716,288.666,2291.034,416.120,1300.906,137.896,1439.300,1688.769,176.641,366.389,972.368
|
||||
347,590b622d48,2026-11-02,5991,parse(): propagate std::bad_alloc instead of crashing on a half-constructed member (#5991),1377.480,2425.219,6113.438,2306.435,1716.697,474.315,209.052,288.883,2292.776,417.291,1305.336,137.989,1453.044,1704.638,179.096,368.072,978.198
|
||||
348,6d5581c4e8,2026-11-02,6008,CBOR/MessagePack readers: leave one-element arrays to the general path (#6008),1400.456,2439.163,6140.448,2328.635,1743.039,480.725,212.470,295.268,2348.332,427.202,1340.319,139.121,1489.584,1736.380,184.949,371.567,995.731
|
||||
349,b18b6fc7e6,2026-11-02,6013,Build the parser's syntax error prefix with one concat() (#6013),1370.175,2435.337,6098.834,2320.728,1726.256,472.914,210.817,289.786,2292.841,419.186,1306.593,139.277,1481.709,1714.543,177.065,366.270,971.330
|
||||
350,07876e2292,2026-11-02,6015,json_view: a value that is not found has no bytes in its exception context (#6015),1361.297,2435.980,6080.718,2305.853,1707.733,474.621,210.382,291.568,2337.276,424.783,1329.556,139.590,1450.506,1690.804,178.472,366.370,977.807
|
||||
351,baba5db36f,2026-11-02,6016,"Fix the MSVC and GCC builds of develop (C4127, -Weffc++) (#6016)",1381.280,2440.908,6116.068,2303.611,1713.472,476.121,210.492,290.105,2319.878,420.598,1318.037,139.554,1471.388,1729.097,177.078,369.621,959.145
|
||||
352,candidate,,,develop + open pull requests,1392.967,2469.204,6110.380,2348.760,1730.819,474.089,212.339,290.760,2284.428,420.179,1320.938,137.755,1441.341,1697.486,176.758,364.547,955.117
|
||||
|
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -201,24 +201,24 @@ def digits():
|
||||
# ---------- overview: speedup per workload (Google Benchmark rows, 3.12.0 time / 3.13.0 time) ----------
|
||||
# (group, label, speedup), copied from the table "The short version"
|
||||
OVERVIEW = [
|
||||
("Parsing", "twitter.json", 3.02),
|
||||
("Parsing", "citm_catalog.json", 4.11),
|
||||
("Parsing", "canada.json", 3.41),
|
||||
("Parsing", "canada.json, indented", 6.59),
|
||||
("Parsing", "citm, ordered_json", 6.71),
|
||||
("Parsing", "twitter, std::ifstream", 2.44),
|
||||
("Parsing", "citm, FILE*", 4.71),
|
||||
("Parsing", "citm, accept()", 7.04),
|
||||
("Writing", "dump() twitter", 6.66),
|
||||
("Writing", "dump() canada", 2.93),
|
||||
("Writing", "dump(4) citm", 4.63),
|
||||
("Writing", "to_cbor() twitter", 4.48),
|
||||
("Reading CBOR", "twitter, memory", 3.18),
|
||||
("Reading CBOR", "twitter, FILE*", 6.41),
|
||||
("Values", "diff() canada", 10.34),
|
||||
("Values", "iterate canada", 2.71),
|
||||
("Values", "copy + destroy citm", 1.11),
|
||||
("Values", "== citm", 1.04),
|
||||
("Parsing", "twitter.json", 3.14),
|
||||
("Parsing", "citm_catalog.json", 4.25),
|
||||
("Parsing", "canada.json", 3.35),
|
||||
("Parsing", "canada.json, indented", 6.51),
|
||||
("Parsing", "citm, ordered_json", 6.85),
|
||||
("Parsing", "twitter, std::ifstream", 2.50),
|
||||
("Parsing", "citm, FILE*", 4.74),
|
||||
("Parsing", "citm, accept()", 7.07),
|
||||
("Writing", "dump() twitter", 6.70),
|
||||
("Writing", "dump() canada", 2.98),
|
||||
("Writing", "dump(4) citm", 4.70),
|
||||
("Writing", "to_cbor() twitter", 4.59),
|
||||
("Reading CBOR", "twitter, memory", 3.39),
|
||||
("Reading CBOR", "twitter, FILE*", 6.59),
|
||||
("Values", "diff() canada", 10.46),
|
||||
("Values", "iterate canada", 2.73),
|
||||
("Values", "copy + destroy citm", 1.13),
|
||||
("Values", "== citm", 1.06),
|
||||
]
|
||||
|
||||
|
||||
@@ -396,15 +396,15 @@ def timeline():
|
||||
# ---------- cliffs: 3.12.0 and 3.13.0 times on a log axis ----------
|
||||
# (operation, 3.12.0 ms, 3.13.0 ms), copied from the table in "Fix the algorithm first"
|
||||
CLIFFS = [
|
||||
("diff() 64k numbers vs []", 4140, 10.5),
|
||||
("diff() 20k objects vs half", 119, 3.99),
|
||||
("parse() callback, 32k objects", 1361, 12.1),
|
||||
("operator< nested 24 deep", 64.0, 0.002),
|
||||
("operator< citm, 10x", 278, 3.86),
|
||||
("flatten() citm, ordered_json", 251, 1.39),
|
||||
("to_bson() 200 deep, 100x", 19.9, 0.349),
|
||||
("push_back() 100k, diagnostics", 1532, 5.04),
|
||||
("at(i) 10k, diagnostics", 43.6, 0.081),
|
||||
("diff() 64k numbers vs []", 4237, 10.8),
|
||||
("diff() 20k objects vs half", 122, 4.13),
|
||||
("parse() callback, 32k objects", 1398, 12.1),
|
||||
("operator< nested 24 deep", 64.4, 0.002),
|
||||
("operator< citm, 10x", 284, 3.94),
|
||||
("flatten() citm, ordered_json", 271, 1.45),
|
||||
("to_bson() 200 deep, 100x", 20.3, 0.352),
|
||||
("push_back() 100k, diagnostics", 1589, 5.32),
|
||||
("at(i) 10k, diagnostics", 45.9, 0.088),
|
||||
]
|
||||
|
||||
|
||||
@@ -495,13 +495,13 @@ def heldout():
|
||||
|
||||
|
||||
# ---------- the price: compile time of two programs against 3.12.0 ----------
|
||||
# CPU time of the compiler in ms, median of 9 interleaved rounds, C++20, M1 Max (the post's appendix G)
|
||||
# CPU time of the compiler in ms, median of 5 interleaved rounds, C++20, M1 Max (the post's appendix G)
|
||||
# (3.12.0, 3.13.0, 3.13.0 with a precompiled header, 3.13.0 as a module)
|
||||
PRICE = [
|
||||
("Apple clang 21, -O0 (debug)", [("count_numbers", 959.1, 1155.3, 679.1, 803.9), ("server_config", 1108.2, 1445.1, 763.1, 1057.0)]),
|
||||
("Apple clang 21, -O2", [("count_numbers", 1268.8, 1867.7, 1364.3, 1512.9), ("server_config", 1576.9, 2353.6, 1749.4, 2141.4)]),
|
||||
("GCC 16, -O0 (debug)", [("count_numbers", 1443.7, 2346.4, 1579.2, 1662.5), ("server_config", 1984.8, 2781.7, 2113.3, 2181.1)]),
|
||||
("GCC 16, -O2", [("count_numbers", 2326.9, 3453.3, 2972.4, 2895.3), ("server_config", 2888.7, 4388.6, 3941.8, 3825.5)]),
|
||||
("Apple clang 21, -O0 (debug)", [("count_numbers", 955.0, 1320.5, 688.5, 917.5), ("server_config", 1113.2, 1496.4, 862.6, 1135.5)]),
|
||||
("Apple clang 21, -O2", [("count_numbers", 1393.2, 2081.0, 1458.4, 1684.6), ("server_config", 1753.5, 2545.6, 1925.3, 2168.6)]),
|
||||
("GCC 16, -O0 (debug)", [("count_numbers", 1569.4, 2548.4, 1725.0, 1699.8), ("server_config", 2025.4, 2985.1, 2301.6, 2325.8)]),
|
||||
("GCC 16, -O2", [("count_numbers", 2336.0, 3701.5, 2986.8, 2913.4), ("server_config", 3121.5, 4714.2, 4006.2, 4054.9)]),
|
||||
]
|
||||
PRICE_SERIES = [("3.13.0", "nj-charts-c2"), ("3.13.0, precompiled header", "nj-charts-c1"), ("3.13.0, module", "nj-charts-c3")]
|
||||
|
||||
@@ -579,22 +579,25 @@ def geomean(xs):
|
||||
|
||||
|
||||
WRITING = ("edit", "minify", "write") # the use cases that write numbers
|
||||
NUMBER_TEXT = ("source numbers", "raw numbers") # variants that write each number by copying its text
|
||||
|
||||
|
||||
def normalize_usecases(data):
|
||||
"""Chooses each library's best variants again with the rules of the post: variants that reuse a parser or document
|
||||
across calls are measured but not chosen, and neither are variants that write each number by copying its text
|
||||
instead of formatting it (json_document's number_format::source, yyjson's and RapidJSON's raw numbers in edit,
|
||||
minify and write). Skipping the number conversion while reading is allowed"""
|
||||
across calls are measured but not chosen. Variants that write each number by copying its text instead of formatting
|
||||
it (json_document's number_format::source, yyjson's and RapidJSON's raw numbers in edit, minify and write) are not
|
||||
chosen as the fully validating way, but as a way that does less, marked "N" like "U" and "P". Skipping the number
|
||||
conversion while reading is allowed. Each pick has a "mark": "", or the letters of what it skips"""
|
||||
data = json.loads(json.dumps(data))
|
||||
rank = {"full": 0, "n/a": 0, "no UTF-8": 1, "partial": 2}
|
||||
for uc, files in data.items():
|
||||
banned = ("reused",) + (("source numbers", "raw numbers") if uc in WRITING else ())
|
||||
numtext = lambda k: uc in WRITING and any(w in k for w in NUMBER_TEXT)
|
||||
for cell in files.values():
|
||||
for e in cell.values():
|
||||
vs = [(v["us"], k, v["level"]) for k, v in e["variants"].items() if not any(w in k for w in banned)]
|
||||
full = [v for v in vs if rank[v[2]] == 0]
|
||||
pick = lambda v: {"us": v[0], "variant": v[1], "level": "full" if rank[v[2]] == 0 else v[2]}
|
||||
vs = [(v["us"], k, v["level"]) for k, v in e["variants"].items() if "reused" not in k]
|
||||
full = [v for v in vs if rank[v[2]] == 0 and not numtext(v[1])]
|
||||
pick = lambda v: {"us": v[0], "variant": v[1], "level": "full" if rank[v[2]] == 0 else v[2],
|
||||
"mark": " ".join(m for m in (LEVEL_MARK.get(v[2], ""), "N" if numtext(v[1]) else "") if m)}
|
||||
e["best"] = pick(min(full)) if full else None
|
||||
e["best_any"] = pick(min(vs))
|
||||
return data
|
||||
@@ -615,6 +618,12 @@ CHECKS_LESS = [
|
||||
("sonic-cpp", "", "trusts UTF-8: sonic-cpp 1.0.2 doesn't check it"),
|
||||
("serde_json", "", "trusts UTF-8 in the strings it skips (from_slice); strings it reads are checked"),
|
||||
]
|
||||
# what a variant that copies number text does (the "N" half of edit, minify and write)
|
||||
NUMBER_TEXT_TIPS = {
|
||||
"nlohmann json_document": "copies each number's text instead of formatting it (number_format::source)",
|
||||
"yyjson": "copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)",
|
||||
"RapidJSON": "copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)",
|
||||
}
|
||||
|
||||
|
||||
def checks_less(lib, variant):
|
||||
@@ -651,7 +660,9 @@ def usecase_table(data):
|
||||
alt = None
|
||||
levels = {a["level"] for _, _, a in c["files"]} if alt is not None else set()
|
||||
level = "partial" if "partial" in levels else "no UTF-8" if "no UTF-8" in levels else "full"
|
||||
out.setdefault(lib, {})[uc] = {"full": full, "alt": alt, "level": level, "files": c["files"]}
|
||||
numtext = alt is not None and any("N" in a["mark"].split() for _, _, a in c["files"])
|
||||
marks = " ".join(m for m in (LEVEL_MARK[level], "N" if numtext else "") if m)
|
||||
out.setdefault(lib, {})[uc] = {"full": full, "alt": alt, "level": level, "marks": marks, "files": c["files"]}
|
||||
return out
|
||||
|
||||
|
||||
@@ -691,8 +702,9 @@ def tip(lib, uc_label, c, half):
|
||||
if half == "alt":
|
||||
seen = []
|
||||
for _, e in picks:
|
||||
if e["level"] != "full":
|
||||
t = checks_less(lib, e["variant"])
|
||||
ts = ([checks_less(lib, e["variant"])] if e["level"] != "full" else []) + \
|
||||
([NUMBER_TEXT_TIPS.get(lib, "copies each number's text instead of formatting it")] if "N" in e["mark"].split() else [])
|
||||
for t in ts:
|
||||
if t not in seen:
|
||||
seen.append(t)
|
||||
lines += seen
|
||||
@@ -741,14 +753,14 @@ def heatmap(platform, title):
|
||||
if half == "alt":
|
||||
b.append('<text class="nj-charts-cell" x="%g" y="%g" text-anchor="middle">%s</text>' % (cx, y + 16, fr(r)))
|
||||
b.append('<text class="nj-charts-cell nj-charts-cell--small" x="%g" y="%g" text-anchor="middle">%s</text>'
|
||||
% (cx, y + 29, LEVEL_MARK[c["level"]]))
|
||||
% (cx, y + 29, c["marks"]))
|
||||
else:
|
||||
b.append('<text class="nj-charts-cell" x="%g" y="%g" text-anchor="middle">%s</text>' % (cx, y + ch / 2 + 4, fr(r)))
|
||||
b.append('</g>')
|
||||
if c["full"] is None: # no fully validating way: the left half stays empty
|
||||
pass
|
||||
desc.append("%s %s: %s%s" % (UC_LIBS[lib], label, fr(c["full"]) if c["full"] else "no fully validating way",
|
||||
(" (%s checking less, %s)" % (fr(c["alt"]), c["level"])) if c["alt"] else ""))
|
||||
(" (%s doing less, %s)" % (fr(c["alt"]), c["marks"])) if c["alt"] else ""))
|
||||
# the key, set apart from the grid and narrower than its columns, so that it doesn't read as a row of it
|
||||
yb = top + len(libs) * ch + 28
|
||||
b.append('<text class="nj-charts-tick nj-charts-tick--l" x="8" y="%g">time relative to the fastest fully validating library, less is better</text>' % (yb + 4))
|
||||
|
||||
@@ -16,7 +16,6 @@ USE_CASES = [("validate", "validate"), ("sum", "sum"), ("select", "select"), ("e
|
||||
("write", "write")]
|
||||
NAMES = {"nlohmann json_document": "nlohmann/json `json_document`", "nlohmann json": "nlohmann/json `json`",
|
||||
"sonic-rs": "sonic-rs (Rust)", "simd-json": "simd-json (Rust)", "serde_json": "serde_json (Rust)"}
|
||||
MARK = {"no UTF-8": "U", "partial": "P"}
|
||||
|
||||
|
||||
def fmt(us):
|
||||
@@ -37,12 +36,12 @@ def table(data, uc, indent):
|
||||
for lib in libs:
|
||||
best = [data[uc][f][lib]["best"] for f in files]
|
||||
anyv = [data[uc][f][lib]["best_any"] for f in files]
|
||||
names = sorted({b["variant"] for b in best if b} | {a["variant"] + " [%s]" % MARK[a["level"]] for b, a in zip(best, anyv) if a["level"] in MARK and (not b or a["us"] < b["us"])})
|
||||
names = sorted({b["variant"] for b in best if b} | {a["variant"] + " [%s]" % a["mark"] for b, a in zip(best, anyv) if a["mark"] and (not b or a["us"] < b["us"])})
|
||||
cells = []
|
||||
for b, a in zip(best, anyv):
|
||||
c = fmt(b["us"]) if b else "–"
|
||||
if a["level"] in MARK and (not b or a["us"] < b["us"] * 0.97):
|
||||
c += " (%s %s)" % (MARK[a["level"]], fmt(a["us"]))
|
||||
if a["mark"] and (not b or a["us"] < b["us"] * 0.97):
|
||||
c += " (%s %s)" % (a["mark"], fmt(a["us"]))
|
||||
cells.append(c)
|
||||
bold = "**%s**" if lib == "nlohmann json_document" else "%s"
|
||||
rows.append("| %s | %s | %s |" % (bold % NAMES.get(lib, lib), ", ".join(names), " | ".join(cells)))
|
||||
|
||||
Reference in new issue
Block a user