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:
Niels Lohmann committed 2026-11-03 15:31:38 +01:00
1 parent 5c595412d1
commit 5f49306727
27 files changed
+13759 -13610

No files matched your search

File diff suppressed because it is too large. Load diff
+35 -35
View File
@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 600 380" role="img" aria-labelledby="nj-blog-cliffs nj-blog-cliffs-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-cliffs">Operations that grew quadratically or worse: time with 3.12.0 and 3.13.0, log scale</title>
<desc id="nj-blog-cliffs-d">Dot plot on a logarithmic time axis, less is better; an arrow leads from each 3.12.0 time to the 3.13.0 time. diff() 64k numbers vs []: 4140 ms to 10.5 ms; diff() 20k objects vs half: 119 ms to 3.99 ms; parse() callback, 32k objects: 1361 ms to 12.1 ms; operator&lt; nested 24 deep: 64 ms to 0.002 ms; operator&lt; citm, 10x: 278 ms to 3.86 ms; flatten() citm, ordered_json: 251 ms to 1.39 ms; to_bson() 200 deep, 100x: 19.9 ms to 0.349 ms; push_back() 100k, diagnostics: 1532 ms to 5.04 ms; at(i) 10k, diagnostics: 43.6 ms to 0.081 ms.</desc>
<desc id="nj-blog-cliffs-d">Dot plot on a logarithmic time axis, less is better; an arrow leads from each 3.12.0 time to the 3.13.0 time. diff() 64k numbers vs []: 4237 ms to 10.8 ms; diff() 20k objects vs half: 122 ms to 4.13 ms; parse() callback, 32k objects: 1398 ms to 12.1 ms; operator&lt; nested 24 deep: 64.4 ms to 0.002 ms; operator&lt; citm, 10x: 284 ms to 3.94 ms; flatten() citm, ordered_json: 271 ms to 1.45 ms; to_bson() 200 deep, 100x: 20.3 ms to 0.352 ms; push_back() 100k, diagnostics: 1589 ms to 5.32 ms; at(i) 10k, diagnostics: 45.9 ms to 0.088 ms.</desc>
<line class="nj-charts-grid" x1="250" y1="30" x2="250" y2="336"/>
<text class="nj-charts-tick" x="250" y="352">1 µs</text>
<line class="nj-charts-grid" x1="297.857" y1="30" x2="297.857" y2="336"/>
@@ -22,48 +22,48 @@
<circle class="nj-charts-ojson-dot" cx="250" cy="14" r="5"/><text class="nj-charts-leg" x="260" y="18.5">3.12.0</text>
<circle class="nj-charts-json-dot" cx="330" cy="14" r="5"/><text class="nj-charts-leg" x="340" y="18.5">3.13.0</text>
<text class="nj-charts-rowlabel" x="240" y="52" text-anchor="end">diff() 64k numbers vs []</text>
<line class="nj-charts-axis" x1="560.671" y1="48" x2="449.443" y2="48" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="566.671" cy="48" r="5"><title>diff() 64k numbers vs [], 3.12.0: 4140 ms</title></circle>
<circle class="nj-charts-json-dot" cx="442.443" cy="48" r="5"><title>diff() 64k numbers vs [], 3.13.0: 10.5 ms</title></circle>
<text class="nj-charts-factor" x="504.557" y="41">394&#215;</text>
<line class="nj-charts-axis" x1="561.152" y1="48" x2="450.028" y2="48" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="567.152" cy="48" r="5"><title>diff() 64k numbers vs [], 3.12.0: 4237 ms</title></circle>
<circle class="nj-charts-json-dot" cx="443.028" cy="48" r="5"><title>diff() 64k numbers vs [], 3.13.0: 10.8 ms</title></circle>
<text class="nj-charts-factor" x="505.09" y="41">392&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="86" text-anchor="end">diff() 20k objects vs half</text>
<line class="nj-charts-axis" x1="486.901" y1="82" x2="429.332" y2="82" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="492.901" cy="82" r="5"><title>diff() 20k objects vs half, 3.12.0: 119 ms</title></circle>
<circle class="nj-charts-json-dot" cx="422.332" cy="82" r="5"><title>diff() 20k objects vs half, 3.13.0: 3.99 ms</title></circle>
<text class="nj-charts-factor" x="457.617" y="75">30&#215;</text>
<line class="nj-charts-axis" x1="487.419" y1="82" x2="430.049" y2="82" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="493.419" cy="82" r="5"><title>diff() 20k objects vs half, 3.12.0: 122 ms</title></circle>
<circle class="nj-charts-json-dot" cx="423.049" cy="82" r="5"><title>diff() 20k objects vs half, 3.13.0: 4.13 ms</title></circle>
<text class="nj-charts-factor" x="458.234" y="75">30&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="120" text-anchor="end">parse() callback, 32k objects</text>
<line class="nj-charts-axis" x1="537.549" y1="116" x2="452.39" y2="116" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="543.549" cy="116" r="5"><title>parse() callback, 32k objects, 3.12.0: 1361 ms</title></circle>
<line class="nj-charts-axis" x1="538.106" y1="116" x2="452.39" y2="116" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="544.106" cy="116" r="5"><title>parse() callback, 32k objects, 3.12.0: 1398 ms</title></circle>
<circle class="nj-charts-json-dot" cx="445.39" cy="116" r="5"><title>parse() callback, 32k objects, 3.13.0: 12.1 ms</title></circle>
<text class="nj-charts-factor" x="494.47" y="109">112&#215;</text>
<text class="nj-charts-factor" x="494.748" y="109">116&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="154" text-anchor="end">operator&lt; nested 24 deep</text>
<line class="nj-charts-axis" x1="474.01" y1="150" x2="271.406" y2="150" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="480.01" cy="150" r="5"><title>operator&lt; nested 24 deep, 3.12.0: 64 ms</title></circle>
<line class="nj-charts-axis" x1="474.14" y1="150" x2="271.406" y2="150" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="480.14" cy="150" r="5"><title>operator&lt; nested 24 deep, 3.12.0: 64.4 ms</title></circle>
<circle class="nj-charts-json-dot" cx="264.406" cy="150" r="5"><title>operator&lt; nested 24 deep, 3.13.0: 0.002 ms</title></circle>
<text class="nj-charts-factor" x="372.208" y="143">32000&#215;</text>
<text class="nj-charts-factor" x="372.273" y="143">32200&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="188" text-anchor="end">operator&lt; citm, 10x</text>
<line class="nj-charts-axis" x1="504.536" y1="184" x2="428.644" y2="184" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="510.536" cy="184" r="5"><title>operator&lt; citm, 10x, 3.12.0: 278 ms</title></circle>
<circle class="nj-charts-json-dot" cx="421.644" cy="184" r="5"><title>operator&lt; citm, 10x, 3.13.0: 3.86 ms</title></circle>
<text class="nj-charts-factor" x="466.09" y="177">72&#215;</text>
<line class="nj-charts-axis" x1="504.98" y1="184" x2="429.07" y2="184" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="510.98" cy="184" r="5"><title>operator&lt; citm, 10x, 3.12.0: 284 ms</title></circle>
<circle class="nj-charts-json-dot" cx="422.07" cy="184" r="5"><title>operator&lt; citm, 10x, 3.13.0: 3.94 ms</title></circle>
<text class="nj-charts-factor" x="466.525" y="177">72&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="222" text-anchor="end">flatten() citm, ordered_json</text>
<line class="nj-charts-axis" x1="502.413" y1="218" x2="407.416" y2="218" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="508.413" cy="218" r="5"><title>flatten() citm, ordered_json, 3.12.0: 251 ms</title></circle>
<circle class="nj-charts-json-dot" cx="400.416" cy="218" r="5"><title>flatten() citm, ordered_json, 3.13.0: 1.39 ms</title></circle>
<text class="nj-charts-factor" x="454.414" y="211">181&#215;</text>
<line class="nj-charts-axis" x1="504.006" y1="218" x2="408.294" y2="218" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="510.006" cy="218" r="5"><title>flatten() citm, ordered_json, 3.12.0: 271 ms</title></circle>
<circle class="nj-charts-json-dot" cx="401.294" cy="218" r="5"><title>flatten() citm, ordered_json, 3.13.0: 1.45 ms</title></circle>
<text class="nj-charts-factor" x="455.65" y="211">187&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="256" text-anchor="end">to_bson() 200 deep, 100x</text>
<line class="nj-charts-axis" x1="449.731" y1="252" x2="378.692" y2="252" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="455.731" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.12.0: 19.9 ms</title></circle>
<circle class="nj-charts-json-dot" cx="371.692" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.13.0: 0.349 ms</title></circle>
<text class="nj-charts-factor" x="413.712" y="245">57&#215;</text>
<line class="nj-charts-axis" x1="450.144" y1="252" x2="378.87" y2="252" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="456.144" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.12.0: 20.3 ms</title></circle>
<circle class="nj-charts-json-dot" cx="371.87" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.13.0: 0.352 ms</title></circle>
<text class="nj-charts-factor" x="414.007" y="245">58&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="290" text-anchor="end">push_back() 100k, diagnostics</text>
<line class="nj-charts-axis" x1="540.009" y1="286" x2="434.188" y2="286" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="546.009" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.12.0: 1532 ms</title></circle>
<circle class="nj-charts-json-dot" cx="427.188" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.13.0: 5.04 ms</title></circle>
<text class="nj-charts-factor" x="486.598" y="279">304&#215;</text>
<line class="nj-charts-axis" x1="540.768" y1="286" x2="435.311" y2="286" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="546.768" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.12.0: 1589 ms</title></circle>
<circle class="nj-charts-json-dot" cx="428.311" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.13.0: 5.32 ms</title></circle>
<text class="nj-charts-factor" x="487.54" y="279">299&#215;</text>
<text class="nj-charts-rowlabel" x="240" y="324" text-anchor="end">at(i) 10k, diagnostics</text>
<line class="nj-charts-axis" x1="466.033" y1="320" x2="348.335" y2="320" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="472.033" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.12.0: 43.6 ms</title></circle>
<circle class="nj-charts-json-dot" cx="341.335" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.13.0: 0.081 ms</title></circle>
<text class="nj-charts-factor" x="406.684" y="313">538&#215;</text>
<line class="nj-charts-axis" x1="467.101" y1="320" x2="350.057" y2="320" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="473.101" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.12.0: 45.9 ms</title></circle>
<circle class="nj-charts-json-dot" cx="343.057" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.13.0: 0.088 ms</title></circle>
<text class="nj-charts-factor" x="408.079" y="313">522&#215;</text>
</svg>

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 560 250" role="img" aria-labelledby="nj-blog-dist nj-blog-dist-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-dist">Speedup of 3.13.0 over 3.12.0 for all 182 benchmarks of the suite</title>
<desc id="nj-blog-dist-d">Bars counting the benchmarks per speedup range: below 1x: 2; 1 to 1.5x: 21; 1.5 to 2x: 14; 2 to 3x: 58; 3 to 5x: 58; 5 to 10x: 25; 10x or more: 4. Median 3.0x, geometric mean 3.0x.</desc>
<desc id="nj-blog-dist-d">Bars counting the benchmarks per speedup range: below 1x: 1; 1 to 1.5x: 22; 1.5 to 2x: 12; 2 to 3x: 60; 3 to 5x: 58; 5 to 10x: 25; 10x or more: 4. Median 2.9x, geometric mean 3.0x.</desc>
<line class="nj-charts-grid" x1="52" y1="196" x2="548" y2="196"/>
<text class="nj-charts-tick nj-charts-tick--r" x="46" y="200">0</text>
<line class="nj-charts-grid" x1="52" y1="144.571" x2="548" y2="144.571"/>
@@ -9,17 +9,17 @@
<text class="nj-charts-tick nj-charts-tick--r" x="46" y="97.1429">40</text>
<line class="nj-charts-grid" x1="52" y1="41.7143" x2="548" y2="41.7143"/>
<text class="nj-charts-tick nj-charts-tick--r" x="46" y="45.7143">60</text>
<rect class="nj-charts-c2" x="60.0" y="190.9" width="54.9" height="5.1" rx="3"><title>below 1&#215;: 2</title></rect>
<text class="nj-charts-val" x="87.4" y="185.9" text-anchor="middle">2</text>
<rect class="nj-charts-c2" x="60.0" y="193.4" width="54.9" height="2.6" rx="3"><title>below 1&#215;: 1</title></rect>
<text class="nj-charts-val" x="87.4" y="188.4" text-anchor="middle">1</text>
<text class="nj-charts-tick" x="87.4" y="212.0">below 1&#215;</text>
<rect class="nj-charts-c1" x="130.9" y="142.0" width="54.9" height="54.0" rx="3"><title>1 to 1.5&#215;: 21</title></rect>
<text class="nj-charts-val" x="158.3" y="137.0" text-anchor="middle">21</text>
<rect class="nj-charts-c1" x="130.9" y="139.4" width="54.9" height="56.6" rx="3"><title>1 to 1.5&#215;: 22</title></rect>
<text class="nj-charts-val" x="158.3" y="134.4" text-anchor="middle">22</text>
<text class="nj-charts-tick" x="158.3" y="212.0">1 to 1.5&#215;</text>
<rect class="nj-charts-c1" x="201.7" y="160.0" width="54.9" height="36.0" rx="3"><title>1.5 to 2&#215;: 14</title></rect>
<text class="nj-charts-val" x="229.1" y="155.0" text-anchor="middle">14</text>
<rect class="nj-charts-c1" x="201.7" y="165.1" width="54.9" height="30.9" rx="3"><title>1.5 to 2&#215;: 12</title></rect>
<text class="nj-charts-val" x="229.1" y="160.1" text-anchor="middle">12</text>
<text class="nj-charts-tick" x="229.1" y="212.0">1.5 to 2&#215;</text>
<rect class="nj-charts-c1" x="272.6" y="46.9" width="54.9" height="149.1" rx="3"><title>2 to 3&#215;: 58</title></rect>
<text class="nj-charts-val" x="300.0" y="41.9" text-anchor="middle">58</text>
<rect class="nj-charts-c1" x="272.6" y="41.7" width="54.9" height="154.3" rx="3"><title>2 to 3&#215;: 60</title></rect>
<text class="nj-charts-val" x="300.0" y="36.7" text-anchor="middle">60</text>
<text class="nj-charts-tick" x="300.0" y="212.0">2 to 3&#215;</text>
<rect class="nj-charts-c1" x="343.4" y="46.9" width="54.9" height="149.1" rx="3"><title>3 to 5&#215;: 58</title></rect>
<text class="nj-charts-val" x="370.9" y="41.9" text-anchor="middle">58</text>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

+54 -54
View File
@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 620 482" role="img" aria-labelledby="nj-blog-heldout nj-blog-heldout-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-heldout">Validating 19 files 3.13.0 was not tuned on: json_document&#x27;s time relative to the fastest other library per file</title>
<desc id="nj-blog-heldout-d">Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. mesh: Mac 0.66, x86-64 0.42 (serde_json (Rust)); semanticscholar-corpus: Mac 0.78, x86-64 0.61 (sonic-rs (Rust)); gsoc-2018: Mac 0.61, x86-64 0.67 (Boost.J&#8203;SON); marine_ik: Mac 0.59, x86-64 0.69 (Boost.J&#8203;SON); twitter_api_compact_response: Mac 0.91, x86-64 0.72 (simdjson); github_events: Mac 0.81, x86-64 0.74 (simdjson); twitterescaped: Mac 0.94, x86-64 0.75 (simdjson); numbers: Mac 0.62, x86-64 0.77 (Boost.J&#8203;SON); update-center: Mac 0.89, x86-64 0.79 (simdjson); twitter_api_response: Mac 0.93, x86-64 0.81 (simdjson); twitter_timeline: Mac 0.97, x86-64 0.83 (yyjson); instruments: Mac 0.91, x86-64 0.86 (simdjson); google_maps_api_compact_response: Mac 0.84, x86-64 0.87 (yyjson); apache_builds: Mac 1.11, x86-64 0.88 (simdjson); random: Mac 0.84, x86-64 0.89 (simdjson); repeat: Mac 0.65, x86-64 0.90 (simdjson); mesh.pretty: Mac 0.85, x86-64 0.93 (Boost.J&#8203;SON); google_maps_api_response: Mac 0.91, x86-64 0.95 (simdjson); tree-pretty: Mac 0.95, x86-64 0.96 (simdjson).</desc>
<desc id="nj-blog-heldout-d">Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. mesh: Mac 0.67, x86-64 0.44 (serde_json (Rust)); marine_ik: Mac 0.59, x86-64 0.62 (Boost.J&#8203;SON); semanticscholar-corpus: Mac 0.79, x86-64 0.65 (sonic-rs (Rust)); gsoc-2018: Mac 0.61, x86-64 0.65 (Boost.J&#8203;SON); twitter_api_compact_response: Mac 0.91, x86-64 0.70 (simdjson); twitterescaped: Mac 0.94, x86-64 0.77 (simdjson); github_events: Mac 0.82, x86-64 0.77 (simdjson); numbers: Mac 0.69, x86-64 0.77 (Boost.J&#8203;SON); twitter_api_response: Mac 0.95, x86-64 0.81 (simdjson); google_maps_api_compact_response: Mac 0.84, x86-64 0.81 (yyjson); twitter_timeline: Mac 0.97, x86-64 0.82 (yyjson); update-center: Mac 0.89, x86-64 0.83 (simdjson); random: Mac 0.82, x86-64 0.88 (simdjson); instruments: Mac 0.94, x86-64 0.90 (simdjson); apache_builds: Mac 1.11, x86-64 0.90 (simdjson); repeat: Mac 0.65, x86-64 0.91 (simdjson); mesh.pretty: Mac 0.85, x86-64 0.92 (Boost.J&#8203;SON); tree-pretty: Mac 0.95, x86-64 0.94 (simdjson); google_maps_api_response: Mac 0.91, x86-64 0.99 (simdjson).</desc>
<line class="nj-charts-grid" x1="262" y1="50" x2="262" y2="438"/>
<text class="nj-charts-tick" x="262" y="454">0.4&#215;</text>
<line class="nj-charts-grid" x1="291.867" y1="50" x2="291.867" y2="438"/>
@@ -22,80 +22,80 @@
<circle class="nj-charts-ojson-dot" cx="134.2" cy="14" r="5"/><text class="nj-charts-leg" x="144.2" y="18.5">x86-64, G&#8203;CC 16.2</text>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="48">next on x86-64</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="68" text-anchor="end">mesh</text>
<circle class="nj-charts-json-dot" cx="340.7" cy="60.5" r="4.5"><title>mesh, Apple M1 Max: 0.66&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="269.4" cy="67.5" r="4.5"><title>mesh, x86-64, G&#8203;CC 16.2: 0.42&#215; the time of serde&#95;json (Rust)</title></circle>
<circle class="nj-charts-json-dot" cx="342.4" cy="60.5" r="4.5"><title>mesh, Apple M1 Max: 0.67&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="273.4" cy="67.5" r="4.5"><title>mesh, x86-64, G&#8203;CC 16.2: 0.44&#215; the time of serde&#95;json (Rust)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="68">serde&#95;json (Rust)</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="88" text-anchor="end">semanticscholar-corpus</text>
<circle class="nj-charts-json-dot" cx="376.4" cy="80.5" r="4.5"><title>semanticscholar-corpus, Apple M1 Max: 0.78&#215; the time of sonic-rs (Rust)</title></circle>
<circle class="nj-charts-ojson-dot" cx="325.3" cy="87.5" r="4.5"><title>semanticscholar-corpus, x86-64, G&#8203;CC 16.2: 0.61&#215; the time of sonic-rs (Rust)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="88">sonic-rs (Rust)</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="108" text-anchor="end">gsoc-2018</text>
<circle class="nj-charts-json-dot" cx="323.7" cy="100.5" r="4.5"><title>gsoc-2018, Apple M1 Max: 0.61&#215; the time of sonic-rs (Rust)</title></circle>
<circle class="nj-charts-ojson-dot" cx="342.5" cy="107.5" r="4.5"><title>gsoc-2018, x86-64, G&#8203;CC 16.2: 0.67&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="108">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="128" text-anchor="end">marine&#95;ik</text>
<circle class="nj-charts-json-dot" cx="319.1" cy="120.5" r="4.5"><title>marine&#95;ik, Apple M1 Max: 0.59&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="347.3" cy="127.5" r="4.5"><title>marine&#95;ik, x86-64, G&#8203;CC 16.2: 0.69&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="88" text-anchor="end">marine&#95;ik</text>
<circle class="nj-charts-json-dot" cx="319.7" cy="80.5" r="4.5"><title>marine&#95;ik, Apple M1 Max: 0.59&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="327.8" cy="87.5" r="4.5"><title>marine&#95;ik, x86-64, G&#8203;CC 16.2: 0.62&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="88">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="108" text-anchor="end">semanticscholar-corpus</text>
<circle class="nj-charts-json-dot" cx="377.8" cy="100.5" r="4.5"><title>semanticscholar-corpus, Apple M1 Max: 0.79&#215; the time of sonic-rs (Rust)</title></circle>
<circle class="nj-charts-ojson-dot" cx="336.7" cy="107.5" r="4.5"><title>semanticscholar-corpus, x86-64, G&#8203;CC 16.2: 0.65&#215; the time of sonic-rs (Rust)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="108">sonic-rs (Rust)</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="128" text-anchor="end">gsoc-2018</text>
<circle class="nj-charts-json-dot" cx="326.1" cy="120.5" r="4.5"><title>gsoc-2018, Apple M1 Max: 0.61&#215; the time of sonic-rs (Rust)</title></circle>
<circle class="nj-charts-ojson-dot" cx="337.2" cy="127.5" r="4.5"><title>gsoc-2018, x86-64, G&#8203;CC 16.2: 0.65&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="128">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="148" text-anchor="end">twitter&#95;api&#95;compact&#95;response</text>
<circle class="nj-charts-json-dot" cx="414.0" cy="140.5" r="4.5"><title>twitter&#95;api&#95;compact&#95;response, Apple M1 Max: 0.91&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="357.4" cy="147.5" r="4.5"><title>twitter&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 0.72&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="352.1" cy="147.5" r="4.5"><title>twitter&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 0.70&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="148">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="168" text-anchor="end">github&#95;events</text>
<circle class="nj-charts-json-dot" cx="384.2" cy="160.5" r="4.5"><title>github&#95;events, Apple M1 Max: 0.81&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="364.2" cy="167.5" r="4.5"><title>github&#95;events, x86-64, G&#8203;CC 16.2: 0.74&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="168" text-anchor="end">twitterescaped</text>
<circle class="nj-charts-json-dot" cx="424.5" cy="160.5" r="4.5"><title>twitterescaped, Apple M1 Max: 0.94&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="371.3" cy="167.5" r="4.5"><title>twitterescaped, x86-64, G&#8203;CC 16.2: 0.77&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="168">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="188" text-anchor="end">twitterescaped</text>
<circle class="nj-charts-json-dot" cx="422.3" cy="180.5" r="4.5"><title>twitterescaped, Apple M1 Max: 0.94&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="367.7" cy="187.5" r="4.5"><title>twitterescaped, x86-64, G&#8203;CC 16.2: 0.75&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="188" text-anchor="end">github&#95;events</text>
<circle class="nj-charts-json-dot" cx="386.9" cy="180.5" r="4.5"><title>github&#95;events, Apple M1 Max: 0.82&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="371.9" cy="187.5" r="4.5"><title>github&#95;events, x86-64, G&#8203;CC 16.2: 0.77&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="188">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="208" text-anchor="end">numbers</text>
<circle class="nj-charts-json-dot" cx="327.4" cy="200.5" r="4.5"><title>numbers, Apple M1 Max: 0.62&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="371.6" cy="207.5" r="4.5"><title>numbers, x86-64, G&#8203;CC 16.2: 0.77&#215; the time of Boost.J&#8203;SON</title></circle>
<circle class="nj-charts-json-dot" cx="348.0" cy="200.5" r="4.5"><title>numbers, Apple M1 Max: 0.69&#215; the time of Boost.J&#8203;SON</title></circle>
<circle class="nj-charts-ojson-dot" cx="373.1" cy="207.5" r="4.5"><title>numbers, x86-64, G&#8203;CC 16.2: 0.77&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="208">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="228" text-anchor="end">update-center</text>
<circle class="nj-charts-json-dot" cx="409.0" cy="220.5" r="4.5"><title>update-center, Apple M1 Max: 0.89&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="379.9" cy="227.5" r="4.5"><title>update-center, x86-64, G&#8203;CC 16.2: 0.79&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="228" text-anchor="end">twitter&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="427.0" cy="220.5" r="4.5"><title>twitter&#95;api&#95;response, Apple M1 Max: 0.95&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="384.1" cy="227.5" r="4.5"><title>twitter&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 0.81&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="228">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="248" text-anchor="end">twitter&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="420.4" cy="240.5" r="4.5"><title>twitter&#95;api&#95;response, Apple M1 Max: 0.93&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="384.1" cy="247.5" r="4.5"><title>twitter&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 0.81&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="248">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="248" text-anchor="end">google&#95;maps&#95;api&#95;compact&#95;response</text>
<circle class="nj-charts-json-dot" cx="394.5" cy="240.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, Apple M1 Max: 0.84&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="384.2" cy="247.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 0.81&#215; the time of yyjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="248">yyjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="268" text-anchor="end">twitter&#95;timeline</text>
<circle class="nj-charts-json-dot" cx="431.5" cy="260.5" r="4.5"><title>twitter&#95;timeline, Apple M1 Max: 0.97&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="390.2" cy="267.5" r="4.5"><title>twitter&#95;timeline, x86-64, G&#8203;CC 16.2: 0.83&#215; the time of yyjson</title></circle>
<circle class="nj-charts-json-dot" cx="431.6" cy="260.5" r="4.5"><title>twitter&#95;timeline, Apple M1 Max: 0.97&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="388.4" cy="267.5" r="4.5"><title>twitter&#95;timeline, x86-64, G&#8203;CC 16.2: 0.82&#215; the time of yyjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="268">yyjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="288" text-anchor="end">instruments</text>
<circle class="nj-charts-json-dot" cx="413.9" cy="280.5" r="4.5"><title>instruments, Apple M1 Max: 0.91&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="399.6" cy="287.5" r="4.5"><title>instruments, x86-64, G&#8203;CC 16.2: 0.86&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="288" text-anchor="end">update-center</text>
<circle class="nj-charts-json-dot" cx="409.1" cy="280.5" r="4.5"><title>update-center, Apple M1 Max: 0.89&#215; the time of sonic-rs (Rust)</title></circle>
<circle class="nj-charts-ojson-dot" cx="391.0" cy="287.5" r="4.5"><title>update-center, x86-64, G&#8203;CC 16.2: 0.83&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="288">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="308" text-anchor="end">google&#95;maps&#95;api&#95;compact&#95;response</text>
<circle class="nj-charts-json-dot" cx="394.5" cy="300.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, Apple M1 Max: 0.84&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="402.8" cy="307.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 0.87&#215; the time of yyjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="308">yyjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="328" text-anchor="end">apache&#95;builds</text>
<circle class="nj-charts-json-dot" cx="475.4" cy="320.5" r="4.5"><title>apache&#95;builds, Apple M1 Max: 1.11&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="405.3" cy="327.5" r="4.5"><title>apache&#95;builds, x86-64, G&#8203;CC 16.2: 0.88&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="308" text-anchor="end">random</text>
<circle class="nj-charts-json-dot" cx="387.2" cy="300.5" r="4.5"><title>random, Apple M1 Max: 0.82&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="404.0" cy="307.5" r="4.5"><title>random, x86-64, G&#8203;CC 16.2: 0.88&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="308">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="328" text-anchor="end">instruments</text>
<circle class="nj-charts-json-dot" cx="422.0" cy="320.5" r="4.5"><title>instruments, Apple M1 Max: 0.94&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="410.8" cy="327.5" r="4.5"><title>instruments, x86-64, G&#8203;CC 16.2: 0.90&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="328">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="348" text-anchor="end">random</text>
<circle class="nj-charts-json-dot" cx="392.1" cy="340.5" r="4.5"><title>random, Apple M1 Max: 0.84&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="409.1" cy="347.5" r="4.5"><title>random, x86-64, G&#8203;CC 16.2: 0.89&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="348" text-anchor="end">apache&#95;builds</text>
<circle class="nj-charts-json-dot" cx="474.6" cy="340.5" r="4.5"><title>apache&#95;builds, Apple M1 Max: 1.11&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="412.3" cy="347.5" r="4.5"><title>apache&#95;builds, x86-64, G&#8203;CC 16.2: 0.90&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="348">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="368" text-anchor="end">repeat</text>
<circle class="nj-charts-json-dot" cx="336.7" cy="360.5" r="4.5"><title>repeat, Apple M1 Max: 0.65&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="412.3" cy="367.5" r="4.5"><title>repeat, x86-64, G&#8203;CC 16.2: 0.90&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="414.5" cy="367.5" r="4.5"><title>repeat, x86-64, G&#8203;CC 16.2: 0.91&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="368">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="388" text-anchor="end">mesh.pretty</text>
<circle class="nj-charts-json-dot" cx="395.4" cy="380.5" r="4.5"><title>mesh.pretty, Apple M1 Max: 0.85&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="421.5" cy="387.5" r="4.5"><title>mesh.pretty, x86-64, G&#8203;CC 16.2: 0.93&#215; the time of Boost.J&#8203;SON</title></circle>
<circle class="nj-charts-json-dot" cx="396.5" cy="380.5" r="4.5"><title>mesh.pretty, Apple M1 Max: 0.85&#215; the time of Glaze</title></circle>
<circle class="nj-charts-ojson-dot" cx="417.8" cy="387.5" r="4.5"><title>mesh.pretty, x86-64, G&#8203;CC 16.2: 0.92&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="388">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="408" text-anchor="end">google&#95;maps&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="412.9" cy="400.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, Apple M1 Max: 0.91&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="425.2" cy="407.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 0.95&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="408" text-anchor="end">tree-pretty</text>
<circle class="nj-charts-json-dot" cx="425.2" cy="400.5" r="4.5"><title>tree-pretty, Apple M1 Max: 0.95&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="424.2" cy="407.5" r="4.5"><title>tree-pretty, x86-64, G&#8203;CC 16.2: 0.94&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="408">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="428" text-anchor="end">tree-pretty</text>
<circle class="nj-charts-json-dot" cx="427.6" cy="420.5" r="4.5"><title>tree-pretty, Apple M1 Max: 0.95&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="429.3" cy="427.5" r="4.5"><title>tree-pretty, x86-64, G&#8203;CC 16.2: 0.96&#215; the time of simdjson</title></circle>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="428" text-anchor="end">google&#95;maps&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="415.8" cy="420.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, Apple M1 Max: 0.91&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="436.9" cy="427.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 0.99&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="428">simdjson</text>
<line class="nj-charts-ref" x1="441.2" y1="50" x2="441.2" y2="438"/>
<text class="nj-charts-tick" x="441.2" y="44">as fast as the next</text>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

+37 -37
View File
@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 560 604" role="img" aria-labelledby="nj-blog-overview nj-blog-overview-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-overview">Speedup of 3.13.0 over 3.12.0 per workload, Apple M1 Max, Apple clang</title>
<desc id="nj-blog-overview-d">Horizontal bars of the speedup, more is better. twitter.json 3.0x; citm_catalog.json 4.1x; canada.json 3.4x; canada.json, indented 6.6x; citm, ordered_json 6.7x; twitter, std::ifstream 2.4x; citm, FILE* 4.7x; citm, accept() 7.0x; dump() twitter 6.7x; dump() canada 2.9x; dump(4) citm 4.6x; to_cbor() twitter 4.5x; twitter, memory 3.2x; twitter, FILE* 6.4x; diff() canada 10x; iterate canada 2.7x; copy + destroy citm 1.11x; == citm 1.04x.</desc>
<desc id="nj-blog-overview-d">Horizontal bars of the speedup, more is better. twitter.json 3.1x; citm_catalog.json 4.2x; canada.json 3.4x; canada.json, indented 6.5x; citm, ordered_json 6.8x; twitter, std::ifstream 2.5x; citm, FILE* 4.7x; citm, accept() 7.1x; dump() twitter 6.7x; dump() canada 3.0x; dump(4) citm 4.7x; to_cbor() twitter 4.6x; twitter, memory 3.4x; twitter, FILE* 6.6x; diff() canada 10x; iterate canada 2.7x; copy + destroy citm 1.13x; == citm 1.06x.</desc>
<text class="nj-charts-panel" x="8" y="20">Parsing</text>
<text class="nj-charts-panel" x="8" y="244">Writing</text>
<text class="nj-charts-panel" x="8" y="372">Reading C&#8203;BOR</text>
@@ -28,59 +28,59 @@
<line class="nj-charts-grid" x1="520" y1="8" x2="520" y2="560"/>
<text class="nj-charts-tick" x="520" y="576">11&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="42" text-anchor="end">twitter.json</text>
<path class="nj-charts-c1" d="M190 30 H276.6 Q280.6 30 280.6 34 V41 Q280.6 45 276.6 45 H190 Z"><title>twitter.json: 3.0&#215;</title></path>
<text class="nj-charts-val" x="285.6" y="42">3.0&#215;</text>
<path class="nj-charts-c1" d="M190 30 H280.2 Q284.2 30 284.2 34 V41 Q284.2 45 280.2 45 H190 Z"><title>twitter.json: 3.1&#215;</title></path>
<text class="nj-charts-val" x="289.2" y="42">3.1&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="66" text-anchor="end">citm_catalog.json</text>
<path class="nj-charts-c1" d="M190 54 H309.3 Q313.3 54 313.3 58 V65 Q313.3 69 309.3 69 H190 Z"><title>citm_catalog.json: 4.1&#215;</title></path>
<text class="nj-charts-val" x="318.3" y="66">4.1&#215;</text>
<path class="nj-charts-c1" d="M190 54 H313.5 Q317.5 54 317.5 58 V65 Q317.5 69 313.5 69 H190 Z"><title>citm_catalog.json: 4.2&#215;</title></path>
<text class="nj-charts-val" x="322.5" y="66">4.2&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="90" text-anchor="end">canada.json</text>
<path class="nj-charts-c1" d="M190 78 H288.3 Q292.3 78 292.3 82 V89 Q292.3 93 288.3 93 H190 Z"><title>canada.json: 3.4&#215;</title></path>
<text class="nj-charts-val" x="297.3" y="90">3.4&#215;</text>
<path class="nj-charts-c1" d="M190 78 H286.5 Q290.5 78 290.5 82 V89 Q290.5 93 286.5 93 H190 Z"><title>canada.json: 3.4&#215;</title></path>
<text class="nj-charts-val" x="295.5" y="90">3.4&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="114" text-anchor="end">canada.json, indented</text>
<path class="nj-charts-c1" d="M190 102 H383.7 Q387.7 102 387.7 106 V113 Q387.7 117 383.7 117 H190 Z"><title>canada.json, indented: 6.6&#215;</title></path>
<text class="nj-charts-val" x="392.7" y="114">6.6&#215;</text>
<path class="nj-charts-c1" d="M190 102 H381.3 Q385.3 102 385.3 106 V113 Q385.3 117 381.3 117 H190 Z"><title>canada.json, indented: 6.5&#215;</title></path>
<text class="nj-charts-val" x="390.3" y="114">6.5&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="138" text-anchor="end">citm, ordered_json</text>
<path class="nj-charts-c1" d="M190 126 H387.3 Q391.3 126 391.3 130 V137 Q391.3 141 387.3 141 H190 Z"><title>citm, ordered_json: 6.7&#215;</title></path>
<text class="nj-charts-val" x="396.3" y="138">6.7&#215;</text>
<path class="nj-charts-c1" d="M190 126 H391.5 Q395.5 126 395.5 130 V137 Q395.5 141 391.5 141 H190 Z"><title>citm, ordered_json: 6.8&#215;</title></path>
<text class="nj-charts-val" x="400.5" y="138">6.8&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="162" text-anchor="end">twitter, std::ifstream</text>
<path class="nj-charts-c1" d="M190 150 H259.2 Q263.2 150 263.2 154 V161 Q263.2 165 259.2 165 H190 Z"><title>twitter, std::ifstream: 2.4&#215;</title></path>
<text class="nj-charts-val" x="268.2" y="162">2.4&#215;</text>
<path class="nj-charts-c1" d="M190 150 H261 Q265 150 265 154 V161 Q265 165 261 165 H190 Z"><title>twitter, std::ifstream: 2.5&#215;</title></path>
<text class="nj-charts-val" x="270" y="162">2.5&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="186" text-anchor="end">citm, FILE*</text>
<path class="nj-charts-c1" d="M190 174 H327.3 Q331.3 174 331.3 178 V185 Q331.3 189 327.3 189 H190 Z"><title>citm, FILE*: 4.7&#215;</title></path>
<text class="nj-charts-val" x="336.3" y="186">4.7&#215;</text>
<path class="nj-charts-c1" d="M190 174 H328.2 Q332.2 174 332.2 178 V185 Q332.2 189 328.2 189 H190 Z"><title>citm, FILE*: 4.7&#215;</title></path>
<text class="nj-charts-val" x="337.2" y="186">4.7&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="210" text-anchor="end">citm, accept()</text>
<path class="nj-charts-c1" d="M190 198 H397.2 Q401.2 198 401.2 202 V209 Q401.2 213 397.2 213 H190 Z"><title>citm, accept(): 7.0&#215;</title></path>
<text class="nj-charts-val" x="406.2" y="210">7.0&#215;</text>
<path class="nj-charts-c1" d="M190 198 H398.1 Q402.1 198 402.1 202 V209 Q402.1 213 398.1 213 H190 Z"><title>citm, accept(): 7.1&#215;</title></path>
<text class="nj-charts-val" x="407.1" y="210">7.1&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="266" text-anchor="end">dump() twitter</text>
<path class="nj-charts-c1" d="M190 254 H385.8 Q389.8 254 389.8 258 V265 Q389.8 269 385.8 269 H190 Z"><title>dump() twitter: 6.7&#215;</title></path>
<text class="nj-charts-val" x="394.8" y="266">6.7&#215;</text>
<path class="nj-charts-c1" d="M190 254 H387 Q391 254 391 258 V265 Q391 269 387 269 H190 Z"><title>dump() twitter: 6.7&#215;</title></path>
<text class="nj-charts-val" x="396" y="266">6.7&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="290" text-anchor="end">dump() canada</text>
<path class="nj-charts-c1" d="M190 278 H273.9 Q277.9 278 277.9 282 V289 Q277.9 293 273.9 293 H190 Z"><title>dump() canada: 2.9&#215;</title></path>
<text class="nj-charts-val" x="282.9" y="290">2.9&#215;</text>
<path class="nj-charts-c1" d="M190 278 H275.4 Q279.4 278 279.4 282 V289 Q279.4 293 275.4 293 H190 Z"><title>dump() canada: 3.0&#215;</title></path>
<text class="nj-charts-val" x="284.4" y="290">3.0&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="314" text-anchor="end">dump(4) citm</text>
<path class="nj-charts-c1" d="M190 302 H324.9 Q328.9 302 328.9 306 V313 Q328.9 317 324.9 317 H190 Z"><title>dump(4) citm: 4.6&#215;</title></path>
<text class="nj-charts-val" x="333.9" y="314">4.6&#215;</text>
<path class="nj-charts-c1" d="M190 302 H327 Q331 302 331 306 V313 Q331 317 327 317 H190 Z"><title>dump(4) citm: 4.7&#215;</title></path>
<text class="nj-charts-val" x="336" y="314">4.7&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="338" text-anchor="end">to_cbor() twitter</text>
<path class="nj-charts-c1" d="M190 326 H320.4 Q324.4 326 324.4 330 V337 Q324.4 341 320.4 341 H190 Z"><title>to_cbor() twitter: 4.5&#215;</title></path>
<text class="nj-charts-val" x="329.4" y="338">4.5&#215;</text>
<path class="nj-charts-c1" d="M190 326 H323.7 Q327.7 326 327.7 330 V337 Q327.7 341 323.7 341 H190 Z"><title>to_cbor() twitter: 4.6&#215;</title></path>
<text class="nj-charts-val" x="332.7" y="338">4.6&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="394" text-anchor="end">twitter, memory</text>
<path class="nj-charts-c1" d="M190 382 H281.4 Q285.4 382 285.4 386 V393 Q285.4 397 281.4 397 H190 Z"><title>twitter, memory: 3.2&#215;</title></path>
<text class="nj-charts-val" x="290.4" y="394">3.2&#215;</text>
<path class="nj-charts-c1" d="M190 382 H287.7 Q291.7 382 291.7 386 V393 Q291.7 397 287.7 397 H190 Z"><title>twitter, memory: 3.4&#215;</title></path>
<text class="nj-charts-val" x="296.7" y="394">3.4&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="418" text-anchor="end">twitter, FILE*</text>
<path class="nj-charts-c1" d="M190 406 H378.3 Q382.3 406 382.3 410 V417 Q382.3 421 378.3 421 H190 Z"><title>twitter, FILE*: 6.4&#215;</title></path>
<text class="nj-charts-val" x="387.3" y="418">6.4&#215;</text>
<path class="nj-charts-c1" d="M190 406 H383.7 Q387.7 406 387.7 410 V417 Q387.7 421 383.7 421 H190 Z"><title>twitter, FILE*: 6.6&#215;</title></path>
<text class="nj-charts-val" x="392.7" y="418">6.6&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="474" text-anchor="end">diff() canada</text>
<path class="nj-charts-c1" d="M190 462 H496.2 Q500.2 462 500.2 466 V473 Q500.2 477 496.2 477 H190 Z"><title>diff() canada: 10&#215;</title></path>
<text class="nj-charts-val" x="505.2" y="474">10&#215;</text>
<path class="nj-charts-c1" d="M190 462 H499.8 Q503.8 462 503.8 466 V473 Q503.8 477 499.8 477 H190 Z"><title>diff() canada: 10&#215;</title></path>
<text class="nj-charts-val" x="508.8" y="474">10&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="498" text-anchor="end">iterate canada</text>
<path class="nj-charts-c1" d="M190 486 H267.3 Q271.3 486 271.3 490 V497 Q271.3 501 267.3 501 H190 Z"><title>iterate canada: 2.7&#215;</title></path>
<text class="nj-charts-val" x="276.3" y="498">2.7&#215;</text>
<path class="nj-charts-c1" d="M190 486 H267.9 Q271.9 486 271.9 490 V497 Q271.9 501 267.9 501 H190 Z"><title>iterate canada: 2.7&#215;</title></path>
<text class="nj-charts-val" x="276.9" y="498">2.7&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="522" text-anchor="end">copy + destroy citm</text>
<path class="nj-charts-c1" d="M190 510 H219.3 Q223.3 510 223.3 514 V521 Q223.3 525 219.3 525 H190 Z"><title>copy + destroy citm: 1.11&#215;</title></path>
<text class="nj-charts-val" x="228.3" y="522">1.11&#215;</text>
<path class="nj-charts-c1" d="M190 510 H219.9 Q223.9 510 223.9 514 V521 Q223.9 525 219.9 525 H190 Z"><title>copy + destroy citm: 1.13&#215;</title></path>
<text class="nj-charts-val" x="228.9" y="522">1.13&#215;</text>
<text class="nj-charts-rowlabel nj-charts-tick--r" x="182" y="546" text-anchor="end">== citm</text>
<path class="nj-charts-c1" d="M190 534 H217.2 Q221.2 534 221.2 538 V545 Q221.2 549 217.2 549 H190 Z"><title>== citm: 1.04&#215;</title></path>
<text class="nj-charts-val" x="226.2" y="546">1.04&#215;</text>
<path class="nj-charts-c1" d="M190 534 H217.8 Q221.8 534 221.8 538 V545 Q221.8 549 217.8 549 H190 Z"><title>== citm: 1.06&#215;</title></path>
<text class="nj-charts-val" x="226.8" y="546">1.06&#215;</text>
<line class="nj-charts-ref" x1="220" y1="8" x2="220" y2="560"/>
<line class="nj-charts-zero" x1="190" y1="8" x2="190" y2="560"/>
<text class="nj-charts-tick" x="355" y="594">speedup over 3.12.0 (3.12.0 = 1&#215;), more is better</text>

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

+48 -48
View File
@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 600 618" role="img" aria-labelledby="nj-blog-price nj-blog-price-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-price">Compile time of two programs with 3.13.0, alone, with a precompiled header and as a module, compared with 3.12.0</title>
<desc id="nj-blog-price-d">Horizontal bars of the change in compile time against 3.12.0, less is better. Apple clang 21, -O0 (debug), count_numbers, 3.13.0: +20 %; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, precompiled header: -29 %; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, module: -16 %; Apple clang 21, -O0 (debug), server_config, 3.13.0: +30 %; Apple clang 21, -O0 (debug), server_config, 3.13.0, precompiled header: -31 %; Apple clang 21, -O0 (debug), server_config, 3.13.0, module: -5 %; Apple clang 21, -O2, count_numbers, 3.13.0: +47 %; Apple clang 21, -O2, count_numbers, 3.13.0, precompiled header: +8 %; Apple clang 21, -O2, count_numbers, 3.13.0, module: +19 %; Apple clang 21, -O2, server_config, 3.13.0: +49 %; Apple clang 21, -O2, server_config, 3.13.0, precompiled header: +11 %; Apple clang 21, -O2, server_config, 3.13.0, module: +36 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0: +63 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0, precompiled header: +9 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0, module: +15 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0: +40 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0, precompiled header: +6 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0, module: +10 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0: +48 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0, precompiled header: +28 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0, module: +24 %; G&#8203;CC 16, -O2, server_config, 3.13.0: +52 %; G&#8203;CC 16, -O2, server_config, 3.13.0, precompiled header: +36 %; G&#8203;CC 16, -O2, server_config, 3.13.0, module: +32 %.</desc>
<desc id="nj-blog-price-d">Horizontal bars of the change in compile time against 3.12.0, less is better. Apple clang 21, -O0 (debug), count_numbers, 3.13.0: +38 %; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, precompiled header: -28 %; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, module: -4 %; Apple clang 21, -O0 (debug), server_config, 3.13.0: +34 %; Apple clang 21, -O0 (debug), server_config, 3.13.0, precompiled header: -23 %; Apple clang 21, -O0 (debug), server_config, 3.13.0, module: +2 %; Apple clang 21, -O2, count_numbers, 3.13.0: +49 %; Apple clang 21, -O2, count_numbers, 3.13.0, precompiled header: +5 %; Apple clang 21, -O2, count_numbers, 3.13.0, module: +21 %; Apple clang 21, -O2, server_config, 3.13.0: +45 %; Apple clang 21, -O2, server_config, 3.13.0, precompiled header: +10 %; Apple clang 21, -O2, server_config, 3.13.0, module: +24 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0: +62 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0, precompiled header: +10 %; G&#8203;CC 16, -O0 (debug), count_numbers, 3.13.0, module: +8 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0: +47 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0, precompiled header: +14 %; G&#8203;CC 16, -O0 (debug), server_config, 3.13.0, module: +15 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0: +58 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0, precompiled header: +28 %; G&#8203;CC 16, -O2, count_numbers, 3.13.0, module: +25 %; G&#8203;CC 16, -O2, server_config, 3.13.0: +51 %; G&#8203;CC 16, -O2, server_config, 3.13.0, precompiled header: +28 %; G&#8203;CC 16, -O2, server_config, 3.13.0, module: +30 %.</desc>
<rect class="nj-charts-c2" x="8" y="6" width="12" height="12" rx="3"/>
<text class="nj-charts-leg" x="26" y="16.5">3.13.0</text>
<rect class="nj-charts-c1" x="97.2" y="6" width="12" height="12" rx="3"/>
@@ -15,19 +15,19 @@
<line class="nj-charts-grid" x1="457.5" y1="74" x2="457.5" y2="170"/>
<line class="nj-charts-grid" x1="525.833" y1="74" x2="525.833" y2="170"/>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="101" text-anchor="end">count_numbers</text>
<path class="nj-charts-c2" d="M320.833 78 H385.167 Q389.167 78 389.167 82 V85 Q389.167 89 385.167 89 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0: 1,155 ms against 959 ms with 3.12.0 (+20 %)</title></path>
<text class="nj-charts-val" x="394.167" y="87.5">+20 %</text>
<path class="nj-charts-c1" d="M320.833 92 H225.75 Q221.75 92 221.75 96 V99 Q221.75 103 225.75 103 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 679 ms against 959 ms with 3.12.0 (&#8722;29 %)</title></path>
<text class="nj-charts-val" x="216.75" y="101.5" text-anchor="end">&#8722;29 %</text>
<path class="nj-charts-c3" d="M320.833 106 H270.167 Q266.167 106 266.167 110 V113 Q266.167 117 270.167 117 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0, module: 804 ms against 959 ms with 3.12.0 (&#8722;16 %)</title></path>
<text class="nj-charts-val" x="261.167" y="115.5" text-anchor="end">&#8722;16 %</text>
<path class="nj-charts-c2" d="M320.833 78 H446.667 Q450.667 78 450.667 82 V85 Q450.667 89 446.667 89 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0: 1,320 ms against 955 ms with 3.12.0 (+38 %)</title></path>
<text class="nj-charts-val" x="455.667" y="87.5">+38 %</text>
<path class="nj-charts-c1" d="M320.833 92 H229.167 Q225.167 92 225.167 96 V99 Q225.167 103 229.167 103 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 688 ms against 955 ms with 3.12.0 (&#8722;28 %)</title></path>
<text class="nj-charts-val" x="220.167" y="101.5" text-anchor="end">&#8722;28 %</text>
<path class="nj-charts-c3" d="M320.833 106 H311.167 Q307.167 106 307.167 110 V113 Q307.167 117 311.167 117 H320.833 Z"><title>count_numbers, Apple clang 21, -O0 (debug), 3.13.0, module: 918 ms against 955 ms with 3.12.0 (&#8722;4 %)</title></path>
<text class="nj-charts-val" x="302.167" y="115.5" text-anchor="end">&#8722;4 %</text>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="150" text-anchor="end">server_config</text>
<path class="nj-charts-c2" d="M320.833 127 H419.333 Q423.333 127 423.333 131 V134 Q423.333 138 419.333 138 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0: 1,445 ms against 1,108 ms with 3.12.0 (+30 %)</title></path>
<text class="nj-charts-val" x="428.333" y="136.5">+30 %</text>
<path class="nj-charts-c1" d="M320.833 141 H218.917 Q214.917 141 214.917 145 V148 Q214.917 152 218.917 152 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 763 ms against 1,108 ms with 3.12.0 (&#8722;31 %)</title></path>
<text class="nj-charts-val" x="209.917" y="150.5" text-anchor="end">&#8722;31 %</text>
<path class="nj-charts-c3" d="M320.833 155 H307.75 Q303.75 155 303.75 159 V162 Q303.75 166 307.75 166 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0, module: 1,057 ms against 1,108 ms with 3.12.0 (&#8722;5 %)</title></path>
<text class="nj-charts-val" x="298.75" y="164.5" text-anchor="end">&#8722;5 %</text>
<path class="nj-charts-c2" d="M320.833 127 H433 Q437 127 437 131 V134 Q437 138 433 138 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0: 1,496 ms against 1,113 ms with 3.12.0 (+34 %)</title></path>
<text class="nj-charts-val" x="442" y="136.5">+34 %</text>
<path class="nj-charts-c1" d="M320.833 141 H246.25 Q242.25 141 242.25 145 V148 Q242.25 152 246.25 152 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 863 ms against 1,113 ms with 3.12.0 (&#8722;23 %)</title></path>
<text class="nj-charts-val" x="237.25" y="150.5" text-anchor="end">&#8722;23 %</text>
<path class="nj-charts-c3" d="M320.833 155 H323.667 Q327.667 155 327.667 159 V162 Q327.667 166 323.667 166 H320.833 Z"><title>server_config, Apple clang 21, -O0 (debug), 3.13.0, module: 1,136 ms against 1,113 ms with 3.12.0 (+2 %)</title></path>
<text class="nj-charts-val" x="332.667" y="164.5">+2 %</text>
<text class="nj-charts-panel" x="8" y="198">Apple clang 21, -O2</text>
<line class="nj-charts-grid" x1="184.167" y1="204" x2="184.167" y2="300"/>
<line class="nj-charts-grid" x1="252.5" y1="204" x2="252.5" y2="300"/>
@@ -35,19 +35,19 @@
<line class="nj-charts-grid" x1="457.5" y1="204" x2="457.5" y2="300"/>
<line class="nj-charts-grid" x1="525.833" y1="204" x2="525.833" y2="300"/>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="231" text-anchor="end">count_numbers</text>
<path class="nj-charts-c2" d="M320.833 208 H477.417 Q481.417 208 481.417 212 V215 Q481.417 219 477.417 219 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0: 1,868 ms against 1,269 ms with 3.12.0 (+47 %)</title></path>
<text class="nj-charts-val" x="486.417" y="217.5">+47 %</text>
<path class="nj-charts-c1" d="M320.833 222 H344.167 Q348.167 222 348.167 226 V229 Q348.167 233 344.167 233 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0, precompiled header: 1,364 ms against 1,269 ms with 3.12.0 (+8 %)</title></path>
<text class="nj-charts-val" x="353.167" y="231.5">+8 %</text>
<path class="nj-charts-c3" d="M320.833 236 H381.75 Q385.75 236 385.75 240 V243 Q385.75 247 381.75 247 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0, module: 1,513 ms against 1,269 ms with 3.12.0 (+19 %)</title></path>
<text class="nj-charts-val" x="390.75" y="245.5">+19 %</text>
<path class="nj-charts-c2" d="M320.833 208 H484.25 Q488.25 208 488.25 212 V215 Q488.25 219 484.25 219 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0: 2,081 ms against 1,393 ms with 3.12.0 (+49 %)</title></path>
<text class="nj-charts-val" x="493.25" y="217.5">+49 %</text>
<path class="nj-charts-c1" d="M320.833 222 H333.917 Q337.917 222 337.917 226 V229 Q337.917 233 333.917 233 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0, precompiled header: 1,458 ms against 1,393 ms with 3.12.0 (+5 %)</title></path>
<text class="nj-charts-val" x="342.917" y="231.5">+5 %</text>
<path class="nj-charts-c3" d="M320.833 236 H388.583 Q392.583 236 392.583 240 V243 Q392.583 247 388.583 247 H320.833 Z"><title>count_numbers, Apple clang 21, -O2, 3.13.0, module: 1,685 ms against 1,393 ms with 3.12.0 (+21 %)</title></path>
<text class="nj-charts-val" x="397.583" y="245.5">+21 %</text>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="280" text-anchor="end">server_config</text>
<path class="nj-charts-c2" d="M320.833 257 H484.25 Q488.25 257 488.25 261 V264 Q488.25 268 484.25 268 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0: 2,354 ms against 1,577 ms with 3.12.0 (+49 %)</title></path>
<text class="nj-charts-val" x="493.25" y="266.5">+49 %</text>
<path class="nj-charts-c1" d="M320.833 271 H354.417 Q358.417 271 358.417 275 V278 Q358.417 282 354.417 282 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0, precompiled header: 1,749 ms against 1,577 ms with 3.12.0 (+11 %)</title></path>
<text class="nj-charts-val" x="363.417" y="280.5">+11 %</text>
<path class="nj-charts-c3" d="M320.833 285 H439.833 Q443.833 285 443.833 289 V292 Q443.833 296 439.833 296 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0, module: 2,141 ms against 1,577 ms with 3.12.0 (+36 %)</title></path>
<text class="nj-charts-val" x="448.833" y="294.5">+36 %</text>
<path class="nj-charts-c2" d="M320.833 257 H470.583 Q474.583 257 474.583 261 V264 Q474.583 268 470.583 268 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0: 2,546 ms against 1,754 ms with 3.12.0 (+45 %)</title></path>
<text class="nj-charts-val" x="479.583" y="266.5">+45 %</text>
<path class="nj-charts-c1" d="M320.833 271 H351 Q355 271 355 275 V278 Q355 282 351 282 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0, precompiled header: 1,925 ms against 1,754 ms with 3.12.0 (+10 %)</title></path>
<text class="nj-charts-val" x="360" y="280.5">+10 %</text>
<path class="nj-charts-c3" d="M320.833 285 H398.833 Q402.833 285 402.833 289 V292 Q402.833 296 398.833 296 H320.833 Z"><title>server_config, Apple clang 21, -O2, 3.13.0, module: 2,169 ms against 1,754 ms with 3.12.0 (+24 %)</title></path>
<text class="nj-charts-val" x="407.833" y="294.5">+24 %</text>
<text class="nj-charts-panel" x="8" y="328">G&#8203;CC 16, -O0 (debug)</text>
<line class="nj-charts-grid" x1="184.167" y1="334" x2="184.167" y2="430"/>
<line class="nj-charts-grid" x1="252.5" y1="334" x2="252.5" y2="430"/>
@@ -55,19 +55,19 @@
<line class="nj-charts-grid" x1="457.5" y1="334" x2="457.5" y2="430"/>
<line class="nj-charts-grid" x1="525.833" y1="334" x2="525.833" y2="430"/>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="361" text-anchor="end">count_numbers</text>
<path class="nj-charts-c2" d="M320.833 338 H532.083 Q536.083 338 536.083 342 V345 Q536.083 349 532.083 349 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0: 2,346 ms against 1,444 ms with 3.12.0 (+63 %)</title></path>
<text class="nj-charts-val" x="541.083" y="347.5">+63 %</text>
<path class="nj-charts-c1" d="M320.833 352 H347.583 Q351.583 352 351.583 356 V359 Q351.583 363 347.583 363 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0, precompiled header: 1,579 ms against 1,444 ms with 3.12.0 (+9 %)</title></path>
<text class="nj-charts-val" x="356.583" y="361.5">+9 %</text>
<path class="nj-charts-c3" d="M320.833 366 H368.083 Q372.083 366 372.083 370 V373 Q372.083 377 368.083 377 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0, module: 1,662 ms against 1,444 ms with 3.12.0 (+15 %)</title></path>
<text class="nj-charts-val" x="377.083" y="375.5">+15 %</text>
<path class="nj-charts-c2" d="M320.833 338 H528.667 Q532.667 338 532.667 342 V345 Q532.667 349 528.667 349 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0: 2,548 ms against 1,569 ms with 3.12.0 (+62 %)</title></path>
<text class="nj-charts-val" x="537.667" y="347.5">+62 %</text>
<path class="nj-charts-c1" d="M320.833 352 H351 Q355 352 355 356 V359 Q355 363 351 363 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0, precompiled header: 1,725 ms against 1,569 ms with 3.12.0 (+10 %)</title></path>
<text class="nj-charts-val" x="360" y="361.5">+10 %</text>
<path class="nj-charts-c3" d="M320.833 366 H344.167 Q348.167 366 348.167 370 V373 Q348.167 377 344.167 377 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O0 (debug), 3.13.0, module: 1,700 ms against 1,569 ms with 3.12.0 (+8 %)</title></path>
<text class="nj-charts-val" x="353.167" y="375.5">+8 %</text>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="410" text-anchor="end">server_config</text>
<path class="nj-charts-c2" d="M320.833 387 H453.5 Q457.5 387 457.5 391 V394 Q457.5 398 453.5 398 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0: 2,782 ms against 1,985 ms with 3.12.0 (+40 %)</title></path>
<text class="nj-charts-val" x="462.5" y="396.5">+40 %</text>
<path class="nj-charts-c1" d="M320.833 401 H337.333 Q341.333 401 341.333 405 V408 Q341.333 412 337.333 412 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0, precompiled header: 2,113 ms against 1,985 ms with 3.12.0 (+6 %)</title></path>
<text class="nj-charts-val" x="346.333" y="410.5">+6 %</text>
<path class="nj-charts-c3" d="M320.833 415 H351 Q355 415 355 419 V422 Q355 426 351 426 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0, module: 2,181 ms against 1,985 ms with 3.12.0 (+10 %)</title></path>
<text class="nj-charts-val" x="360" y="424.5">+10 %</text>
<path class="nj-charts-c2" d="M320.833 387 H477.417 Q481.417 387 481.417 391 V394 Q481.417 398 477.417 398 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0: 2,985 ms against 2,025 ms with 3.12.0 (+47 %)</title></path>
<text class="nj-charts-val" x="486.417" y="396.5">+47 %</text>
<path class="nj-charts-c1" d="M320.833 401 H364.667 Q368.667 401 368.667 405 V408 Q368.667 412 364.667 412 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0, precompiled header: 2,302 ms against 2,025 ms with 3.12.0 (+14 %)</title></path>
<text class="nj-charts-val" x="373.667" y="410.5">+14 %</text>
<path class="nj-charts-c3" d="M320.833 415 H368.083 Q372.083 415 372.083 419 V422 Q372.083 426 368.083 426 H320.833 Z"><title>server_config, G&#8203;CC 16, -O0 (debug), 3.13.0, module: 2,326 ms against 2,025 ms with 3.12.0 (+15 %)</title></path>
<text class="nj-charts-val" x="377.083" y="424.5">+15 %</text>
<text class="nj-charts-panel" x="8" y="458">G&#8203;CC 16, -O2</text>
<line class="nj-charts-grid" x1="184.167" y1="464" x2="184.167" y2="560"/>
<line class="nj-charts-grid" x1="252.5" y1="464" x2="252.5" y2="560"/>
@@ -75,19 +75,19 @@
<line class="nj-charts-grid" x1="457.5" y1="464" x2="457.5" y2="560"/>
<line class="nj-charts-grid" x1="525.833" y1="464" x2="525.833" y2="560"/>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="491" text-anchor="end">count_numbers</text>
<path class="nj-charts-c2" d="M320.833 468 H480.833 Q484.833 468 484.833 472 V475 Q484.833 479 480.833 479 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0: 3,453 ms against 2,327 ms with 3.12.0 (+48 %)</title></path>
<text class="nj-charts-val" x="489.833" y="477.5">+48 %</text>
<path class="nj-charts-c1" d="M320.833 482 H412.5 Q416.5 482 416.5 486 V489 Q416.5 493 412.5 493 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0, precompiled header: 2,972 ms against 2,327 ms with 3.12.0 (+28 %)</title></path>
<path class="nj-charts-c2" d="M320.833 468 H515 Q519 468 519 472 V475 Q519 479 515 479 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0: 3,702 ms against 2,336 ms with 3.12.0 (+58 %)</title></path>
<text class="nj-charts-val" x="524" y="477.5">+58 %</text>
<path class="nj-charts-c1" d="M320.833 482 H412.5 Q416.5 482 416.5 486 V489 Q416.5 493 412.5 493 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0, precompiled header: 2,987 ms against 2,336 ms with 3.12.0 (+28 %)</title></path>
<text class="nj-charts-val" x="421.5" y="491.5">+28 %</text>
<path class="nj-charts-c3" d="M320.833 496 H398.833 Q402.833 496 402.833 500 V503 Q402.833 507 398.833 507 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0, module: 2,895 ms against 2,327 ms with 3.12.0 (+24 %)</title></path>
<text class="nj-charts-val" x="407.833" y="505.5">+24 %</text>
<path class="nj-charts-c3" d="M320.833 496 H402.25 Q406.25 496 406.25 500 V503 Q406.25 507 402.25 507 H320.833 Z"><title>count_numbers, G&#8203;CC 16, -O2, 3.13.0, module: 2,913 ms against 2,336 ms with 3.12.0 (+25 %)</title></path>
<text class="nj-charts-val" x="411.25" y="505.5">+25 %</text>
<text class="nj-charts-rowlabel nj-charts-code" x="142" y="540" text-anchor="end">server_config</text>
<path class="nj-charts-c2" d="M320.833 517 H494.5 Q498.5 517 498.5 521 V524 Q498.5 528 494.5 528 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0: 4,389 ms against 2,889 ms with 3.12.0 (+52 %)</title></path>
<text class="nj-charts-val" x="503.5" y="526.5">+52 %</text>
<path class="nj-charts-c1" d="M320.833 531 H439.833 Q443.833 531 443.833 535 V538 Q443.833 542 439.833 542 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0, precompiled header: 3,942 ms against 2,889 ms with 3.12.0 (+36 %)</title></path>
<text class="nj-charts-val" x="448.833" y="540.5">+36 %</text>
<path class="nj-charts-c3" d="M320.833 545 H426.167 Q430.167 545 430.167 549 V552 Q430.167 556 426.167 556 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0, module: 3,826 ms against 2,889 ms with 3.12.0 (+32 %)</title></path>
<text class="nj-charts-val" x="435.167" y="554.5">+32 %</text>
<path class="nj-charts-c2" d="M320.833 517 H491.083 Q495.083 517 495.083 521 V524 Q495.083 528 491.083 528 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0: 4,714 ms against 3,122 ms with 3.12.0 (+51 %)</title></path>
<text class="nj-charts-val" x="500.083" y="526.5">+51 %</text>
<path class="nj-charts-c1" d="M320.833 531 H412.5 Q416.5 531 416.5 535 V538 Q416.5 542 412.5 542 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0, precompiled header: 4,006 ms against 3,122 ms with 3.12.0 (+28 %)</title></path>
<text class="nj-charts-val" x="421.5" y="540.5">+28 %</text>
<path class="nj-charts-c3" d="M320.833 545 H419.333 Q423.333 545 423.333 549 V552 Q423.333 556 419.333 556 H320.833 Z"><title>server_config, G&#8203;CC 16, -O2, 3.13.0, module: 4,055 ms against 3,122 ms with 3.12.0 (+30 %)</title></path>
<text class="nj-charts-val" x="428.333" y="554.5">+30 %</text>
<line class="nj-charts-ref" x1="320.833" y1="52" x2="320.833" y2="574"/>
<text class="nj-charts-tick" x="184.167" y="590">&#8722;40 %</text>
<text class="nj-charts-tick" x="252.5" y="590">&#8722;20 %</text>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-accept_twitter nj-blog-tl-accept_twitter-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-accept_twitter">accept() twitter.json: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-accept_twitter-d">accept() twitter.json: speedup over 3.12.0 at each of 317 commits, ending at 5.0x. Labeled steps, by theme: 4, 1, 4, 4, 2, 2.</desc>
<desc id="nj-blog-tl-accept_twitter-d">accept() twitter.json: speedup over 3.12.0 at each of 353 commits, ending at 5.1x. Labeled steps, by theme: 4, 1, 4, 4, 2, 2.</desc>
<text class="nj-charts-panel" x="8" y="18">accept() twitter.json</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -12,34 +12,34 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">8&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.1 45.8,208.1 45.8,207.8 46.7,207.8 46.7,208.0 47.6,208.0 47.6,207.7 48.5,207.7 48.5,207.9 49.4,207.9 49.4,208.0 50.3,208.0 50.3,208.1 51.2,208.1 51.2,208.4 52.1,208.4 52.1,207.1 53.1,207.1 53.1,207.9 54.0,207.9 54.0,208.2 54.9,208.2 54.9,207.9 55.8,207.9 55.8,207.9 56.7,207.9 56.7,207.7 57.6,207.7 57.6,207.9 58.5,207.9 58.5,207.8 59.4,207.8 59.4,207.7 60.3,207.7 60.3,208.2 61.2,208.2 61.2,207.3 62.1,207.3 62.1,208.0 63.0,208.0 63.0,208.0 63.9,208.0 63.9,207.8 64.8,207.8 64.8,207.9 65.7,207.9 65.7,207.9 66.6,207.9 66.6,207.2 67.5,207.2 67.5,207.8 68.4,207.8 68.4,207.6 69.3,207.6 69.3,207.8 70.2,207.8 70.2,207.9 71.2,207.9 71.2,207.9 72.1,207.9 72.1,207.4 73.0,207.4 73.0,207.7 73.9,207.7 73.9,207.6 74.8,207.6 74.8,207.7 75.7,207.7 75.7,208.1 76.6,208.1 76.6,207.8 77.5,207.8 77.5,207.1 78.4,207.1 78.4,207.9 79.3,207.9 79.3,207.1 80.2,207.1 80.2,207.8 81.1,207.8 81.1,207.3 82.0,207.3 82.0,208.1 82.9,208.1 82.9,207.6 83.8,207.6 83.8,207.6 84.7,207.6 84.7,208.1 85.6,208.1 85.6,208.3 86.5,208.3 86.5,207.8 87.4,207.8 87.4,207.7 88.3,207.7 88.3,207.9 89.3,207.9 89.3,207.8 90.2,207.8 90.2,207.5 91.1,207.5 91.1,207.9 92.0,207.9 92.0,207.8 92.9,207.8 92.9,208.0 93.8,208.0 93.8,194.6 94.7,194.6 94.7,195.3 95.6,195.3 95.6,195.6 96.5,195.6 96.5,195.1 97.4,195.1 97.4,195.6 98.3,195.6 98.3,194.6 99.2,194.6 99.2,194.7 100.1,194.7 100.1,195.3 101.0,195.3 101.0,195.1 101.9,195.1 101.9,195.1 102.8,195.1 102.8,195.6 103.7,195.6 103.7,194.6 104.6,194.6 104.6,195.2 105.5,195.2 105.5,195.3 106.4,195.3 106.4,195.6 107.4,195.6 107.4,195.3 108.3,195.3 108.3,195.4 109.2,195.4 109.2,195.2 110.1,195.2 110.1,195.8 111.0,195.8 111.0,195.1 111.9,195.1 111.9,195.3 112.8,195.3 112.8,196.2 113.7,196.2 113.7,195.7 114.6,195.7 114.6,194.5 115.5,194.5 115.5,194.7 116.4,194.7 116.4,195.1 117.3,195.1 117.3,195.6 118.2,195.6 118.2,195.6 119.1,195.6 119.1,195.5 120.0,195.5 120.0,194.6 120.9,194.6 120.9,194.4 121.8,194.4 121.8,195.1 122.7,195.1 122.7,195.4 123.6,195.4 123.6,195.8 124.6,195.8 124.6,194.6 125.5,194.6 125.5,195.0 126.4,195.0 126.4,195.4 127.3,195.4 127.3,195.1 128.2,195.1 128.2,195.5 129.1,195.5 129.1,193.5 130.0,193.5 130.0,194.9 130.9,194.9 130.9,195.1 131.8,195.1 131.8,194.8 132.7,194.8 132.7,194.6 133.6,194.6 133.6,194.7 134.5,194.7 134.5,195.1 135.4,195.1 135.4,195.0 136.3,195.0 136.3,194.7 137.2,194.7 137.2,195.3 138.1,195.3 138.1,194.6 139.0,194.6 139.0,194.7 139.9,194.7 139.9,143.3 140.8,143.3 140.8,143.0 141.7,143.0 141.7,142.2 142.7,142.2 142.7,141.9 143.6,141.9 143.6,143.0 144.5,143.0 144.5,142.6 145.4,142.6 145.4,142.4 146.3,142.4 146.3,142.9 147.2,142.9 147.2,143.1 148.1,143.1 148.1,143.2 149.0,143.2 149.0,142.1 149.9,142.1 149.9,143.1 150.8,143.1 150.8,142.4 151.7,142.4 151.7,143.0 152.6,143.0 152.6,141.8 153.5,141.8 153.5,143.1 154.4,143.1 154.4,141.9 155.3,141.9 155.3,143.1 156.2,143.1 156.2,142.9 157.1,142.9 157.1,142.0 158.0,142.0 158.0,142.5 158.9,142.5 158.9,142.4 159.8,142.4 159.8,143.5 160.8,143.5 160.8,142.9 161.7,142.9 161.7,142.3 162.6,142.3 162.6,143.1 163.5,143.1 163.5,141.9 164.4,141.9 164.4,142.4 165.3,142.4 165.3,141.9 166.2,141.9 166.2,141.8 167.1,141.8 167.1,141.3 168.0,141.3 168.0,142.9 168.9,142.9 168.9,141.2 169.8,141.2 169.8,142.8 170.7,142.8 170.7,142.6 171.6,142.6 171.6,142.3 172.5,142.3 172.5,142.7 173.4,142.7 173.4,142.0 174.3,142.0 174.3,141.5 175.2,141.5 175.2,141.2 176.1,141.2 176.1,141.4 177.0,141.4 177.0,141.9 177.9,141.9 177.9,141.6 178.9,141.6 178.9,141.8 179.8,141.8 179.8,142.0 180.7,142.0 180.7,142.0 181.6,142.0 181.6,141.5 182.5,141.5 182.5,142.4 183.4,142.4 183.4,141.7 184.3,141.7 184.3,142.4 185.2,142.4 185.2,141.9 186.1,141.9 186.1,141.7 187.0,141.7 187.0,141.1 187.9,141.1 187.9,141.5 188.8,141.5 188.8,141.6 189.7,141.6 189.7,141.7 190.6,141.7 190.6,140.3 191.5,140.3 191.5,140.7 192.4,140.7 192.4,140.6 193.3,140.6 193.3,141.0 194.2,141.0 194.2,141.8 195.1,141.8 195.1,141.6 196.1,141.6 196.1,141.5 197.0,141.5 197.0,141.0 197.9,141.0 197.9,141.1 198.8,141.1 198.8,140.7 199.7,140.7 199.7,140.4 200.6,140.4 200.6,142.1 201.5,142.1 201.5,141.7 202.4,141.7 202.4,141.2 203.3,141.2 203.3,141.5 204.2,141.5 204.2,140.4 205.1,140.4 205.1,141.0 206.0,141.0 206.0,141.5 206.9,141.5 206.9,141.2 207.8,141.2 207.8,142.1 208.7,142.1 208.7,140.4 209.6,140.4 209.6,141.1 210.5,141.1 210.5,141.5 211.4,141.5 211.4,140.9 212.3,140.9 212.3,141.7 213.2,141.7 213.2,140.4 214.2,140.4 214.2,141.9 215.1,141.9 215.1,141.1 216.0,141.1 216.0,141.4 216.9,141.4 216.9,140.6 217.8,140.6 217.8,141.4 218.7,141.4 218.7,140.1 219.6,140.1 219.6,141.2 220.5,141.2 220.5,140.8 221.4,140.8 221.4,141.4 222.3,141.4 222.3,141.5 223.2,141.5 223.2,141.2 224.1,141.2 224.1,142.0 225.0,142.0 225.0,142.6 225.9,142.6 225.9,142.3 226.8,142.3 226.8,140.6 227.7,140.6 227.7,140.8 228.6,140.8 228.6,140.9 229.5,140.9 229.5,141.1 230.4,141.1 230.4,141.6 231.3,141.6 231.3,141.0 232.3,141.0 232.3,141.5 233.2,141.5 233.2,141.4 234.1,141.4 234.1,142.0 235.0,142.0 235.0,140.6 235.9Line truncated
<circle class="nj-charts-json-dot" cx="93.8" cy="194.6" r="3.5"><title>#5234: 1.22&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="93.8" y1="54.0" x2="93.8" y2="189.6"/>
<circle class="nj-theme-dot" cx="93.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="93.8" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="139.9" cy="143.3" r="3.5"><title>#5283: 2.6&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="139.9" y1="54.0" x2="139.9" y2="138.3"/>
<circle class="nj-theme-dot" cx="139.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="139.9" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="243.1" cy="135.2" r="3.5"><title>#5592: 2.9&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="243.1" y1="54.0" x2="243.1" y2="130.2"/>
<circle class="nj-theme-dot" cx="243.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="243.1" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="265.7" cy="118.7" r="3.5"><title>#5809: 3.7&#215;</title></circle>
<circle class="nj-charts-json-dot" cx="266.6" cy="112.7" r="3.5"><title>#5810: 4.0&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="266.6" y1="36.0" x2="266.6" y2="107.7"/>
<circle class="nj-theme-dot" cx="257.6" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="257.6" y="32.0" text-anchor="middle">4</text>
<circle class="nj-theme-dot" cx="275.6" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="275.6" y="32.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="299.2" cy="99.2" r="3.5"><title>#5853: 4.9&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="299.2" y1="54.0" x2="299.2" y2="94.2"/>
<circle class="nj-theme-dot" cx="299.2" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="299.2" y="50.0" text-anchor="middle">2</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.1 45.6,208.1 45.6,207.8 46.4,207.8 46.4,208.0 47.2,208.0 47.2,207.7 48.1,207.7 48.1,207.9 48.9,207.9 48.9,208.0 49.7,208.0 49.7,208.1 50.5,208.1 50.5,208.4 51.3,208.4 51.3,207.1 52.1,207.1 52.1,207.9 52.9,207.9 52.9,208.2 53.8,208.2 53.8,207.9 54.6,207.9 54.6,207.9 55.4,207.9 55.4,207.7 56.2,207.7 56.2,207.9 57.0,207.9 57.0,207.8 57.8,207.8 57.8,207.7 58.6,207.7 58.6,208.2 59.4,208.2 59.4,207.3 60.2,207.3 60.2,208.0 61.1,208.0 61.1,208.0 61.9,208.0 61.9,207.8 62.7,207.8 62.7,207.9 63.5,207.9 63.5,207.9 64.3,207.9 64.3,207.2 65.1,207.2 65.1,207.8 65.9,207.8 65.9,207.6 66.8,207.6 66.8,207.8 67.6,207.8 67.6,207.9 68.4,207.9 68.4,207.9 69.2,207.9 69.2,207.4 70.0,207.4 70.0,207.7 70.8,207.7 70.8,207.6 71.6,207.6 71.6,207.7 72.4,207.7 72.4,208.1 73.2,208.1 73.2,207.8 74.1,207.8 74.1,207.1 74.9,207.1 74.9,207.9 75.7,207.9 75.7,207.1 76.5,207.1 76.5,207.8 77.3,207.8 77.3,207.3 78.1,207.3 78.1,208.1 78.9,208.1 78.9,207.6 79.8,207.6 79.8,207.6 80.6,207.6 80.6,208.1 81.4,208.1 81.4,208.3 82.2,208.3 82.2,207.8 83.0,207.8 83.0,207.7 83.8,207.7 83.8,207.9 84.6,207.9 84.6,207.8 85.4,207.8 85.4,207.5 86.2,207.5 86.2,207.9 87.1,207.9 87.1,207.8 87.9,207.8 87.9,208.0 88.7,208.0 88.7,194.6 89.5,194.6 89.5,195.3 90.3,195.3 90.3,195.6 91.1,195.6 91.1,195.1 91.9,195.1 91.9,195.6 92.8,195.6 92.8,194.6 93.6,194.6 93.6,194.7 94.4,194.7 94.4,195.3 95.2,195.3 95.2,195.1 96.0,195.1 96.0,195.1 96.8,195.1 96.8,195.6 97.6,195.6 97.6,194.6 98.4,194.6 98.4,195.2 99.2,195.2 99.2,195.3 100.1,195.3 100.1,195.6 100.9,195.6 100.9,195.3 101.7,195.3 101.7,195.4 102.5,195.4 102.5,195.2 103.3,195.2 103.3,195.8 104.1,195.8 104.1,195.1 104.9,195.1 104.9,195.3 105.8,195.3 105.8,196.2 106.6,196.2 106.6,195.7 107.4,195.7 107.4,194.5 108.2,194.5 108.2,194.7 109.0,194.7 109.0,195.1 109.8,195.1 109.8,195.6 110.6,195.6 110.6,195.6 111.4,195.6 111.4,195.5 112.2,195.5 112.2,194.6 113.1,194.6 113.1,194.4 113.9,194.4 113.9,195.1 114.7,195.1 114.7,195.4 115.5,195.4 115.5,195.8 116.3,195.8 116.3,194.6 117.1,194.6 117.1,195.0 117.9,195.0 117.9,195.4 118.8,195.4 118.8,195.1 119.6,195.1 119.6,195.5 120.4,195.5 120.4,193.5 121.2,193.5 121.2,194.9 122.0,194.9 122.0,195.1 122.8,195.1 122.8,194.8 123.6,194.8 123.6,194.6 124.4,194.6 124.4,194.7 125.3,194.7 125.3,195.1 126.1,195.1 126.1,195.0 126.9,195.0 126.9,194.7 127.7,194.7 127.7,195.3 128.5,195.3 128.5,194.6 129.3,194.6 129.3,194.7 130.1,194.7 130.1,143.3 130.9,143.3 130.9,143.0 131.8,143.0 131.8,142.2 132.6,142.2 132.6,141.9 133.4,141.9 133.4,143.0 134.2,143.0 134.2,142.6 135.0,142.6 135.0,142.4 135.8,142.4 135.8,142.9 136.6,142.9 136.6,143.1 137.4,143.1 137.4,143.2 138.2,143.2 138.2,142.1 139.1,142.1 139.1,143.1 139.9,143.1 139.9,142.4 140.7,142.4 140.7,143.0 141.5,143.0 141.5,141.8 142.3,141.8 142.3,143.1 143.1,143.1 143.1,141.9 143.9,141.9 143.9,143.1 144.8,143.1 144.8,142.9 145.6,142.9 145.6,142.0 146.4,142.0 146.4,142.5 147.2,142.5 147.2,142.4 148.0,142.4 148.0,143.5 148.8,143.5 148.8,142.9 149.6,142.9 149.6,142.3 150.4,142.3 150.4,143.1 151.2,143.1 151.2,141.9 152.1,141.9 152.1,142.4 152.9,142.4 152.9,141.9 153.7,141.9 153.7,141.8 154.5,141.8 154.5,141.3 155.3,141.3 155.3,142.9 156.1,142.9 156.1,141.2 156.9,141.2 156.9,142.8 157.8,142.8 157.8,142.6 158.6,142.6 158.6,142.3 159.4,142.3 159.4,142.7 160.2,142.7 160.2,142.0 161.0,142.0 161.0,141.5 161.8,141.5 161.8,141.2 162.6,141.2 162.6,141.4 163.4,141.4 163.4,141.9 164.2,141.9 164.2,141.6 165.1,141.6 165.1,141.8 165.9,141.8 165.9,142.0 166.7,142.0 166.7,142.0 167.5,142.0 167.5,141.5 168.3,141.5 168.3,142.4 169.1,142.4 169.1,141.7 169.9,141.7 169.9,142.4 170.8,142.4 170.8,141.9 171.6,141.9 171.6,141.7 172.4,141.7 172.4,141.1 173.2,141.1 173.2,141.5 174.0,141.5 174.0,141.6 174.8,141.6 174.8,141.7 175.6,141.7 175.6,140.3 176.4,140.3 176.4,140.7 177.2,140.7 177.2,140.6 178.1,140.6 178.1,141.0 178.9,141.0 178.9,141.8 179.7,141.8 179.7,141.6 180.5,141.6 180.5,141.5 181.3,141.5 181.3,141.0 182.1,141.0 182.1,141.1 182.9,141.1 182.9,140.7 183.8,140.7 183.8,140.4 184.6,140.4 184.6,142.1 185.4,142.1 185.4,141.7 186.2,141.7 186.2,141.2 187.0,141.2 187.0,141.5 187.8,141.5 187.8,140.4 188.6,140.4 188.6,141.0 189.4,141.0 189.4,141.5 190.2,141.5 190.2,141.2 191.1,141.2 191.1,142.1 191.9,142.1 191.9,140.4 192.7,140.4 192.7,141.1 193.5,141.1 193.5,141.5 194.3,141.5 194.3,140.9 195.1,140.9 195.1,141.7 195.9,141.7 195.9,140.4 196.8,140.4 196.8,141.9 197.6,141.9 197.6,141.1 198.4,141.1 198.4,141.4 199.2,141.4 199.2,140.6 200.0,140.6 200.0,141.4 200.8,141.4 200.8,140.1 201.6,140.1 201.6,141.2 202.4,141.2 202.4,140.8 203.2,140.8 203.2,141.4 204.1,141.4 204.1,141.5 204.9,141.5 204.9,141.2 205.7,141.2 205.7,142.0 206.5,142.0 206.5,142.6 207.3,142.6 207.3,142.3 208.1,142.3 208.1,140.6 208.9,140.6 208.9,140.8 209.8,140.8 209.8,140.9 210.6,140.9 210.6,141.1 211.4,141.1 211.4,141.6 212.2,141.6 212.2,141.0 213.0,141.0 213.0,141.5 213.8,141.5 213.8,141.4 214.6,141.4 214.6,142.0 215.4,142.0 215.4,140.6 216.2,140.6 216.2,1Line truncated
<circle class="nj-charts-json-dot" cx="88.7" cy="194.6" r="3.5"><title>#5234: 1.22&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="88.7" y1="54.0" x2="88.7" y2="189.6"/>
<circle class="nj-theme-dot" cx="88.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="88.7" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="130.1" cy="143.3" r="3.5"><title>#5283: 2.6&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="130.1" y1="54.0" x2="130.1" y2="138.3"/>
<circle class="nj-theme-dot" cx="130.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="130.1" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="222.8" cy="135.2" r="3.5"><title>#5592: 2.9&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="222.8" y1="54.0" x2="222.8" y2="130.2"/>
<circle class="nj-theme-dot" cx="222.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="222.8" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="243.1" cy="118.7" r="3.5"><title>#5809: 3.7&#215;</title></circle>
<circle class="nj-charts-json-dot" cx="243.9" cy="112.7" r="3.5"><title>#5810: 4.0&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="243.9" y1="36.0" x2="243.9" y2="107.7"/>
<circle class="nj-theme-dot" cx="234.9" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="234.9" y="32.0" text-anchor="middle">4</text>
<circle class="nj-theme-dot" cx="252.9" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="252.9" y="32.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="273.1" cy="99.2" r="3.5"><title>#5853: 4.9&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="273.1" y1="54.0" x2="273.1" y2="94.2"/>
<circle class="nj-theme-dot" cx="273.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="273.1" y="50.0" text-anchor="middle">2</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-dump_canada nj-blog-tl-dump_canada-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-dump_canada">dump() canada.json: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-dump_canada-d">dump() canada.json: speedup over 3.12.0 at each of 317 commits, ending at 3.3x. Labeled steps, by theme: 6, 3.</desc>
<desc id="nj-blog-tl-dump_canada-d">dump() canada.json: speedup over 3.12.0 at each of 353 commits, ending at 3.3x. Labeled steps, by theme: 6, 3.</desc>
<text class="nj-charts-panel" x="8" y="18">dump() canada.json</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -12,19 +12,19 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">8&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.0 45.8,208.0 45.8,207.2 46.7,207.2 46.7,207.9 47.6,207.9 47.6,206.7 48.5,206.7 48.5,207.5 49.4,207.5 49.4,207.7 50.3,207.7 50.3,207.3 51.2,207.3 51.2,207.9 52.1,207.9 52.1,206.6 53.1,206.6 53.1,207.5 54.0,207.5 54.0,208.0 54.9,208.0 54.9,207.6 55.8,207.6 55.8,207.2 56.7,207.2 56.7,207.5 57.6,207.5 57.6,206.6 58.5,206.6 58.5,207.1 59.4,207.1 59.4,207.1 60.3,207.1 60.3,207.2 61.2,207.2 61.2,206.6 62.1,206.6 62.1,207.5 63.0,207.5 63.0,207.6 63.9,207.6 63.9,207.7 64.8,207.7 64.8,207.2 65.7,207.2 65.7,206.5 66.6,206.5 66.6,206.8 67.5,206.8 67.5,207.1 68.4,207.1 68.4,207.0 69.3,207.0 69.3,207.1 70.2,207.1 70.2,206.7 71.2,206.7 71.2,208.2 72.1,208.2 72.1,207.5 73.0,207.5 73.0,206.6 73.9,206.6 73.9,206.7 74.8,206.7 74.8,206.3 75.7,206.3 75.7,208.4 76.6,208.4 76.6,207.3 77.5,207.3 77.5,206.8 78.4,206.8 78.4,208.0 79.3,208.0 79.3,207.8 80.2,207.8 80.2,207.1 81.1,207.1 81.1,207.5 82.0,207.5 82.0,207.9 82.9,207.9 82.9,206.3 83.8,206.3 83.8,206.8 84.7,206.8 84.7,207.5 85.6,207.5 85.6,208.1 86.5,208.1 86.5,206.6 87.4,206.6 87.4,207.2 88.3,207.2 88.3,207.2 89.3,207.2 89.3,207.4 90.2,207.4 90.2,207.0 91.1,207.0 91.1,206.7 92.0,206.7 92.0,206.5 92.9,206.5 92.9,207.6 93.8,207.6 93.8,207.4 94.7,207.4 94.7,207.2 95.6,207.2 95.6,207.5 96.5,207.5 96.5,207.6 97.4,207.6 97.4,208.0 98.3,208.0 98.3,208.2 99.2,208.2 99.2,206.7 100.1,206.7 100.1,207.4 101.0,207.4 101.0,206.7 101.9,206.7 101.9,206.6 102.8,206.6 102.8,208.0 103.7,208.0 103.7,208.0 104.6,208.0 104.6,206.3 105.5,206.3 105.5,208.3 106.4,208.3 106.4,207.8 107.4,207.8 107.4,207.4 108.3,207.4 108.3,206.3 109.2,206.3 109.2,208.1 110.1,208.1 110.1,207.5 111.0,207.5 111.0,207.4 111.9,207.4 111.9,207.5 112.8,207.5 112.8,207.7 113.7,207.7 113.7,208.0 114.6,208.0 114.6,207.0 115.5,207.0 115.5,207.5 116.4,207.5 116.4,207.2 117.3,207.2 117.3,207.7 118.2,207.7 118.2,207.3 119.1,207.3 119.1,208.0 120.0,208.0 120.0,206.7 120.9,206.7 120.9,206.6 121.8,206.6 121.8,207.2 122.7,207.2 122.7,208.1 123.6,208.1 123.6,208.1 124.6,208.1 124.6,206.7 125.5,206.7 125.5,207.8 126.4,207.8 126.4,207.6 127.3,207.6 127.3,207.4 128.2,207.4 128.2,207.1 129.1,207.1 129.1,207.5 130.0,207.5 130.0,208.8 130.9,208.8 130.9,209.2 131.8,209.2 131.8,208.4 132.7,208.4 132.7,208.3 133.6,208.3 133.6,208.0 134.5,208.0 134.5,209.0 135.4,209.0 135.4,208.5 136.3,208.5 136.3,209.1 137.2,209.1 137.2,209.2 138.1,209.2 138.1,208.6 139.0,208.6 139.0,207.7 139.9,207.7 139.9,207.7 140.8,207.7 140.8,207.5 141.7,207.5 141.7,202.2 142.7,202.2 142.7,202.3 143.6,202.3 143.6,201.7 144.5,201.7 144.5,202.3 145.4,202.3 145.4,201.9 146.3,201.9 146.3,201.2 147.2,201.2 147.2,202.1 148.1,202.1 148.1,202.6 149.0,202.6 149.0,201.5 149.9,201.5 149.9,202.3 150.8,202.3 150.8,202.3 151.7,202.3 151.7,201.7 152.6,201.7 152.6,201.3 153.5,201.3 153.5,202.5 154.4,202.5 154.4,201.1 155.3,201.1 155.3,202.9 156.2,202.9 156.2,202.2 157.1,202.2 157.1,201.7 158.0,201.7 158.0,201.7 158.9,201.7 158.9,201.6 159.8,201.6 159.8,203.0 160.8,203.0 160.8,202.7 161.7,202.7 161.7,202.4 162.6,202.4 162.6,202.8 163.5,202.8 163.5,202.1 164.4,202.1 164.4,203.1 165.3,203.1 165.3,202.3 166.2,202.3 166.2,202.3 167.1,202.3 167.1,201.8 168.0,201.8 168.0,203.1 168.9,203.1 168.9,201.8 169.8,201.8 169.8,202.6 170.7,202.6 170.7,202.6 171.6,202.6 171.6,202.9 172.5,202.9 172.5,202.3 173.4,202.3 173.4,202.3 174.3,202.3 174.3,201.6 175.2,201.6 175.2,201.5 176.1,201.5 176.1,202.4 177.0,202.4 177.0,201.7 177.9,201.7 177.9,201.2 178.9,201.2 178.9,202.2 179.8,202.2 179.8,201.6 180.7,201.6 180.7,201.6 181.6,201.6 181.6,201.8 182.5,201.8 182.5,202.1 183.4,202.1 183.4,201.7 184.3,201.7 184.3,201.4 185.2,201.4 185.2,202.2 186.1,202.2 186.1,202.7 187.0,202.7 187.0,202.4 187.9,202.4 187.9,201.7 188.8,201.7 188.8,201.7 189.7,201.7 189.7,202.3 190.6,202.3 190.6,201.6 191.5,201.6 191.5,201.7 192.4,201.7 192.4,202.2 193.3,202.2 193.3,202.2 194.2,202.2 194.2,202.4 195.1,202.4 195.1,201.7 196.1,201.7 196.1,202.1 197.0,202.1 197.0,201.6 197.9,201.6 197.9,202.2 198.8,202.2 198.8,201.9 199.7,201.9 199.7,201.9 200.6,201.9 200.6,202.5 201.5,202.5 201.5,201.6 202.4,201.6 202.4,202.1 203.3,202.1 203.3,202.3 204.2,202.3 204.2,201.8 205.1,201.8 205.1,201.5 206.0,201.5 206.0,202.3 206.9,202.3 206.9,202.2 207.8,202.2 207.8,202.9 208.7,202.9 208.7,201.3 209.6,201.3 209.6,202.2 210.5,202.2 210.5,203.6 211.4,203.6 211.4,201.9 212.3,201.9 212.3,202.4 213.2,202.4 213.2,201.7 214.2,201.7 214.2,202.7 215.1,202.7 215.1,202.3 216.0,202.3 216.0,202.5 216.9,202.5 216.9,202.1 217.8,202.1 217.8,203.4 218.7,203.4 218.7,202.1 219.6,202.1 219.6,202.3 220.5,202.3 220.5,201.9 221.4,201.9 221.4,202.3 222.3,202.3 222.3,201.7 223.2,201.7 223.2,202.4 224.1,202.4 224.1,202.3 225.0,202.3 225.0,202.9 225.9,202.9 225.9,202.9 226.8,202.9 226.8,202.2 227.7,202.2 227.7,202.4 228.6,202.4 228.6,202.2 229.5,202.2 229.5,202.7 230.4,202.7 230.4,202.5 231.3,202.5 231.3,202.5 232.3,202.5 232.3,201.5 233.2,201.5 233.2,203.1 234.1,203.1 234.1,203.2 235.0,203.2 235.0,201.5 235.9Line truncated
<circle class="nj-charts-json-dot" cx="141.7" cy="202.2" r="3.5"><title>#5285: 1.09&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="141.7" y1="54.0" x2="141.7" y2="197.2"/>
<circle class="nj-theme-dot" cx="141.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="141.7" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="269.4" cy="130.7" r="3.5"><title>#5634: 3.1&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="269.4" y1="54.0" x2="269.4" y2="125.7"/>
<circle class="nj-theme-dot" cx="269.4" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="269.4" y="50.0" text-anchor="middle">3</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.0 45.6,208.0 45.6,207.2 46.4,207.2 46.4,207.9 47.2,207.9 47.2,206.7 48.1,206.7 48.1,207.5 48.9,207.5 48.9,207.7 49.7,207.7 49.7,207.3 50.5,207.3 50.5,207.9 51.3,207.9 51.3,206.6 52.1,206.6 52.1,207.5 52.9,207.5 52.9,208.0 53.8,208.0 53.8,207.6 54.6,207.6 54.6,207.2 55.4,207.2 55.4,207.5 56.2,207.5 56.2,206.6 57.0,206.6 57.0,207.1 57.8,207.1 57.8,207.1 58.6,207.1 58.6,207.2 59.4,207.2 59.4,206.6 60.2,206.6 60.2,207.5 61.1,207.5 61.1,207.6 61.9,207.6 61.9,207.7 62.7,207.7 62.7,207.2 63.5,207.2 63.5,206.5 64.3,206.5 64.3,206.8 65.1,206.8 65.1,207.1 65.9,207.1 65.9,207.0 66.8,207.0 66.8,207.1 67.6,207.1 67.6,206.7 68.4,206.7 68.4,208.2 69.2,208.2 69.2,207.5 70.0,207.5 70.0,206.6 70.8,206.6 70.8,206.7 71.6,206.7 71.6,206.3 72.4,206.3 72.4,208.4 73.2,208.4 73.2,207.3 74.1,207.3 74.1,206.8 74.9,206.8 74.9,208.0 75.7,208.0 75.7,207.8 76.5,207.8 76.5,207.1 77.3,207.1 77.3,207.5 78.1,207.5 78.1,207.9 78.9,207.9 78.9,206.3 79.8,206.3 79.8,206.8 80.6,206.8 80.6,207.5 81.4,207.5 81.4,208.1 82.2,208.1 82.2,206.6 83.0,206.6 83.0,207.2 83.8,207.2 83.8,207.2 84.6,207.2 84.6,207.4 85.4,207.4 85.4,207.0 86.2,207.0 86.2,206.7 87.1,206.7 87.1,206.5 87.9,206.5 87.9,207.6 88.7,207.6 88.7,207.4 89.5,207.4 89.5,207.2 90.3,207.2 90.3,207.5 91.1,207.5 91.1,207.6 91.9,207.6 91.9,208.0 92.8,208.0 92.8,208.2 93.6,208.2 93.6,206.7 94.4,206.7 94.4,207.4 95.2,207.4 95.2,206.7 96.0,206.7 96.0,206.6 96.8,206.6 96.8,208.0 97.6,208.0 97.6,208.0 98.4,208.0 98.4,206.3 99.2,206.3 99.2,208.3 100.1,208.3 100.1,207.8 100.9,207.8 100.9,207.4 101.7,207.4 101.7,206.3 102.5,206.3 102.5,208.1 103.3,208.1 103.3,207.5 104.1,207.5 104.1,207.4 104.9,207.4 104.9,207.5 105.8,207.5 105.8,207.7 106.6,207.7 106.6,208.0 107.4,208.0 107.4,207.0 108.2,207.0 108.2,207.5 109.0,207.5 109.0,207.2 109.8,207.2 109.8,207.7 110.6,207.7 110.6,207.3 111.4,207.3 111.4,208.0 112.2,208.0 112.2,206.7 113.1,206.7 113.1,206.6 113.9,206.6 113.9,207.2 114.7,207.2 114.7,208.1 115.5,208.1 115.5,208.1 116.3,208.1 116.3,206.7 117.1,206.7 117.1,207.8 117.9,207.8 117.9,207.6 118.8,207.6 118.8,207.4 119.6,207.4 119.6,207.1 120.4,207.1 120.4,207.5 121.2,207.5 121.2,208.8 122.0,208.8 122.0,209.2 122.8,209.2 122.8,208.4 123.6,208.4 123.6,208.3 124.4,208.3 124.4,208.0 125.3,208.0 125.3,209.0 126.1,209.0 126.1,208.5 126.9,208.5 126.9,209.1 127.7,209.1 127.7,209.2 128.5,209.2 128.5,208.6 129.3,208.6 129.3,207.7 130.1,207.7 130.1,207.7 130.9,207.7 130.9,207.5 131.8,207.5 131.8,202.2 132.6,202.2 132.6,202.3 133.4,202.3 133.4,201.7 134.2,201.7 134.2,202.3 135.0,202.3 135.0,201.9 135.8,201.9 135.8,201.2 136.6,201.2 136.6,202.1 137.4,202.1 137.4,202.6 138.2,202.6 138.2,201.5 139.1,201.5 139.1,202.3 139.9,202.3 139.9,202.3 140.7,202.3 140.7,201.7 141.5,201.7 141.5,201.3 142.3,201.3 142.3,202.5 143.1,202.5 143.1,201.1 143.9,201.1 143.9,202.9 144.8,202.9 144.8,202.2 145.6,202.2 145.6,201.7 146.4,201.7 146.4,201.7 147.2,201.7 147.2,201.6 148.0,201.6 148.0,203.0 148.8,203.0 148.8,202.7 149.6,202.7 149.6,202.4 150.4,202.4 150.4,202.8 151.2,202.8 151.2,202.1 152.1,202.1 152.1,203.1 152.9,203.1 152.9,202.3 153.7,202.3 153.7,202.3 154.5,202.3 154.5,201.8 155.3,201.8 155.3,203.1 156.1,203.1 156.1,201.8 156.9,201.8 156.9,202.6 157.8,202.6 157.8,202.6 158.6,202.6 158.6,202.9 159.4,202.9 159.4,202.3 160.2,202.3 160.2,202.3 161.0,202.3 161.0,201.6 161.8,201.6 161.8,201.5 162.6,201.5 162.6,202.4 163.4,202.4 163.4,201.7 164.2,201.7 164.2,201.2 165.1,201.2 165.1,202.2 165.9,202.2 165.9,201.6 166.7,201.6 166.7,201.6 167.5,201.6 167.5,201.8 168.3,201.8 168.3,202.1 169.1,202.1 169.1,201.7 169.9,201.7 169.9,201.4 170.8,201.4 170.8,202.2 171.6,202.2 171.6,202.7 172.4,202.7 172.4,202.4 173.2,202.4 173.2,201.7 174.0,201.7 174.0,201.7 174.8,201.7 174.8,202.3 175.6,202.3 175.6,201.6 176.4,201.6 176.4,201.7 177.2,201.7 177.2,202.2 178.1,202.2 178.1,202.2 178.9,202.2 178.9,202.4 179.7,202.4 179.7,201.7 180.5,201.7 180.5,202.1 181.3,202.1 181.3,201.6 182.1,201.6 182.1,202.2 182.9,202.2 182.9,201.9 183.8,201.9 183.8,201.9 184.6,201.9 184.6,202.5 185.4,202.5 185.4,201.6 186.2,201.6 186.2,202.1 187.0,202.1 187.0,202.3 187.8,202.3 187.8,201.8 188.6,201.8 188.6,201.5 189.4,201.5 189.4,202.3 190.2,202.3 190.2,202.2 191.1,202.2 191.1,202.9 191.9,202.9 191.9,201.3 192.7,201.3 192.7,202.2 193.5,202.2 193.5,203.6 194.3,203.6 194.3,201.9 195.1,201.9 195.1,202.4 195.9,202.4 195.9,201.7 196.8,201.7 196.8,202.7 197.6,202.7 197.6,202.3 198.4,202.3 198.4,202.5 199.2,202.5 199.2,202.1 200.0,202.1 200.0,203.4 200.8,203.4 200.8,202.1 201.6,202.1 201.6,202.3 202.4,202.3 202.4,201.9 203.2,201.9 203.2,202.3 204.1,202.3 204.1,201.7 204.9,201.7 204.9,202.4 205.7,202.4 205.7,202.3 206.5,202.3 206.5,202.9 207.3,202.9 207.3,202.9 208.1,202.9 208.1,202.2 208.9,202.2 208.9,202.4 209.8,202.4 209.8,202.2 210.6,202.2 210.6,202.7 211.4,202.7 211.4,202.5 212.2,202.5 212.2,202.5 213.0,202.5 213.0,201.5 213.8,201.5 213.8,203.1 214.6,203.1 214.6,203.2 215.4,203.2 215.4,201.5 216.2,201.5 216.2,2Line truncated
<circle class="nj-charts-json-dot" cx="131.8" cy="202.2" r="3.5"><title>#5285: 1.09&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="131.8" y1="54.0" x2="131.8" y2="197.2"/>
<circle class="nj-theme-dot" cx="131.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="131.8" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="246.3" cy="130.7" r="3.5"><title>#5634: 3.1&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="246.3" y1="54.0" x2="246.3" y2="125.7"/>
<circle class="nj-theme-dot" cx="246.3" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="246.3" y="50.0" text-anchor="middle">3</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-dump_twitter nj-blog-tl-dump_twitter-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-dump_twitter">dump() twitter.json: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-dump_twitter-d">dump() twitter.json: speedup over 3.12.0 at each of 317 commits, ending at 6.8x. Labeled steps, by theme: 6, 2, 2, 2.</desc>
<desc id="nj-blog-tl-dump_twitter-d">dump() twitter.json: speedup over 3.12.0 at each of 353 commits, ending at 6.8x. Labeled steps, by theme: 6, 2, 2, 2.</desc>
<text class="nj-charts-panel" x="8" y="18">dump() twitter.json</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -14,27 +14,24 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">16&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.0 45.8,208.0 45.8,207.2 46.7,207.2 46.7,207.9 47.6,207.9 47.6,206.8 48.5,206.8 48.5,208.0 49.4,208.0 49.4,207.4 50.3,207.4 50.3,207.3 51.2,207.3 51.2,208.0 52.1,208.0 52.1,206.8 53.1,206.8 53.1,207.2 54.0,207.2 54.0,208.0 54.9,208.0 54.9,207.2 55.8,207.2 55.8,207.5 56.7,207.5 56.7,206.8 57.6,206.8 57.6,206.9 58.5,206.9 58.5,207.5 59.4,207.5 59.4,207.3 60.3,207.3 60.3,207.8 61.2,207.8 61.2,206.8 62.1,206.8 62.1,207.8 63.0,207.8 63.0,207.4 63.9,207.4 63.9,208.0 64.8,208.0 64.8,207.4 65.7,207.4 65.7,207.3 66.6,207.3 66.6,206.9 67.5,206.9 67.5,207.3 68.4,207.3 68.4,207.4 69.3,207.4 69.3,207.6 70.2,207.6 70.2,207.5 71.2,207.5 71.2,207.6 72.1,207.6 72.1,207.4 73.0,207.4 73.0,207.2 73.9,207.2 73.9,207.1 74.8,207.1 74.8,207.3 75.7,207.3 75.7,207.7 76.6,207.7 76.6,207.8 77.5,207.8 77.5,206.9 78.4,206.9 78.4,207.6 79.3,207.6 79.3,207.0 80.2,207.0 80.2,207.0 81.1,207.0 81.1,207.3 82.0,207.3 82.0,207.6 82.9,207.6 82.9,206.8 83.8,206.8 83.8,207.7 84.7,207.7 84.7,207.4 85.6,207.4 85.6,207.5 86.5,207.5 86.5,207.1 87.4,207.1 87.4,207.3 88.3,207.3 88.3,207.5 89.3,207.5 89.3,207.3 90.2,207.3 90.2,207.3 91.1,207.3 91.1,206.9 92.0,206.9 92.0,207.4 92.9,207.4 92.9,207.9 93.8,207.9 93.8,207.3 94.7,207.3 94.7,206.8 95.6,206.8 95.6,207.6 96.5,207.6 96.5,207.7 97.4,207.7 97.4,208.6 98.3,208.6 98.3,208.5 99.2,208.5 99.2,208.6 100.1,208.6 100.1,209.2 101.0,209.2 101.0,208.5 101.9,208.5 101.9,208.2 102.8,208.2 102.8,209.3 103.7,209.3 103.7,208.4 104.6,208.4 104.6,208.4 105.5,208.4 105.5,209.0 106.4,209.0 106.4,209.0 107.4,209.0 107.4,208.7 108.3,208.7 108.3,208.9 109.2,208.9 109.2,208.7 110.1,208.7 110.1,209.0 111.0,209.0 111.0,208.8 111.9,208.8 111.9,208.7 112.8,208.7 112.8,209.3 113.7,209.3 113.7,208.6 114.6,208.6 114.6,208.5 115.5,208.5 115.5,208.4 116.4,208.4 116.4,208.0 117.3,208.0 117.3,208.9 118.2,208.9 118.2,208.6 119.1,208.6 119.1,208.9 120.0,208.9 120.0,208.1 120.9,208.1 120.9,208.0 121.8,208.0 121.8,208.6 122.7,208.6 122.7,208.5 123.6,208.5 123.6,209.1 124.6,209.1 124.6,208.0 125.5,208.0 125.5,209.1 126.4,209.1 126.4,208.9 127.3,208.9 127.3,208.5 128.2,208.5 128.2,209.1 129.1,209.1 129.1,209.0 130.0,209.0 130.0,208.8 130.9,208.8 130.9,208.6 131.8,208.6 131.8,208.6 132.7,208.6 132.7,208.2 133.6,208.2 133.6,209.0 134.5,209.0 134.5,209.2 135.4,209.2 135.4,209.1 136.3,209.1 136.3,209.2 137.2,209.2 137.2,209.2 138.1,209.2 138.1,208.5 139.0,208.5 139.0,208.7 139.9,208.7 139.9,209.5 140.8,209.5 140.8,208.4 141.7,208.4 141.7,147.4 142.7,147.4 142.7,148.3 143.6,148.3 143.6,148.4 144.5,148.4 144.5,147.5 145.4,147.5 145.4,147.5 146.3,147.5 146.3,147.7 147.2,147.7 147.2,148.2 148.1,148.2 148.1,148.2 149.0,148.2 149.0,147.3 149.9,147.3 149.9,148.1 150.8,148.1 150.8,147.2 151.7,147.2 151.7,147.5 152.6,147.5 152.6,147.3 153.5,147.3 153.5,148.4 154.4,148.4 154.4,147.4 155.3,147.4 155.3,148.3 156.2,148.3 156.2,148.5 157.1,148.5 157.1,147.7 158.0,147.7 158.0,147.8 158.9,147.8 158.9,148.0 159.8,148.0 159.8,148.5 160.8,148.5 160.8,148.0 161.7,148.0 161.7,148.1 162.6,148.1 162.6,148.2 163.5,148.2 163.5,148.3 164.4,148.3 164.4,149.0 165.3,149.0 165.3,148.7 166.2,148.7 166.2,148.2 167.1,148.2 167.1,148.1 168.0,148.1 168.0,148.9 168.9,148.9 168.9,147.7 169.8,147.7 169.8,149.2 170.7,149.2 170.7,149.1 171.6,149.1 171.6,148.8 172.5,148.8 172.5,148.1 173.4,148.1 173.4,148.7 174.3,148.7 174.3,147.7 175.2,147.7 175.2,147.9 176.1,147.9 176.1,147.7 177.0,147.7 177.0,148.3 177.9,148.3 177.9,148.0 178.9,148.0 178.9,148.2 179.8,148.2 179.8,148.4 180.7,148.4 180.7,148.3 181.6,148.3 181.6,148.1 182.5,148.1 182.5,149.0 183.4,149.0 183.4,147.8 184.3,147.8 184.3,148.8 185.2,148.8 185.2,148.3 186.1,148.3 186.1,148.0 187.0,148.0 187.0,147.8 187.9,147.8 187.9,148.0 188.8,148.0 188.8,147.7 189.7,147.7 189.7,148.2 190.6,148.2 190.6,147.1 191.5,147.1 191.5,147.9 192.4,147.9 192.4,147.9 193.3,147.9 193.3,147.9 194.2,147.9 194.2,147.7 195.1,147.7 195.1,148.0 196.1,148.0 196.1,147.4 197.0,147.4 197.0,147.5 197.9,147.5 197.9,147.5 198.8,147.5 198.8,147.0 199.7,147.0 199.7,147.0 200.6,147.0 200.6,148.2 201.5,148.2 201.5,147.7 202.4,147.7 202.4,148.0 203.3,148.0 203.3,148.2 204.2,148.2 204.2,147.7 205.1,147.7 205.1,147.8 206.0,147.8 206.0,148.2 206.9,148.2 206.9,148.3 207.8,148.3 207.8,148.5 208.7,148.5 208.7,148.1 209.6,148.1 209.6,147.9 210.5,147.9 210.5,148.2 211.4,148.2 211.4,147.5 212.3,147.5 212.3,148.1 213.2,148.1 213.2,147.6 214.2,147.6 214.2,148.4 215.1,148.4 215.1,148.2 216.0,148.2 216.0,148.3 216.9,148.3 216.9,148.7 217.8,148.7 217.8,149.4 218.7,149.4 218.7,148.7 219.6,148.7 219.6,149.5 220.5,149.5 220.5,148.2 221.4,148.2 221.4,148.5 222.3,148.5 222.3,149.1 223.2,149.1 223.2,148.8 224.1,148.8 224.1,149.2 225.0,149.2 225.0,149.3 225.9,149.3 225.9,149.1 226.8,149.1 226.8,148.6 227.7,148.6 227.7,148.9 228.6,148.9 228.6,148.5 229.5,148.5 229.5,148.9 230.4,148.9 230.4,149.0 231.3,149.0 231.3,149.0 232.3,149.0 232.3,148.5 233.2,148.5 233.2,149.1 234.1,149.1 234.1,149.2 235.0,149.2 235.0,148.3 235.9Line truncated
<circle class="nj-charts-json-dot" cx="141.7" cy="147.4" r="3.5"><title>#5285: 3.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="141.7" y1="54.0" x2="141.7" y2="142.4"/>
<circle class="nj-theme-dot" cx="141.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="141.7" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="268.5" cy="139.0" r="3.5"><title>#5738: 3.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="268.5" y1="54.0" x2="268.5" y2="134.0"/>
<circle class="nj-theme-dot" cx="268.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="268.5" y="50.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="301.9" cy="131.0" r="3.5"><title>#5878: 4.5&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="301.9" y1="54.0" x2="301.9" y2="126.0"/>
<circle class="nj-theme-dot" cx="301.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="301.9" y="50.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="308.3" cy="109.6" r="3.5"><title>#5883: 6.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="308.3" y1="36.0" x2="308.3" y2="104.6"/>
<circle class="nj-theme-dot" cx="308.3" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="308.3" y="32.0" text-anchor="middle">2</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.0 45.6,208.0 45.6,207.2 46.4,207.2 46.4,207.9 47.2,207.9 47.2,206.8 48.1,206.8 48.1,208.0 48.9,208.0 48.9,207.4 49.7,207.4 49.7,207.3 50.5,207.3 50.5,208.0 51.3,208.0 51.3,206.8 52.1,206.8 52.1,207.2 52.9,207.2 52.9,208.0 53.8,208.0 53.8,207.2 54.6,207.2 54.6,207.5 55.4,207.5 55.4,206.8 56.2,206.8 56.2,206.9 57.0,206.9 57.0,207.5 57.8,207.5 57.8,207.3 58.6,207.3 58.6,207.8 59.4,207.8 59.4,206.8 60.2,206.8 60.2,207.8 61.1,207.8 61.1,207.4 61.9,207.4 61.9,208.0 62.7,208.0 62.7,207.4 63.5,207.4 63.5,207.3 64.3,207.3 64.3,206.9 65.1,206.9 65.1,207.3 65.9,207.3 65.9,207.4 66.8,207.4 66.8,207.6 67.6,207.6 67.6,207.5 68.4,207.5 68.4,207.6 69.2,207.6 69.2,207.4 70.0,207.4 70.0,207.2 70.8,207.2 70.8,207.1 71.6,207.1 71.6,207.3 72.4,207.3 72.4,207.7 73.2,207.7 73.2,207.8 74.1,207.8 74.1,206.9 74.9,206.9 74.9,207.6 75.7,207.6 75.7,207.0 76.5,207.0 76.5,207.0 77.3,207.0 77.3,207.3 78.1,207.3 78.1,207.6 78.9,207.6 78.9,206.8 79.8,206.8 79.8,207.7 80.6,207.7 80.6,207.4 81.4,207.4 81.4,207.5 82.2,207.5 82.2,207.1 83.0,207.1 83.0,207.3 83.8,207.3 83.8,207.5 84.6,207.5 84.6,207.3 85.4,207.3 85.4,207.3 86.2,207.3 86.2,206.9 87.1,206.9 87.1,207.4 87.9,207.4 87.9,207.9 88.7,207.9 88.7,207.3 89.5,207.3 89.5,206.8 90.3,206.8 90.3,207.6 91.1,207.6 91.1,207.7 91.9,207.7 91.9,208.6 92.8,208.6 92.8,208.5 93.6,208.5 93.6,208.6 94.4,208.6 94.4,209.2 95.2,209.2 95.2,208.5 96.0,208.5 96.0,208.2 96.8,208.2 96.8,209.3 97.6,209.3 97.6,208.4 98.4,208.4 98.4,208.4 99.2,208.4 99.2,209.0 100.1,209.0 100.1,209.0 100.9,209.0 100.9,208.7 101.7,208.7 101.7,208.9 102.5,208.9 102.5,208.7 103.3,208.7 103.3,209.0 104.1,209.0 104.1,208.8 104.9,208.8 104.9,208.7 105.8,208.7 105.8,209.3 106.6,209.3 106.6,208.6 107.4,208.6 107.4,208.5 108.2,208.5 108.2,208.4 109.0,208.4 109.0,208.0 109.8,208.0 109.8,208.9 110.6,208.9 110.6,208.6 111.4,208.6 111.4,208.9 112.2,208.9 112.2,208.1 113.1,208.1 113.1,208.0 113.9,208.0 113.9,208.6 114.7,208.6 114.7,208.5 115.5,208.5 115.5,209.1 116.3,209.1 116.3,208.0 117.1,208.0 117.1,209.1 117.9,209.1 117.9,208.9 118.8,208.9 118.8,208.5 119.6,208.5 119.6,209.1 120.4,209.1 120.4,209.0 121.2,209.0 121.2,208.8 122.0,208.8 122.0,208.6 122.8,208.6 122.8,208.6 123.6,208.6 123.6,208.2 124.4,208.2 124.4,209.0 125.3,209.0 125.3,209.2 126.1,209.2 126.1,209.1 126.9,209.1 126.9,209.2 127.7,209.2 127.7,209.2 128.5,209.2 128.5,208.5 129.3,208.5 129.3,208.7 130.1,208.7 130.1,209.5 130.9,209.5 130.9,208.4 131.8,208.4 131.8,147.4 132.6,147.4 132.6,148.3 133.4,148.3 133.4,148.4 134.2,148.4 134.2,147.5 135.0,147.5 135.0,147.5 135.8,147.5 135.8,147.7 136.6,147.7 136.6,148.2 137.4,148.2 137.4,148.2 138.2,148.2 138.2,147.3 139.1,147.3 139.1,148.1 139.9,148.1 139.9,147.2 140.7,147.2 140.7,147.5 141.5,147.5 141.5,147.3 142.3,147.3 142.3,148.4 143.1,148.4 143.1,147.4 143.9,147.4 143.9,148.3 144.8,148.3 144.8,148.5 145.6,148.5 145.6,147.7 146.4,147.7 146.4,147.8 147.2,147.8 147.2,148.0 148.0,148.0 148.0,148.5 148.8,148.5 148.8,148.0 149.6,148.0 149.6,148.1 150.4,148.1 150.4,148.2 151.2,148.2 151.2,148.3 152.1,148.3 152.1,149.0 152.9,149.0 152.9,148.7 153.7,148.7 153.7,148.2 154.5,148.2 154.5,148.1 155.3,148.1 155.3,148.9 156.1,148.9 156.1,147.7 156.9,147.7 156.9,149.2 157.8,149.2 157.8,149.1 158.6,149.1 158.6,148.8 159.4,148.8 159.4,148.1 160.2,148.1 160.2,148.7 161.0,148.7 161.0,147.7 161.8,147.7 161.8,147.9 162.6,147.9 162.6,147.7 163.4,147.7 163.4,148.3 164.2,148.3 164.2,148.0 165.1,148.0 165.1,148.2 165.9,148.2 165.9,148.4 166.7,148.4 166.7,148.3 167.5,148.3 167.5,148.1 168.3,148.1 168.3,149.0 169.1,149.0 169.1,147.8 169.9,147.8 169.9,148.8 170.8,148.8 170.8,148.3 171.6,148.3 171.6,148.0 172.4,148.0 172.4,147.8 173.2,147.8 173.2,148.0 174.0,148.0 174.0,147.7 174.8,147.7 174.8,148.2 175.6,148.2 175.6,147.1 176.4,147.1 176.4,147.9 177.2,147.9 177.2,147.9 178.1,147.9 178.1,147.9 178.9,147.9 178.9,147.7 179.7,147.7 179.7,148.0 180.5,148.0 180.5,147.4 181.3,147.4 181.3,147.5 182.1,147.5 182.1,147.5 182.9,147.5 182.9,147.0 183.8,147.0 183.8,147.0 184.6,147.0 184.6,148.2 185.4,148.2 185.4,147.7 186.2,147.7 186.2,148.0 187.0,148.0 187.0,148.2 187.8,148.2 187.8,147.7 188.6,147.7 188.6,147.8 189.4,147.8 189.4,148.2 190.2,148.2 190.2,148.3 191.1,148.3 191.1,148.5 191.9,148.5 191.9,148.1 192.7,148.1 192.7,147.9 193.5,147.9 193.5,148.2 194.3,148.2 194.3,147.5 195.1,147.5 195.1,148.1 195.9,148.1 195.9,147.6 196.8,147.6 196.8,148.4 197.6,148.4 197.6,148.2 198.4,148.2 198.4,148.3 199.2,148.3 199.2,148.7 200.0,148.7 200.0,149.4 200.8,149.4 200.8,148.7 201.6,148.7 201.6,149.5 202.4,149.5 202.4,148.2 203.2,148.2 203.2,148.5 204.1,148.5 204.1,149.1 204.9,149.1 204.9,148.8 205.7,148.8 205.7,149.2 206.5,149.2 206.5,149.3 207.3,149.3 207.3,149.1 208.1,149.1 208.1,148.6 208.9,148.6 208.9,148.9 209.8,148.9 209.8,148.5 210.6,148.5 210.6,148.9 211.4,148.9 211.4,149.0 212.2,149.0 212.2,149.0 213.0,149.0 213.0,148.5 213.8,148.5 213.8,149.1 214.6,149.1 214.6,149.2 215.4,149.2 215.4,148.3 216.2,148.3 216.2,1Line truncated
<circle class="nj-charts-json-dot" cx="131.8" cy="147.4" r="3.5"><title>#5285: 3.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="131.8" y1="54.0" x2="131.8" y2="142.4"/>
<circle class="nj-theme-dot" cx="131.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="131.8" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="245.5" cy="139.0" r="3.5"><title>#5738: 3.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="245.5" y1="54.0" x2="245.5" y2="134.0"/>
<circle class="nj-theme-dot" cx="245.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="245.5" y="50.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="275.6" cy="131.0" r="3.5"><title>#5878: 4.5&#215;</title></circle>
<circle class="nj-charts-json-dot" cx="281.2" cy="109.6" r="3.5"><title>#5883: 6.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="281.2" y1="54.0" x2="281.2" y2="104.6"/>
<circle class="nj-theme-dot" cx="281.2" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="281.2" y="50.0" text-anchor="middle">2</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-from_cbor_twitter nj-blog-tl-from_cbor_twitter-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-from_cbor_twitter">from_cbor() twitter: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-from_cbor_twitter-d">from_cbor() twitter: speedup over 3.12.0 at each of 317 commits, ending at 2.6x. Labeled steps, by theme: 1, 4, U, U.</desc>
<desc id="nj-blog-tl-from_cbor_twitter-d">from_cbor() twitter: speedup over 3.12.0 at each of 353 commits, ending at 2.6x. Labeled steps, by theme: 1, 4, U, U.</desc>
<text class="nj-charts-panel" x="8" y="18">from_cbor() twitter</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -10,27 +10,27 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">4&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,209.1 45.8,209.1 45.8,208.2 46.7,208.2 46.7,208.6 47.6,208.6 47.6,208.0 48.5,208.0 48.5,208.4 49.4,208.4 49.4,208.6 50.3,208.6 50.3,208.3 51.2,208.3 51.2,209.1 52.1,209.1 52.1,207.8 53.1,207.8 53.1,208.5 54.0,208.5 54.0,208.6 54.9,208.6 54.9,208.6 55.8,208.6 55.8,207.7 56.7,207.7 56.7,207.1 57.6,207.1 57.6,207.3 58.5,207.3 58.5,206.9 59.4,206.9 59.4,207.1 60.3,207.1 60.3,207.0 61.2,207.0 61.2,207.1 62.1,207.1 62.1,207.1 63.0,207.1 63.0,207.5 63.9,207.5 63.9,207.5 64.8,207.5 64.8,206.9 65.7,206.9 65.7,207.0 66.6,207.0 66.6,206.2 67.5,206.2 67.5,207.1 68.4,207.1 68.4,208.5 69.3,208.5 69.3,208.0 70.2,208.0 70.2,207.8 71.2,207.8 71.2,208.5 72.1,208.5 72.1,207.8 73.0,207.8 73.0,207.0 73.9,207.0 73.9,208.1 74.8,208.1 74.8,208.2 75.7,208.2 75.7,208.6 76.6,208.6 76.6,208.1 77.5,208.1 77.5,207.2 78.4,207.2 78.4,208.3 79.3,208.3 79.3,207.4 80.2,207.4 80.2,207.9 81.1,207.9 81.1,207.7 82.0,207.7 82.0,208.6 82.9,208.6 82.9,207.3 83.8,207.3 83.8,207.9 84.7,207.9 84.7,208.4 85.6,208.4 85.6,208.5 86.5,208.5 86.5,208.0 87.4,208.0 87.4,207.1 88.3,207.1 88.3,208.1 89.3,208.1 89.3,208.1 90.2,208.1 90.2,207.8 91.1,207.8 91.1,207.9 92.0,207.9 92.0,207.9 92.9,207.9 92.9,208.7 93.8,208.7 93.8,208.1 94.7,208.1 94.7,168.9 95.6,168.9 95.6,170.3 96.5,170.3 96.5,169.9 97.4,169.9 97.4,169.0 98.3,169.0 98.3,169.6 99.2,169.6 99.2,169.1 100.1,169.1 100.1,170.1 101.0,170.1 101.0,168.8 101.9,168.8 101.9,167.9 102.8,167.9 102.8,170.4 103.7,170.4 103.7,169.5 104.6,169.5 104.6,169.7 105.5,169.7 105.5,172.9 106.4,172.9 106.4,170.5 107.4,170.5 107.4,170.4 108.3,170.4 108.3,170.1 109.2,170.1 109.2,170.2 110.1,170.2 110.1,170.7 111.0,170.7 111.0,170.5 111.9,170.5 111.9,170.4 112.8,170.4 112.8,171.1 113.7,171.1 113.7,170.2 114.6,170.2 114.6,168.6 115.5,168.6 115.5,168.9 116.4,168.9 116.4,168.8 117.3,168.8 117.3,170.5 118.2,170.5 118.2,169.2 119.1,169.2 119.1,169.8 120.0,169.8 120.0,168.2 120.9,168.2 120.9,168.3 121.8,168.3 121.8,169.9 122.7,169.9 122.7,170.3 123.6,170.3 123.6,170.5 124.6,170.5 124.6,169.2 125.5,169.2 125.5,170.5 126.4,170.5 126.4,170.1 127.3,170.1 127.3,170.0 128.2,170.0 128.2,170.0 129.1,170.0 129.1,169.7 130.0,169.7 130.0,169.9 130.9,169.9 130.9,169.2 131.8,169.2 131.8,169.6 132.7,169.6 132.7,170.0 133.6,170.0 133.6,170.0 134.5,170.0 134.5,170.5 135.4,170.5 135.4,170.8 136.3,170.8 136.3,170.5 137.2,170.5 137.2,170.8 138.1,170.8 138.1,169.2 139.0,169.2 139.0,128.6 139.9,128.6 139.9,121.0 140.8,121.0 140.8,120.5 141.7,120.5 141.7,120.8 142.7,120.8 142.7,120.9 143.6,120.9 143.6,120.2 144.5,120.2 144.5,116.5 145.4,116.5 145.4,117.5 146.3,117.5 146.3,117.4 147.2,117.4 147.2,118.0 148.1,118.0 148.1,118.3 149.0,118.3 149.0,118.0 149.9,118.0 149.9,120.1 150.8,120.1 150.8,118.9 151.7,118.9 151.7,119.6 152.6,119.6 152.6,119.0 153.5,119.0 153.5,120.9 154.4,120.9 154.4,118.6 155.3,118.6 155.3,121.1 156.2,121.1 156.2,120.1 157.1,120.1 157.1,118.4 158.0,118.4 158.0,119.3 158.9,119.3 158.9,119.0 159.8,119.0 159.8,120.2 160.8,120.2 160.8,119.0 161.7,119.0 161.7,119.4 162.6,119.4 162.6,119.8 163.5,119.8 163.5,120.4 164.4,120.4 164.4,120.6 165.3,120.6 165.3,119.6 166.2,119.6 166.2,118.8 167.1,118.8 167.1,118.4 168.0,118.4 168.0,120.2 168.9,120.2 168.9,119.3 169.8,119.3 169.8,119.9 170.7,119.9 170.7,119.6 171.6,119.6 171.6,119.7 172.5,119.7 172.5,119.2 173.4,119.2 173.4,119.5 174.3,119.5 174.3,118.0 175.2,118.0 175.2,150.3 176.1,150.3 176.1,150.5 177.0,150.5 177.0,150.6 177.9,150.6 177.9,151.3 178.9,151.3 178.9,151.4 179.8,151.4 179.8,150.7 180.7,150.7 180.7,152.1 181.6,152.1 181.6,151.8 182.5,151.8 182.5,152.4 183.4,152.4 183.4,150.6 184.3,150.6 184.3,152.8 185.2,152.8 185.2,154.2 186.1,154.2 186.1,152.8 187.0,152.8 187.0,152.9 187.9,152.9 187.9,153.6 188.8,153.6 188.8,151.7 189.7,151.7 189.7,153.8 190.6,153.8 190.6,151.6 191.5,151.6 191.5,152.6 192.4,152.6 192.4,153.5 193.3,153.5 193.3,151.8 194.2,151.8 194.2,152.7 195.1,152.7 195.1,153.6 196.1,153.6 196.1,152.7 197.0,152.7 197.0,152.5 197.9,152.5 197.9,152.7 198.8,152.7 198.8,151.6 199.7,151.6 199.7,153.2 200.6,153.2 200.6,154.6 201.5,154.6 201.5,152.1 202.4,152.1 202.4,152.9 203.3,152.9 203.3,153.9 204.2,153.9 204.2,153.0 205.1,153.0 205.1,152.6 206.0,152.6 206.0,154.0 206.9,154.0 206.9,154.0 207.8,154.0 207.8,154.3 208.7,154.3 208.7,152.5 209.6,152.5 209.6,154.4 210.5,154.4 210.5,154.2 211.4,154.2 211.4,151.8 212.3,151.8 212.3,154.0 213.2,154.0 213.2,153.0 214.2,153.0 214.2,152.2 215.1,152.2 215.1,153.7 216.0,153.7 216.0,153.8 216.9,153.8 216.9,153.9 217.8,153.9 217.8,155.5 218.7,155.5 218.7,153.4 219.6,153.4 219.6,155.4 220.5,155.4 220.5,152.8 221.4,152.8 221.4,154.0 222.3,154.0 222.3,152.3 223.2,152.3 223.2,153.2 224.1,153.2 224.1,153.5 225.0,153.5 225.0,153.6 225.9,153.6 225.9,154.6 226.8,154.6 226.8,152.7 227.7,152.7 227.7,155.4 228.6,155.4 228.6,152.5 229.5,152.5 229.5,153.3 230.4,153.3 230.4,153.3 231.3,153.3 231.3,154.5 232.3,154.5 232.3,152.6 233.2,152.6 233.2,153.0 234.1,153.0 234.1,154.3 235.0,154.3 235.0,122.0 235.9Line truncated
<circle class="nj-charts-json-dot" cx="94.7" cy="168.9" r="3.5"><title>#5233: 1.47&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="94.7" y1="54.0" x2="94.7" y2="163.9"/>
<circle class="nj-theme-dot" cx="94.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="94.7" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="139.0" cy="128.6" r="3.5"><title>#5501: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="139.0" y1="54.0" x2="139.0" y2="123.6"/>
<circle class="nj-theme-dot" cx="139.0" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="139.0" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="175.2" cy="150.3" r="3.5"><title>#5185: 1.76&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="175.2" y1="54.0" x2="175.2" y2="145.3"/>
<circle class="nj-theme-dot nj-theme-dot--other" cx="175.2" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="175.2" y="50.0" text-anchor="middle">U</text>
<circle class="nj-charts-json-dot" cx="235.0" cy="122.0" r="3.5"><title>#5746: 2.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="235.0" y1="54.0" x2="235.0" y2="117.0"/>
<circle class="nj-theme-dot nj-theme-dot--other" cx="235.0" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="235.0" y="50.0" text-anchor="middle">U</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,209.1 45.6,209.1 45.6,208.2 46.4,208.2 46.4,208.6 47.2,208.6 47.2,208.0 48.1,208.0 48.1,208.4 48.9,208.4 48.9,208.6 49.7,208.6 49.7,208.3 50.5,208.3 50.5,209.1 51.3,209.1 51.3,207.8 52.1,207.8 52.1,208.5 52.9,208.5 52.9,208.6 53.8,208.6 53.8,208.6 54.6,208.6 54.6,207.7 55.4,207.7 55.4,207.1 56.2,207.1 56.2,207.3 57.0,207.3 57.0,206.9 57.8,206.9 57.8,207.1 58.6,207.1 58.6,207.0 59.4,207.0 59.4,207.1 60.2,207.1 60.2,207.1 61.1,207.1 61.1,207.5 61.9,207.5 61.9,207.5 62.7,207.5 62.7,206.9 63.5,206.9 63.5,207.0 64.3,207.0 64.3,206.2 65.1,206.2 65.1,207.1 65.9,207.1 65.9,208.5 66.8,208.5 66.8,208.0 67.6,208.0 67.6,207.8 68.4,207.8 68.4,208.5 69.2,208.5 69.2,207.8 70.0,207.8 70.0,207.0 70.8,207.0 70.8,208.1 71.6,208.1 71.6,208.2 72.4,208.2 72.4,208.6 73.2,208.6 73.2,208.1 74.1,208.1 74.1,207.2 74.9,207.2 74.9,208.3 75.7,208.3 75.7,207.4 76.5,207.4 76.5,207.9 77.3,207.9 77.3,207.7 78.1,207.7 78.1,208.6 78.9,208.6 78.9,207.3 79.8,207.3 79.8,207.9 80.6,207.9 80.6,208.4 81.4,208.4 81.4,208.5 82.2,208.5 82.2,208.0 83.0,208.0 83.0,207.1 83.8,207.1 83.8,208.1 84.6,208.1 84.6,208.1 85.4,208.1 85.4,207.8 86.2,207.8 86.2,207.9 87.1,207.9 87.1,207.9 87.9,207.9 87.9,208.7 88.7,208.7 88.7,208.1 89.5,208.1 89.5,168.9 90.3,168.9 90.3,170.3 91.1,170.3 91.1,169.9 91.9,169.9 91.9,169.0 92.8,169.0 92.8,169.6 93.6,169.6 93.6,169.1 94.4,169.1 94.4,170.1 95.2,170.1 95.2,168.8 96.0,168.8 96.0,167.9 96.8,167.9 96.8,170.4 97.6,170.4 97.6,169.5 98.4,169.5 98.4,169.7 99.2,169.7 99.2,172.9 100.1,172.9 100.1,170.5 100.9,170.5 100.9,170.4 101.7,170.4 101.7,170.1 102.5,170.1 102.5,170.2 103.3,170.2 103.3,170.7 104.1,170.7 104.1,170.5 104.9,170.5 104.9,170.4 105.8,170.4 105.8,171.1 106.6,171.1 106.6,170.2 107.4,170.2 107.4,168.6 108.2,168.6 108.2,168.9 109.0,168.9 109.0,168.8 109.8,168.8 109.8,170.5 110.6,170.5 110.6,169.2 111.4,169.2 111.4,169.8 112.2,169.8 112.2,168.2 113.1,168.2 113.1,168.3 113.9,168.3 113.9,169.9 114.7,169.9 114.7,170.3 115.5,170.3 115.5,170.5 116.3,170.5 116.3,169.2 117.1,169.2 117.1,170.5 117.9,170.5 117.9,170.1 118.8,170.1 118.8,170.0 119.6,170.0 119.6,170.0 120.4,170.0 120.4,169.7 121.2,169.7 121.2,169.9 122.0,169.9 122.0,169.2 122.8,169.2 122.8,169.6 123.6,169.6 123.6,170.0 124.4,170.0 124.4,170.0 125.3,170.0 125.3,170.5 126.1,170.5 126.1,170.8 126.9,170.8 126.9,170.5 127.7,170.5 127.7,170.8 128.5,170.8 128.5,169.2 129.3,169.2 129.3,128.6 130.1,128.6 130.1,121.0 130.9,121.0 130.9,120.5 131.8,120.5 131.8,120.8 132.6,120.8 132.6,120.9 133.4,120.9 133.4,120.2 134.2,120.2 134.2,116.5 135.0,116.5 135.0,117.5 135.8,117.5 135.8,117.4 136.6,117.4 136.6,118.0 137.4,118.0 137.4,118.3 138.2,118.3 138.2,118.0 139.1,118.0 139.1,120.1 139.9,120.1 139.9,118.9 140.7,118.9 140.7,119.6 141.5,119.6 141.5,119.0 142.3,119.0 142.3,120.9 143.1,120.9 143.1,118.6 143.9,118.6 143.9,121.1 144.8,121.1 144.8,120.1 145.6,120.1 145.6,118.4 146.4,118.4 146.4,119.3 147.2,119.3 147.2,119.0 148.0,119.0 148.0,120.2 148.8,120.2 148.8,119.0 149.6,119.0 149.6,119.4 150.4,119.4 150.4,119.8 151.2,119.8 151.2,120.4 152.1,120.4 152.1,120.6 152.9,120.6 152.9,119.6 153.7,119.6 153.7,118.8 154.5,118.8 154.5,118.4 155.3,118.4 155.3,120.2 156.1,120.2 156.1,119.3 156.9,119.3 156.9,119.9 157.8,119.9 157.8,119.6 158.6,119.6 158.6,119.7 159.4,119.7 159.4,119.2 160.2,119.2 160.2,119.5 161.0,119.5 161.0,118.0 161.8,118.0 161.8,150.3 162.6,150.3 162.6,150.5 163.4,150.5 163.4,150.6 164.2,150.6 164.2,151.3 165.1,151.3 165.1,151.4 165.9,151.4 165.9,150.7 166.7,150.7 166.7,152.1 167.5,152.1 167.5,151.8 168.3,151.8 168.3,152.4 169.1,152.4 169.1,150.6 169.9,150.6 169.9,152.8 170.8,152.8 170.8,154.2 171.6,154.2 171.6,152.8 172.4,152.8 172.4,152.9 173.2,152.9 173.2,153.6 174.0,153.6 174.0,151.7 174.8,151.7 174.8,153.8 175.6,153.8 175.6,151.6 176.4,151.6 176.4,152.6 177.2,152.6 177.2,153.5 178.1,153.5 178.1,151.8 178.9,151.8 178.9,152.7 179.7,152.7 179.7,153.6 180.5,153.6 180.5,152.7 181.3,152.7 181.3,152.5 182.1,152.5 182.1,152.7 182.9,152.7 182.9,151.6 183.8,151.6 183.8,153.2 184.6,153.2 184.6,154.6 185.4,154.6 185.4,152.1 186.2,152.1 186.2,152.9 187.0,152.9 187.0,153.9 187.8,153.9 187.8,153.0 188.6,153.0 188.6,152.6 189.4,152.6 189.4,154.0 190.2,154.0 190.2,154.0 191.1,154.0 191.1,154.3 191.9,154.3 191.9,152.5 192.7,152.5 192.7,154.4 193.5,154.4 193.5,154.2 194.3,154.2 194.3,151.8 195.1,151.8 195.1,154.0 195.9,154.0 195.9,153.0 196.8,153.0 196.8,152.2 197.6,152.2 197.6,153.7 198.4,153.7 198.4,153.8 199.2,153.8 199.2,153.9 200.0,153.9 200.0,155.5 200.8,155.5 200.8,153.4 201.6,153.4 201.6,155.4 202.4,155.4 202.4,152.8 203.2,152.8 203.2,154.0 204.1,154.0 204.1,152.3 204.9,152.3 204.9,153.2 205.7,153.2 205.7,153.5 206.5,153.5 206.5,153.6 207.3,153.6 207.3,154.6 208.1,154.6 208.1,152.7 208.9,152.7 208.9,155.4 209.8,155.4 209.8,152.5 210.6,152.5 210.6,153.3 211.4,153.3 211.4,153.3 212.2,153.3 212.2,154.5 213.0,154.5 213.0,152.6 213.8,152.6 213.8,153.0 214.6,153.0 214.6,154.3 215.4,154.3 215.4,122.0 216.2,122.0 216.2,1Line truncated
<circle class="nj-charts-json-dot" cx="89.5" cy="168.9" r="3.5"><title>#5233: 1.47&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="89.5" y1="54.0" x2="89.5" y2="163.9"/>
<circle class="nj-theme-dot" cx="89.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="89.5" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="129.3" cy="128.6" r="3.5"><title>#5501: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="129.3" y1="54.0" x2="129.3" y2="123.6"/>
<circle class="nj-theme-dot" cx="129.3" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="129.3" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="161.8" cy="150.3" r="3.5"><title>#5185: 1.76&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="161.8" y1="54.0" x2="161.8" y2="145.3"/>
<circle class="nj-theme-dot nj-theme-dot--other" cx="161.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="161.8" y="50.0" text-anchor="middle">U</text>
<circle class="nj-charts-json-dot" cx="215.4" cy="122.0" r="3.5"><title>#5746: 2.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="215.4" y1="54.0" x2="215.4" y2="117.0"/>
<circle class="nj-theme-dot nj-theme-dot--other" cx="215.4" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="215.4" y="50.0" text-anchor="middle">U</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-parse_canada nj-blog-tl-parse_canada-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-parse_canada">parse() canada.json: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-parse_canada-d">parse() canada.json: speedup over 3.12.0 at each of 317 commits, ending at 2.8x. Labeled steps, by theme: 4, 1, 3, 3, 3, 4.</desc>
<desc id="nj-blog-tl-parse_canada-d">parse() canada.json: speedup over 3.12.0 at each of 353 commits, ending at 2.8x. Labeled steps, by theme: 4, 1, 3, 3, 3, 4.</desc>
<text class="nj-charts-panel" x="8" y="18">parse() canada.json</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -10,35 +10,35 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">4&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.2 45.8,208.2 45.8,208.1 46.7,208.1 46.7,207.7 47.6,207.7 47.6,207.2 48.5,207.2 48.5,208.0 49.4,208.0 49.4,208.2 50.3,208.2 50.3,207.8 51.2,207.8 51.2,208.5 52.1,208.5 52.1,207.3 53.1,207.3 53.1,208.0 54.0,208.0 54.0,209.1 54.9,209.1 54.9,208.5 55.8,208.5 55.8,208.1 56.7,208.1 56.7,207.7 57.6,207.7 57.6,209.8 58.5,209.8 58.5,208.6 59.4,208.6 59.4,208.1 60.3,208.1 60.3,208.1 61.2,208.1 61.2,207.0 62.1,207.0 62.1,207.8 63.0,207.8 63.0,207.6 63.9,207.6 63.9,208.1 64.8,208.1 64.8,208.4 65.7,208.4 65.7,207.8 66.6,207.8 66.6,207.4 67.5,207.4 67.5,208.3 68.4,208.3 68.4,207.3 69.3,207.3 69.3,207.8 70.2,207.8 70.2,207.9 71.2,207.9 71.2,207.9 72.1,207.9 72.1,207.5 73.0,207.5 73.0,207.5 73.9,207.5 73.9,208.1 74.8,208.1 74.8,208.1 75.7,208.1 75.7,207.9 76.6,207.9 76.6,207.8 77.5,207.8 77.5,207.1 78.4,207.1 78.4,207.6 79.3,207.6 79.3,207.8 80.2,207.8 80.2,207.3 81.1,207.3 81.1,207.6 82.0,207.6 82.0,208.6 82.9,208.6 82.9,206.5 83.8,206.5 83.8,208.0 84.7,208.0 84.7,208.7 85.6,208.7 85.6,208.0 86.5,208.0 86.5,207.7 87.4,207.7 87.4,208.4 88.3,208.4 88.3,207.9 89.3,207.9 89.3,207.5 90.2,207.5 90.2,207.9 91.1,207.9 91.1,207.4 92.0,207.4 92.0,207.5 92.9,207.5 92.9,208.5 93.8,208.5 93.8,197.5 94.7,197.5 94.7,197.9 95.6,197.9 95.6,196.9 96.5,196.9 96.5,197.0 97.4,197.0 97.4,197.7 98.3,197.7 98.3,196.0 99.2,196.0 99.2,197.3 100.1,197.3 100.1,198.1 101.0,198.1 101.0,197.4 101.9,197.4 101.9,197.0 102.8,197.0 102.8,197.5 103.7,197.5 103.7,197.3 104.6,197.3 104.6,197.7 105.5,197.7 105.5,197.7 106.4,197.7 106.4,197.6 107.4,197.6 107.4,196.9 108.3,196.9 108.3,197.9 109.2,197.9 109.2,197.9 110.1,197.9 110.1,197.6 111.0,197.6 111.0,197.6 111.9,197.6 111.9,197.6 112.8,197.6 112.8,198.1 113.7,198.1 113.7,198.0 114.6,198.0 114.6,195.3 115.5,195.3 115.5,196.6 116.4,196.6 116.4,197.9 117.3,197.9 117.3,197.0 118.2,197.0 118.2,196.3 119.1,196.3 119.1,196.8 120.0,196.8 120.0,196.6 120.9,196.6 120.9,196.6 121.8,196.6 121.8,197.7 122.7,197.7 122.7,197.5 123.6,197.5 123.6,198.1 124.6,198.1 124.6,195.9 125.5,195.9 125.5,197.5 126.4,197.5 126.4,197.6 127.3,197.6 127.3,196.7 128.2,196.7 128.2,197.0 129.1,197.0 129.1,198.0 130.0,198.0 130.0,197.0 130.9,197.0 130.9,197.2 131.8,197.2 131.8,196.6 132.7,196.6 132.7,197.0 133.6,197.0 133.6,197.2 134.5,197.2 134.5,197.6 135.4,197.6 135.4,197.8 136.3,197.8 136.3,197.2 137.2,197.2 137.2,197.6 138.1,197.6 138.1,197.3 139.0,197.3 139.0,197.0 139.9,197.0 139.9,168.6 140.8,168.6 140.8,169.7 141.7,169.7 141.7,170.1 142.7,170.1 142.7,168.9 143.6,168.9 143.6,168.3 144.5,168.3 144.5,169.9 145.4,169.9 145.4,168.7 146.3,168.7 146.3,168.3 147.2,168.3 147.2,169.7 148.1,169.7 148.1,170.9 149.0,170.9 149.0,168.1 149.9,168.1 149.9,170.2 150.8,170.2 150.8,169.1 151.7,169.1 151.7,170.1 152.6,170.1 152.6,168.5 153.5,168.5 153.5,169.7 154.4,169.7 154.4,170.1 155.3,170.1 155.3,169.8 156.2,169.8 156.2,169.1 157.1,169.1 157.1,167.2 158.0,167.2 158.0,169.7 158.9,169.7 158.9,168.6 159.8,168.6 159.8,170.3 160.8,170.3 160.8,169.7 161.7,169.7 161.7,168.7 162.6,168.7 162.6,169.3 163.5,169.3 163.5,172.3 164.4,172.3 164.4,171.2 165.3,171.2 165.3,169.1 166.2,169.1 166.2,167.8 167.1,167.8 167.1,169.3 168.0,169.3 168.0,169.1 168.9,169.1 168.9,168.5 169.8,168.5 169.8,168.7 170.7,168.7 170.7,168.6 171.6,168.6 171.6,169.0 172.5,169.0 172.5,168.5 173.4,168.5 173.4,170.9 174.3,170.9 174.3,169.9 175.2,169.9 175.2,168.0 176.1,168.0 176.1,168.8 177.0,168.8 177.0,168.5 177.9,168.5 177.9,168.5 178.9,168.5 178.9,169.9 179.8,169.9 179.8,169.1 180.7,169.1 180.7,168.6 181.6,168.6 181.6,168.6 182.5,168.6 182.5,169.4 183.4,169.4 183.4,169.1 184.3,169.1 184.3,170.2 185.2,170.2 185.2,178.0 186.1,178.0 186.1,177.3 187.0,177.3 187.0,167.7 187.9,167.7 187.9,168.5 188.8,168.5 188.8,168.7 189.7,168.7 189.7,168.5 190.6,168.5 190.6,168.8 191.5,168.8 191.5,168.0 192.4,168.0 192.4,168.2 193.3,168.2 193.3,167.7 194.2,167.7 194.2,167.5 195.1,167.5 195.1,168.1 196.1,168.1 196.1,168.3 197.0,168.3 197.0,168.1 197.9,168.1 197.9,168.1 198.8,168.1 198.8,167.5 199.7,167.5 199.7,166.5 200.6,166.5 200.6,169.1 201.5,169.1 201.5,168.6 202.4,168.6 202.4,168.5 203.3,168.5 203.3,168.1 204.2,168.1 204.2,167.3 205.1,167.3 205.1,168.0 206.0,168.0 206.0,168.3 206.9,168.3 206.9,168.6 207.8,168.6 207.8,169.0 208.7,169.0 208.7,166.6 209.6,166.6 209.6,169.4 210.5,169.4 210.5,169.3 211.4,169.3 211.4,167.3 212.3,167.3 212.3,168.5 213.2,168.5 213.2,167.1 214.2,167.1 214.2,169.4 215.1,169.4 215.1,168.9 216.0,168.9 216.0,167.4 216.9,167.4 216.9,168.4 217.8,168.4 217.8,168.5 218.7,168.5 218.7,166.9 219.6,166.9 219.6,168.7 220.5,168.7 220.5,165.7 221.4,165.7 221.4,167.0 222.3,167.0 222.3,166.6 223.2,166.6 223.2,167.4 224.1,167.4 224.1,167.6 225.0,167.6 225.0,167.2 225.9,167.2 225.9,167.4 226.8,167.4 226.8,166.6 227.7,166.6 227.7,166.2 228.6,166.2 228.6,168.4 229.5,168.4 229.5,167.2 230.4,167.2 230.4,166.7 231.3,166.7 231.3,166.5 232.3,166.5 232.3,166.0 233.2,166.0 233.2,167.4 234.1,167.4 234.1,167.3 235.0,167.3 235.0,167.3 235.9Line truncated
<circle class="nj-charts-json-dot" cx="93.8" cy="197.5" r="3.5"><title>#5234: 1.11&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="93.8" y1="54.0" x2="93.8" y2="192.5"/>
<circle class="nj-theme-dot" cx="93.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="93.8" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="139.9" cy="168.6" r="3.5"><title>#5283: 1.47&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="139.9" y1="54.0" x2="139.9" y2="163.6"/>
<circle class="nj-theme-dot" cx="139.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="139.9" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="187.0" cy="167.7" r="3.5"><title>#5617: 1.48&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="187.0" y1="54.0" x2="187.0" y2="162.7"/>
<circle class="nj-theme-dot" cx="187.0" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="187.0" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="268.5" cy="139.8" r="3.5"><title>#5738: 1.95&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="268.5" y1="54.0" x2="268.5" y2="134.8"/>
<circle class="nj-theme-dot" cx="268.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="268.5" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="297.4" cy="127.4" r="3.5"><title>#5851: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="297.4" y1="54.0" x2="297.4" y2="122.4"/>
<circle class="nj-theme-dot" cx="297.4" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="297.4" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="312.8" cy="102.2" r="3.5"><title>#5882: 2.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="312.8" y1="36.0" x2="312.8" y2="97.2"/>
<circle class="nj-theme-dot" cx="312.8" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="312.8" y="32.0" text-anchor="middle">4</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.2 45.6,208.2 45.6,208.1 46.4,208.1 46.4,207.7 47.2,207.7 47.2,207.2 48.1,207.2 48.1,208.0 48.9,208.0 48.9,208.2 49.7,208.2 49.7,207.8 50.5,207.8 50.5,208.5 51.3,208.5 51.3,207.3 52.1,207.3 52.1,208.0 52.9,208.0 52.9,209.1 53.8,209.1 53.8,208.5 54.6,208.5 54.6,208.1 55.4,208.1 55.4,207.7 56.2,207.7 56.2,209.8 57.0,209.8 57.0,208.6 57.8,208.6 57.8,208.1 58.6,208.1 58.6,208.1 59.4,208.1 59.4,207.0 60.2,207.0 60.2,207.8 61.1,207.8 61.1,207.6 61.9,207.6 61.9,208.1 62.7,208.1 62.7,208.4 63.5,208.4 63.5,207.8 64.3,207.8 64.3,207.4 65.1,207.4 65.1,208.3 65.9,208.3 65.9,207.3 66.8,207.3 66.8,207.8 67.6,207.8 67.6,207.9 68.4,207.9 68.4,207.9 69.2,207.9 69.2,207.5 70.0,207.5 70.0,207.5 70.8,207.5 70.8,208.1 71.6,208.1 71.6,208.1 72.4,208.1 72.4,207.9 73.2,207.9 73.2,207.8 74.1,207.8 74.1,207.1 74.9,207.1 74.9,207.6 75.7,207.6 75.7,207.8 76.5,207.8 76.5,207.3 77.3,207.3 77.3,207.6 78.1,207.6 78.1,208.6 78.9,208.6 78.9,206.5 79.8,206.5 79.8,208.0 80.6,208.0 80.6,208.7 81.4,208.7 81.4,208.0 82.2,208.0 82.2,207.7 83.0,207.7 83.0,208.4 83.8,208.4 83.8,207.9 84.6,207.9 84.6,207.5 85.4,207.5 85.4,207.9 86.2,207.9 86.2,207.4 87.1,207.4 87.1,207.5 87.9,207.5 87.9,208.5 88.7,208.5 88.7,197.5 89.5,197.5 89.5,197.9 90.3,197.9 90.3,196.9 91.1,196.9 91.1,197.0 91.9,197.0 91.9,197.7 92.8,197.7 92.8,196.0 93.6,196.0 93.6,197.3 94.4,197.3 94.4,198.1 95.2,198.1 95.2,197.4 96.0,197.4 96.0,197.0 96.8,197.0 96.8,197.5 97.6,197.5 97.6,197.3 98.4,197.3 98.4,197.7 99.2,197.7 99.2,197.7 100.1,197.7 100.1,197.6 100.9,197.6 100.9,196.9 101.7,196.9 101.7,197.9 102.5,197.9 102.5,197.9 103.3,197.9 103.3,197.6 104.1,197.6 104.1,197.6 104.9,197.6 104.9,197.6 105.8,197.6 105.8,198.1 106.6,198.1 106.6,198.0 107.4,198.0 107.4,195.3 108.2,195.3 108.2,196.6 109.0,196.6 109.0,197.9 109.8,197.9 109.8,197.0 110.6,197.0 110.6,196.3 111.4,196.3 111.4,196.8 112.2,196.8 112.2,196.6 113.1,196.6 113.1,196.6 113.9,196.6 113.9,197.7 114.7,197.7 114.7,197.5 115.5,197.5 115.5,198.1 116.3,198.1 116.3,195.9 117.1,195.9 117.1,197.5 117.9,197.5 117.9,197.6 118.8,197.6 118.8,196.7 119.6,196.7 119.6,197.0 120.4,197.0 120.4,198.0 121.2,198.0 121.2,197.0 122.0,197.0 122.0,197.2 122.8,197.2 122.8,196.6 123.6,196.6 123.6,197.0 124.4,197.0 124.4,197.2 125.3,197.2 125.3,197.6 126.1,197.6 126.1,197.8 126.9,197.8 126.9,197.2 127.7,197.2 127.7,197.6 128.5,197.6 128.5,197.3 129.3,197.3 129.3,197.0 130.1,197.0 130.1,168.6 130.9,168.6 130.9,169.7 131.8,169.7 131.8,170.1 132.6,170.1 132.6,168.9 133.4,168.9 133.4,168.3 134.2,168.3 134.2,169.9 135.0,169.9 135.0,168.7 135.8,168.7 135.8,168.3 136.6,168.3 136.6,169.7 137.4,169.7 137.4,170.9 138.2,170.9 138.2,168.1 139.1,168.1 139.1,170.2 139.9,170.2 139.9,169.1 140.7,169.1 140.7,170.1 141.5,170.1 141.5,168.5 142.3,168.5 142.3,169.7 143.1,169.7 143.1,170.1 143.9,170.1 143.9,169.8 144.8,169.8 144.8,169.1 145.6,169.1 145.6,167.2 146.4,167.2 146.4,169.7 147.2,169.7 147.2,168.6 148.0,168.6 148.0,170.3 148.8,170.3 148.8,169.7 149.6,169.7 149.6,168.7 150.4,168.7 150.4,169.3 151.2,169.3 151.2,172.3 152.1,172.3 152.1,171.2 152.9,171.2 152.9,169.1 153.7,169.1 153.7,167.8 154.5,167.8 154.5,169.3 155.3,169.3 155.3,169.1 156.1,169.1 156.1,168.5 156.9,168.5 156.9,168.7 157.8,168.7 157.8,168.6 158.6,168.6 158.6,169.0 159.4,169.0 159.4,168.5 160.2,168.5 160.2,170.9 161.0,170.9 161.0,169.9 161.8,169.9 161.8,168.0 162.6,168.0 162.6,168.8 163.4,168.8 163.4,168.5 164.2,168.5 164.2,168.5 165.1,168.5 165.1,169.9 165.9,169.9 165.9,169.1 166.7,169.1 166.7,168.6 167.5,168.6 167.5,168.6 168.3,168.6 168.3,169.4 169.1,169.4 169.1,169.1 169.9,169.1 169.9,170.2 170.8,170.2 170.8,178.0 171.6,178.0 171.6,177.3 172.4,177.3 172.4,167.7 173.2,167.7 173.2,168.5 174.0,168.5 174.0,168.7 174.8,168.7 174.8,168.5 175.6,168.5 175.6,168.8 176.4,168.8 176.4,168.0 177.2,168.0 177.2,168.2 178.1,168.2 178.1,167.7 178.9,167.7 178.9,167.5 179.7,167.5 179.7,168.1 180.5,168.1 180.5,168.3 181.3,168.3 181.3,168.1 182.1,168.1 182.1,168.1 182.9,168.1 182.9,167.5 183.8,167.5 183.8,166.5 184.6,166.5 184.6,169.1 185.4,169.1 185.4,168.6 186.2,168.6 186.2,168.5 187.0,168.5 187.0,168.1 187.8,168.1 187.8,167.3 188.6,167.3 188.6,168.0 189.4,168.0 189.4,168.3 190.2,168.3 190.2,168.6 191.1,168.6 191.1,169.0 191.9,169.0 191.9,166.6 192.7,166.6 192.7,169.4 193.5,169.4 193.5,169.3 194.3,169.3 194.3,167.3 195.1,167.3 195.1,168.5 195.9,168.5 195.9,167.1 196.8,167.1 196.8,169.4 197.6,169.4 197.6,168.9 198.4,168.9 198.4,167.4 199.2,167.4 199.2,168.4 200.0,168.4 200.0,168.5 200.8,168.5 200.8,166.9 201.6,166.9 201.6,168.7 202.4,168.7 202.4,165.7 203.2,165.7 203.2,167.0 204.1,167.0 204.1,166.6 204.9,166.6 204.9,167.4 205.7,167.4 205.7,167.6 206.5,167.6 206.5,167.2 207.3,167.2 207.3,167.4 208.1,167.4 208.1,166.6 208.9,166.6 208.9,166.2 209.8,166.2 209.8,168.4 210.6,168.4 210.6,167.2 211.4,167.2 211.4,166.7 212.2,166.7 212.2,166.5 213.0,166.5 213.0,166.0 213.8,166.0 213.8,167.4 214.6,167.4 214.6,167.3 215.4,167.3 215.4,167.3 216.2,167.3 216.2,1Line truncated
<circle class="nj-charts-json-dot" cx="88.7" cy="197.5" r="3.5"><title>#5234: 1.11&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="88.7" y1="54.0" x2="88.7" y2="192.5"/>
<circle class="nj-theme-dot" cx="88.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="88.7" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="130.1" cy="168.6" r="3.5"><title>#5283: 1.47&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="130.1" y1="54.0" x2="130.1" y2="163.6"/>
<circle class="nj-theme-dot" cx="130.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="130.1" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="172.4" cy="167.7" r="3.5"><title>#5617: 1.48&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="172.4" y1="54.0" x2="172.4" y2="162.7"/>
<circle class="nj-theme-dot" cx="172.4" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="172.4" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="245.5" cy="139.8" r="3.5"><title>#5738: 1.95&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="245.5" y1="54.0" x2="245.5" y2="134.8"/>
<circle class="nj-theme-dot" cx="245.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="245.5" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="271.5" cy="127.4" r="3.5"><title>#5851: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="271.5" y1="54.0" x2="271.5" y2="122.4"/>
<circle class="nj-theme-dot" cx="271.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="271.5" y="50.0" text-anchor="middle">3</text>
<circle class="nj-charts-json-dot" cx="285.3" cy="102.2" r="3.5"><title>#5882: 2.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="285.3" y1="36.0" x2="285.3" y2="97.2"/>
<circle class="nj-theme-dot" cx="285.3" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="285.3" y="32.0" text-anchor="middle">4</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-parse_citm nj-blog-tl-parse_citm-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-parse_citm">parse() citm_catalog.json: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-parse_citm-d">parse() citm_catalog.json: speedup over 3.12.0 at each of 317 commits, ending at 3.4x. Labeled steps, by theme: 4, 1, 4, 4, 2, 4.</desc>
<desc id="nj-blog-tl-parse_citm-d">parse() citm_catalog.json: speedup over 3.12.0 at each of 353 commits, ending at 3.3x. Labeled steps, by theme: 4, 1, 4, 4, 2, 4.</desc>
<text class="nj-charts-panel" x="8" y="18">parse() citm_catalog.json</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -12,34 +12,34 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">8&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.2 45.8,208.2 45.8,207.8 46.7,207.8 46.7,207.5 47.6,207.5 47.6,206.5 48.5,206.5 48.5,208.3 49.4,208.3 49.4,207.3 50.3,207.3 50.3,206.8 51.2,206.8 51.2,207.8 52.1,207.8 52.1,206.8 53.1,206.8 53.1,207.3 54.0,207.3 54.0,207.6 54.9,207.6 54.9,207.8 55.8,207.8 55.8,207.0 56.7,207.0 56.7,207.3 57.6,207.3 57.6,207.2 58.5,207.2 58.5,207.4 59.4,207.4 59.4,207.5 60.3,207.5 60.3,207.4 61.2,207.4 61.2,206.6 62.1,206.6 62.1,207.6 63.0,207.6 63.0,207.6 63.9,207.6 63.9,207.2 64.8,207.2 64.8,207.0 65.7,207.0 65.7,207.6 66.6,207.6 66.6,206.7 67.5,206.7 67.5,207.4 68.4,207.4 68.4,206.8 69.3,206.8 69.3,207.3 70.2,207.3 70.2,207.7 71.2,207.7 71.2,207.9 72.1,207.9 72.1,207.2 73.0,207.2 73.0,206.4 73.9,206.4 73.9,207.6 74.8,207.6 74.8,206.4 75.7,206.4 75.7,208.0 76.6,208.0 76.6,207.4 77.5,207.4 77.5,206.5 78.4,206.5 78.4,207.5 79.3,207.5 79.3,207.2 80.2,207.2 80.2,206.9 81.1,206.9 81.1,207.6 82.0,207.6 82.0,207.6 82.9,207.6 82.9,207.0 83.8,207.0 83.8,206.9 84.7,206.9 84.7,208.0 85.6,208.0 85.6,207.6 86.5,207.6 86.5,206.6 87.4,206.6 87.4,206.8 88.3,206.8 88.3,207.3 89.3,207.3 89.3,206.9 90.2,206.9 90.2,207.6 91.1,207.6 91.1,207.1 92.0,207.1 92.0,207.6 92.9,207.6 92.9,207.9 93.8,207.9 93.8,178.2 94.7,178.2 94.7,177.5 95.6,177.5 95.6,177.7 96.5,177.7 96.5,177.6 97.4,177.6 97.4,177.7 98.3,177.7 98.3,177.1 99.2,177.1 99.2,176.8 100.1,176.8 100.1,177.7 101.0,177.7 101.0,177.6 101.9,177.6 101.9,176.8 102.8,176.8 102.8,177.8 103.7,177.8 103.7,177.0 104.6,177.0 104.6,176.8 105.5,176.8 105.5,178.0 106.4,178.0 106.4,178.1 107.4,178.1 107.4,177.6 108.3,177.6 108.3,177.6 109.2,177.6 109.2,177.4 110.1,177.4 110.1,177.6 111.0,177.6 111.0,177.8 111.9,177.8 111.9,177.5 112.8,177.5 112.8,177.9 113.7,177.9 113.7,177.7 114.6,177.7 114.6,175.9 115.5,175.9 115.5,177.5 116.4,177.5 116.4,177.6 117.3,177.6 117.3,177.6 118.2,177.6 118.2,176.9 119.1,176.9 119.1,177.5 120.0,177.5 120.0,177.4 120.9,177.4 120.9,177.4 121.8,177.4 121.8,176.9 122.7,176.9 122.7,177.9 123.6,177.9 123.6,177.3 124.6,177.3 124.6,176.6 125.5,176.6 125.5,177.4 126.4,177.4 126.4,177.5 127.3,177.5 127.3,177.5 128.2,177.5 128.2,177.4 129.1,177.4 129.1,177.0 130.0,177.0 130.0,177.7 130.9,177.7 130.9,176.2 131.8,176.2 131.8,176.9 132.7,176.9 132.7,177.5 133.6,177.5 133.6,177.8 134.5,177.8 134.5,177.8 135.4,177.8 135.4,177.9 136.3,177.9 136.3,177.3 137.2,177.3 137.2,177.5 138.1,177.5 138.1,177.4 139.0,177.4 139.0,177.1 139.9,177.1 139.9,162.5 140.8,162.5 140.8,162.2 141.7,162.2 141.7,161.8 142.7,161.8 142.7,162.2 143.6,162.2 143.6,161.2 144.5,161.2 144.5,160.7 145.4,160.7 145.4,159.4 146.3,159.4 146.3,160.3 147.2,160.3 147.2,160.4 148.1,160.4 148.1,160.6 149.0,160.6 149.0,159.5 149.9,159.5 149.9,160.4 150.8,160.4 150.8,159.6 151.7,159.6 151.7,160.0 152.6,160.0 152.6,159.9 153.5,159.9 153.5,160.2 154.4,160.2 154.4,159.6 155.3,159.6 155.3,160.8 156.2,160.8 156.2,160.1 157.1,160.1 157.1,159.1 158.0,159.1 158.0,159.7 158.9,159.7 158.9,159.9 159.8,159.9 159.8,160.5 160.8,160.5 160.8,160.2 161.7,160.2 161.7,159.9 162.6,159.9 162.6,160.5 163.5,160.5 163.5,160.5 164.4,160.5 164.4,160.6 165.3,160.6 165.3,159.7 166.2,159.7 166.2,159.5 167.1,159.5 167.1,160.0 168.0,160.0 168.0,160.2 168.9,160.2 168.9,160.0 169.8,160.0 169.8,160.6 170.7,160.6 170.7,159.9 171.6,159.9 171.6,160.2 172.5,160.2 172.5,160.1 173.4,160.1 173.4,160.8 174.3,160.8 174.3,159.2 175.2,159.2 175.2,159.6 176.1,159.6 176.1,159.2 177.0,159.2 177.0,160.0 177.9,160.0 177.9,159.4 178.9,159.4 178.9,159.6 179.8,159.6 179.8,159.5 180.7,159.5 180.7,160.1 181.6,160.1 181.6,159.0 182.5,159.0 182.5,159.4 183.4,159.4 183.4,160.2 184.3,160.2 184.3,161.4 185.2,161.4 185.2,161.7 186.1,161.7 186.1,161.6 187.0,161.6 187.0,160.3 187.9,160.3 187.9,161.1 188.8,161.1 188.8,161.2 189.7,161.2 189.7,161.7 190.6,161.7 190.6,161.2 191.5,161.2 191.5,160.4 192.4,160.4 192.4,161.6 193.3,161.6 193.3,160.6 194.2,160.6 194.2,161.4 195.1,161.4 195.1,161.3 196.1,161.3 196.1,161.3 197.0,161.3 197.0,161.7 197.9,161.7 197.9,161.2 198.8,161.2 198.8,160.1 199.7,160.1 199.7,160.9 200.6,160.9 200.6,161.5 201.5,161.5 201.5,160.6 202.4,160.6 202.4,161.9 203.3,161.9 203.3,161.4 204.2,161.4 204.2,160.1 205.1,160.1 205.1,160.6 206.0,160.6 206.0,162.0 206.9,162.0 206.9,161.5 207.8,161.5 207.8,162.0 208.7,162.0 208.7,161.3 209.6,161.3 209.6,162.3 210.5,162.3 210.5,162.1 211.4,162.1 211.4,160.8 212.3,160.8 212.3,161.5 213.2,161.5 213.2,161.4 214.2,161.4 214.2,162.2 215.1,162.2 215.1,161.4 216.0,161.4 216.0,161.4 216.9,161.4 216.9,161.8 217.8,161.8 217.8,160.7 218.7,160.7 218.7,160.5 219.6,160.5 219.6,160.5 220.5,160.5 220.5,159.3 221.4,159.3 221.4,159.4 222.3,159.4 222.3,160.4 223.2,160.4 223.2,160.1 224.1,160.1 224.1,160.4 225.0,160.4 225.0,160.4 225.9,160.4 225.9,160.8 226.8,160.8 226.8,159.8 227.7,159.8 227.7,159.4 228.6,159.4 228.6,160.5 229.5,160.5 229.5,160.1 230.4,160.1 230.4,160.7 231.3,160.7 231.3,160.6 232.3,160.6 232.3,159.5 233.2,159.5 233.2,161.1 234.1,161.1 234.1,161.3 235.0,161.3 235.0,161.0 235.9Line truncated
<circle class="nj-charts-json-dot" cx="93.8" cy="178.2" r="3.5"><title>#5234: 1.55&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="93.8" y1="54.0" x2="93.8" y2="173.2"/>
<circle class="nj-theme-dot" cx="93.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="93.8" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="139.9" cy="162.5" r="3.5"><title>#5283: 1.95&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="139.9" y1="54.0" x2="139.9" y2="157.5"/>
<circle class="nj-theme-dot" cx="139.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="139.9" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="243.1" cy="155.4" r="3.5"><title>#5592: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="243.1" y1="54.0" x2="243.1" y2="150.4"/>
<circle class="nj-theme-dot" cx="243.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="243.1" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="265.7" cy="147.1" r="3.5"><title>#5809: 2.4&#215;</title></circle>
<circle class="nj-charts-json-dot" cx="266.6" cy="138.2" r="3.5"><title>#5810: 2.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="266.6" y1="36.0" x2="266.6" y2="133.2"/>
<circle class="nj-theme-dot" cx="257.6" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="257.6" y="32.0" text-anchor="middle">4</text>
<circle class="nj-theme-dot" cx="275.6" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="275.6" y="32.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="312.8" cy="125.7" r="3.5"><title>#5882: 3.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="312.8" y1="54.0" x2="312.8" y2="120.7"/>
<circle class="nj-theme-dot" cx="312.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="312.8" y="50.0" text-anchor="middle">4</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.2 45.6,208.2 45.6,207.8 46.4,207.8 46.4,207.5 47.2,207.5 47.2,206.5 48.1,206.5 48.1,208.3 48.9,208.3 48.9,207.3 49.7,207.3 49.7,206.8 50.5,206.8 50.5,207.8 51.3,207.8 51.3,206.8 52.1,206.8 52.1,207.3 52.9,207.3 52.9,207.6 53.8,207.6 53.8,207.8 54.6,207.8 54.6,207.0 55.4,207.0 55.4,207.3 56.2,207.3 56.2,207.2 57.0,207.2 57.0,207.4 57.8,207.4 57.8,207.5 58.6,207.5 58.6,207.4 59.4,207.4 59.4,206.6 60.2,206.6 60.2,207.6 61.1,207.6 61.1,207.6 61.9,207.6 61.9,207.2 62.7,207.2 62.7,207.0 63.5,207.0 63.5,207.6 64.3,207.6 64.3,206.7 65.1,206.7 65.1,207.4 65.9,207.4 65.9,206.8 66.8,206.8 66.8,207.3 67.6,207.3 67.6,207.7 68.4,207.7 68.4,207.9 69.2,207.9 69.2,207.2 70.0,207.2 70.0,206.4 70.8,206.4 70.8,207.6 71.6,207.6 71.6,206.4 72.4,206.4 72.4,208.0 73.2,208.0 73.2,207.4 74.1,207.4 74.1,206.5 74.9,206.5 74.9,207.5 75.7,207.5 75.7,207.2 76.5,207.2 76.5,206.9 77.3,206.9 77.3,207.6 78.1,207.6 78.1,207.6 78.9,207.6 78.9,207.0 79.8,207.0 79.8,206.9 80.6,206.9 80.6,208.0 81.4,208.0 81.4,207.6 82.2,207.6 82.2,206.6 83.0,206.6 83.0,206.8 83.8,206.8 83.8,207.3 84.6,207.3 84.6,206.9 85.4,206.9 85.4,207.6 86.2,207.6 86.2,207.1 87.1,207.1 87.1,207.6 87.9,207.6 87.9,207.9 88.7,207.9 88.7,178.2 89.5,178.2 89.5,177.5 90.3,177.5 90.3,177.7 91.1,177.7 91.1,177.6 91.9,177.6 91.9,177.7 92.8,177.7 92.8,177.1 93.6,177.1 93.6,176.8 94.4,176.8 94.4,177.7 95.2,177.7 95.2,177.6 96.0,177.6 96.0,176.8 96.8,176.8 96.8,177.8 97.6,177.8 97.6,177.0 98.4,177.0 98.4,176.8 99.2,176.8 99.2,178.0 100.1,178.0 100.1,178.1 100.9,178.1 100.9,177.6 101.7,177.6 101.7,177.6 102.5,177.6 102.5,177.4 103.3,177.4 103.3,177.6 104.1,177.6 104.1,177.8 104.9,177.8 104.9,177.5 105.8,177.5 105.8,177.9 106.6,177.9 106.6,177.7 107.4,177.7 107.4,175.9 108.2,175.9 108.2,177.5 109.0,177.5 109.0,177.6 109.8,177.6 109.8,177.6 110.6,177.6 110.6,176.9 111.4,176.9 111.4,177.5 112.2,177.5 112.2,177.4 113.1,177.4 113.1,177.4 113.9,177.4 113.9,176.9 114.7,176.9 114.7,177.9 115.5,177.9 115.5,177.3 116.3,177.3 116.3,176.6 117.1,176.6 117.1,177.4 117.9,177.4 117.9,177.5 118.8,177.5 118.8,177.5 119.6,177.5 119.6,177.4 120.4,177.4 120.4,177.0 121.2,177.0 121.2,177.7 122.0,177.7 122.0,176.2 122.8,176.2 122.8,176.9 123.6,176.9 123.6,177.5 124.4,177.5 124.4,177.8 125.3,177.8 125.3,177.8 126.1,177.8 126.1,177.9 126.9,177.9 126.9,177.3 127.7,177.3 127.7,177.5 128.5,177.5 128.5,177.4 129.3,177.4 129.3,177.1 130.1,177.1 130.1,162.5 130.9,162.5 130.9,162.2 131.8,162.2 131.8,161.8 132.6,161.8 132.6,162.2 133.4,162.2 133.4,161.2 134.2,161.2 134.2,160.7 135.0,160.7 135.0,159.4 135.8,159.4 135.8,160.3 136.6,160.3 136.6,160.4 137.4,160.4 137.4,160.6 138.2,160.6 138.2,159.5 139.1,159.5 139.1,160.4 139.9,160.4 139.9,159.6 140.7,159.6 140.7,160.0 141.5,160.0 141.5,159.9 142.3,159.9 142.3,160.2 143.1,160.2 143.1,159.6 143.9,159.6 143.9,160.8 144.8,160.8 144.8,160.1 145.6,160.1 145.6,159.1 146.4,159.1 146.4,159.7 147.2,159.7 147.2,159.9 148.0,159.9 148.0,160.5 148.8,160.5 148.8,160.2 149.6,160.2 149.6,159.9 150.4,159.9 150.4,160.5 151.2,160.5 151.2,160.5 152.1,160.5 152.1,160.6 152.9,160.6 152.9,159.7 153.7,159.7 153.7,159.5 154.5,159.5 154.5,160.0 155.3,160.0 155.3,160.2 156.1,160.2 156.1,160.0 156.9,160.0 156.9,160.6 157.8,160.6 157.8,159.9 158.6,159.9 158.6,160.2 159.4,160.2 159.4,160.1 160.2,160.1 160.2,160.8 161.0,160.8 161.0,159.2 161.8,159.2 161.8,159.6 162.6,159.6 162.6,159.2 163.4,159.2 163.4,160.0 164.2,160.0 164.2,159.4 165.1,159.4 165.1,159.6 165.9,159.6 165.9,159.5 166.7,159.5 166.7,160.1 167.5,160.1 167.5,159.0 168.3,159.0 168.3,159.4 169.1,159.4 169.1,160.2 169.9,160.2 169.9,161.4 170.8,161.4 170.8,161.7 171.6,161.7 171.6,161.6 172.4,161.6 172.4,160.3 173.2,160.3 173.2,161.1 174.0,161.1 174.0,161.2 174.8,161.2 174.8,161.7 175.6,161.7 175.6,161.2 176.4,161.2 176.4,160.4 177.2,160.4 177.2,161.6 178.1,161.6 178.1,160.6 178.9,160.6 178.9,161.4 179.7,161.4 179.7,161.3 180.5,161.3 180.5,161.3 181.3,161.3 181.3,161.7 182.1,161.7 182.1,161.2 182.9,161.2 182.9,160.1 183.8,160.1 183.8,160.9 184.6,160.9 184.6,161.5 185.4,161.5 185.4,160.6 186.2,160.6 186.2,161.9 187.0,161.9 187.0,161.4 187.8,161.4 187.8,160.1 188.6,160.1 188.6,160.6 189.4,160.6 189.4,162.0 190.2,162.0 190.2,161.5 191.1,161.5 191.1,162.0 191.9,162.0 191.9,161.3 192.7,161.3 192.7,162.3 193.5,162.3 193.5,162.1 194.3,162.1 194.3,160.8 195.1,160.8 195.1,161.5 195.9,161.5 195.9,161.4 196.8,161.4 196.8,162.2 197.6,162.2 197.6,161.4 198.4,161.4 198.4,161.4 199.2,161.4 199.2,161.8 200.0,161.8 200.0,160.7 200.8,160.7 200.8,160.5 201.6,160.5 201.6,160.5 202.4,160.5 202.4,159.3 203.2,159.3 203.2,159.4 204.1,159.4 204.1,160.4 204.9,160.4 204.9,160.1 205.7,160.1 205.7,160.4 206.5,160.4 206.5,160.4 207.3,160.4 207.3,160.8 208.1,160.8 208.1,159.8 208.9,159.8 208.9,159.4 209.8,159.4 209.8,160.5 210.6,160.5 210.6,160.1 211.4,160.1 211.4,160.7 212.2,160.7 212.2,160.6 213.0,160.6 213.0,159.5 213.8,159.5 213.8,161.1 214.6,161.1 214.6,161.3 215.4,161.3 215.4,161.0 216.2,161.0 216.2,1Line truncated
<circle class="nj-charts-json-dot" cx="88.7" cy="178.2" r="3.5"><title>#5234: 1.55&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="88.7" y1="54.0" x2="88.7" y2="173.2"/>
<circle class="nj-theme-dot" cx="88.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="88.7" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="130.1" cy="162.5" r="3.5"><title>#5283: 1.95&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="130.1" y1="54.0" x2="130.1" y2="157.5"/>
<circle class="nj-theme-dot" cx="130.1" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="130.1" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="222.8" cy="155.4" r="3.5"><title>#5592: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="222.8" y1="54.0" x2="222.8" y2="150.4"/>
<circle class="nj-theme-dot" cx="222.8" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="222.8" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="243.1" cy="147.1" r="3.5"><title>#5809: 2.4&#215;</title></circle>
<circle class="nj-charts-json-dot" cx="243.9" cy="138.2" r="3.5"><title>#5810: 2.8&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="243.9" y1="36.0" x2="243.9" y2="133.2"/>
<circle class="nj-theme-dot" cx="234.9" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="234.9" y="32.0" text-anchor="middle">4</text>
<circle class="nj-theme-dot" cx="252.9" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="252.9" y="32.0" text-anchor="middle">2</text>
<circle class="nj-charts-json-dot" cx="285.3" cy="125.7" r="3.5"><title>#5882: 3.3&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="285.3" y1="54.0" x2="285.3" y2="120.7"/>
<circle class="nj-theme-dot" cx="285.3" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="285.3" y="50.0" text-anchor="middle">4</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-parse_twitter_ifstream nj-blog-tl-parse_twitter_ifstream-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-parse_twitter_ifstream">parse() twitter.json, std::ifstream: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-parse_twitter_ifstream-d">parse() twitter.json, std::ifstream: speedup over 3.12.0 at each of 317 commits, ending at 2.2x. Labeled steps, by theme: 1, 1.</desc>
<desc id="nj-blog-tl-parse_twitter_ifstream-d">parse() twitter.json, std::ifstream: speedup over 3.12.0 at each of 353 commits, ending at 2.2x. Labeled steps, by theme: 1, 1.</desc>
<text class="nj-charts-panel" x="8" y="18">parse() twitter.json, std::ifstream</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -10,19 +10,19 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">4&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,209.3 45.8,209.3 45.8,206.6 46.7,206.6 46.7,208.3 47.6,208.3 47.6,205.9 48.5,205.9 48.5,209.3 49.4,209.3 49.4,208.3 50.3,208.3 50.3,207.9 51.2,207.9 51.2,209.4 52.1,209.4 52.1,205.8 53.1,205.8 53.1,206.7 54.0,206.7 54.0,209.2 54.9,209.2 54.9,208.1 55.8,208.1 55.8,206.9 56.7,206.9 56.7,207.5 57.6,207.5 57.6,207.5 58.5,207.5 58.5,207.6 59.4,207.6 59.4,206.9 60.3,206.9 60.3,206.9 61.2,206.9 61.2,208.4 62.1,208.4 62.1,208.6 63.0,208.6 63.0,209.1 63.9,209.1 63.9,207.7 64.8,207.7 64.8,207.0 65.7,207.0 65.7,206.7 66.6,206.7 66.6,206.1 67.5,206.1 67.5,207.5 68.4,207.5 68.4,206.4 69.3,206.4 69.3,206.7 70.2,206.7 70.2,206.8 71.2,206.8 71.2,209.3 72.1,209.3 72.1,206.7 73.0,206.7 73.0,206.8 73.9,206.8 73.9,206.6 74.8,206.6 74.8,206.8 75.7,206.8 75.7,209.2 76.6,209.2 76.6,207.6 77.5,207.6 77.5,205.9 78.4,205.9 78.4,209.1 79.3,209.1 79.3,206.6 80.2,206.6 80.2,207.4 81.1,207.4 81.1,207.0 82.0,207.0 82.0,209.1 82.9,209.1 82.9,205.8 83.8,205.8 83.8,206.9 84.7,206.9 84.7,208.0 85.6,208.0 85.6,208.5 86.5,208.5 86.5,206.6 87.4,206.6 87.4,206.0 88.3,206.0 88.3,207.9 89.3,207.9 89.3,206.6 90.2,206.6 90.2,206.5 91.1,206.5 91.1,206.6 92.0,206.6 92.0,207.2 92.9,207.2 92.9,208.0 93.8,208.0 93.8,208.1 94.7,208.1 94.7,206.7 95.6,206.7 95.6,207.8 96.5,207.8 96.5,206.7 97.4,206.7 97.4,208.1 98.3,208.1 98.3,205.9 99.2,205.9 99.2,206.8 100.1,206.8 100.1,208.0 101.0,208.0 101.0,207.3 101.9,207.3 101.9,206.7 102.8,206.7 102.8,209.3 103.7,209.3 103.7,206.5 104.6,206.5 104.6,207.2 105.5,207.2 105.5,208.2 106.4,208.2 106.4,209.3 107.4,209.3 107.4,207.8 108.3,207.8 108.3,206.9 109.2,206.9 109.2,206.7 110.1,206.7 110.1,209.0 111.0,209.0 111.0,208.0 111.9,208.0 111.9,208.1 112.8,208.1 112.8,209.1 113.7,209.1 113.7,208.1 114.6,208.1 114.6,205.6 115.5,205.6 115.5,207.0 116.4,207.0 116.4,206.7 117.3,206.7 117.3,207.9 118.2,207.9 118.2,206.7 119.1,206.7 119.1,206.9 120.0,206.9 120.0,206.8 120.9,206.8 120.9,206.4 121.8,206.4 121.8,207.1 122.7,207.1 122.7,208.6 123.6,208.6 123.6,208.7 124.6,208.7 124.6,206.6 125.5,206.6 125.5,209.3 126.4,209.3 126.4,208.0 127.3,208.0 127.3,206.7 128.2,206.7 128.2,207.7 129.1,207.7 129.1,206.9 130.0,206.9 130.0,208.8 130.9,208.8 130.9,208.7 131.8,208.7 131.8,207.7 132.7,207.7 132.7,208.8 133.6,208.8 133.6,207.8 134.5,207.8 134.5,210.3 135.4,210.3 135.4,208.9 136.3,208.9 136.3,208.9 137.2,208.9 137.2,209.0 138.1,209.0 138.1,208.0 139.0,208.0 139.0,207.7 139.9,207.7 139.9,208.3 140.8,208.3 140.8,207.0 141.7,207.0 141.7,207.2 142.7,207.2 142.7,207.5 143.6,207.5 143.6,208.0 144.5,208.0 144.5,207.6 145.4,207.6 145.4,207.9 146.3,207.9 146.3,207.6 147.2,207.6 147.2,208.5 148.1,208.5 148.1,209.2 149.0,209.2 149.0,206.3 149.9,206.3 149.9,208.7 150.8,208.7 150.8,207.6 151.7,207.6 151.7,207.4 152.6,207.4 152.6,207.5 153.5,207.5 153.5,209.0 154.4,209.0 154.4,206.9 155.3,206.9 155.3,209.3 156.2,209.3 156.2,209.9 157.1,209.9 157.1,207.0 158.0,207.0 158.0,207.3 158.9,207.3 158.9,208.1 159.8,208.1 159.8,209.8 160.8,209.8 160.8,208.1 161.7,208.1 161.7,208.1 162.6,208.1 162.6,208.5 163.5,208.5 163.5,208.2 164.4,208.2 164.4,210.4 165.3,210.4 165.3,207.7 166.2,207.7 166.2,207.2 167.1,207.2 167.1,206.7 168.0,206.7 168.0,209.9 168.9,209.9 168.9,206.6 169.8,206.6 169.8,209.9 170.7,209.9 170.7,208.8 171.6,208.8 171.6,208.8 172.5,208.8 172.5,209.5 173.4,209.5 173.4,208.9 174.3,208.9 174.3,206.4 175.2,206.4 175.2,207.2 176.1,207.2 176.1,207.0 177.0,207.0 177.0,207.2 177.9,207.2 177.9,206.6 178.9,206.6 178.9,207.2 179.8,207.2 179.8,208.0 180.7,208.0 180.7,207.6 181.6,207.6 181.6,207.9 182.5,207.9 182.5,207.5 183.4,207.5 183.4,205.6 184.3,205.6 184.3,208.0 185.2,208.0 185.2,209.7 186.1,209.7 186.1,207.9 187.0,207.9 187.0,207.6 187.9,207.6 187.9,208.5 188.8,208.5 188.8,207.9 189.7,207.9 189.7,210.4 190.6,210.4 190.6,206.7 191.5,206.7 191.5,207.7 192.4,207.7 192.4,209.2 193.3,209.2 193.3,206.8 194.2,206.8 194.2,209.3 195.1,209.3 195.1,208.0 196.1,208.0 196.1,208.0 197.0,208.0 197.0,207.9 197.9,207.9 197.9,208.2 198.8,208.2 198.8,207.9 199.7,207.9 199.7,207.0 200.6,207.0 200.6,208.8 201.5,208.8 201.5,208.0 202.4,208.0 202.4,208.0 203.3,208.0 203.3,209.2 204.2,209.2 204.2,206.7 205.1,206.7 205.1,206.7 206.0,206.7 206.0,208.5 206.9,208.5 206.9,208.9 207.8,208.9 207.8,210.1 208.7,210.1 208.7,206.4 209.6,206.4 209.6,209.4 210.5,209.4 210.5,210.1 211.4,210.1 211.4,207.6 212.3,207.6 212.3,209.5 213.2,209.5 213.2,208.7 214.2,208.7 214.2,211.1 215.1,211.1 215.1,210.1 216.0,210.1 216.0,211.7 216.9,211.7 216.9,208.8 217.8,208.8 217.8,209.2 218.7,209.2 218.7,207.7 219.6,207.7 219.6,208.1 220.5,208.1 220.5,206.4 221.4,206.4 221.4,206.7 222.3,206.7 222.3,207.3 223.2,207.3 223.2,207.8 224.1,207.8 224.1,208.7 225.0,208.7 225.0,210.1 225.9,210.1 225.9,210.0 226.8,210.0 226.8,206.9 227.7,206.9 227.7,209.0 228.6,209.0 228.6,208.7 229.5,208.7 229.5,209.1 230.4,209.1 230.4,208.6 231.3,208.6 231.3,208.9 232.3,208.9 232.3,207.3 233.2,207.3 233.2,208.9 234.1,208.9 234.1,209.2 235.0,209.2 235.0,207.3 235.9Line truncated
<circle class="nj-charts-json-dot" cx="287.5" cy="138.8" r="3.5"><title>#5828: 1.97&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="287.5" y1="54.0" x2="287.5" y2="133.8"/>
<circle class="nj-theme-dot" cx="287.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="287.5" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="306.5" cy="127.0" r="3.5"><title>#5884: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="306.5" y1="54.0" x2="306.5" y2="122.0"/>
<circle class="nj-theme-dot" cx="306.5" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="306.5" y="50.0" text-anchor="middle">1</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,209.3 45.6,209.3 45.6,206.6 46.4,206.6 46.4,208.3 47.2,208.3 47.2,205.9 48.1,205.9 48.1,209.3 48.9,209.3 48.9,208.3 49.7,208.3 49.7,207.9 50.5,207.9 50.5,209.4 51.3,209.4 51.3,205.8 52.1,205.8 52.1,206.7 52.9,206.7 52.9,209.2 53.8,209.2 53.8,208.1 54.6,208.1 54.6,206.9 55.4,206.9 55.4,207.5 56.2,207.5 56.2,207.5 57.0,207.5 57.0,207.6 57.8,207.6 57.8,206.9 58.6,206.9 58.6,206.9 59.4,206.9 59.4,208.4 60.2,208.4 60.2,208.6 61.1,208.6 61.1,209.1 61.9,209.1 61.9,207.7 62.7,207.7 62.7,207.0 63.5,207.0 63.5,206.7 64.3,206.7 64.3,206.1 65.1,206.1 65.1,207.5 65.9,207.5 65.9,206.4 66.8,206.4 66.8,206.7 67.6,206.7 67.6,206.8 68.4,206.8 68.4,209.3 69.2,209.3 69.2,206.7 70.0,206.7 70.0,206.8 70.8,206.8 70.8,206.6 71.6,206.6 71.6,206.8 72.4,206.8 72.4,209.2 73.2,209.2 73.2,207.6 74.1,207.6 74.1,205.9 74.9,205.9 74.9,209.1 75.7,209.1 75.7,206.6 76.5,206.6 76.5,207.4 77.3,207.4 77.3,207.0 78.1,207.0 78.1,209.1 78.9,209.1 78.9,205.8 79.8,205.8 79.8,206.9 80.6,206.9 80.6,208.0 81.4,208.0 81.4,208.5 82.2,208.5 82.2,206.6 83.0,206.6 83.0,206.0 83.8,206.0 83.8,207.9 84.6,207.9 84.6,206.6 85.4,206.6 85.4,206.5 86.2,206.5 86.2,206.6 87.1,206.6 87.1,207.2 87.9,207.2 87.9,208.0 88.7,208.0 88.7,208.1 89.5,208.1 89.5,206.7 90.3,206.7 90.3,207.8 91.1,207.8 91.1,206.7 91.9,206.7 91.9,208.1 92.8,208.1 92.8,205.9 93.6,205.9 93.6,206.8 94.4,206.8 94.4,208.0 95.2,208.0 95.2,207.3 96.0,207.3 96.0,206.7 96.8,206.7 96.8,209.3 97.6,209.3 97.6,206.5 98.4,206.5 98.4,207.2 99.2,207.2 99.2,208.2 100.1,208.2 100.1,209.3 100.9,209.3 100.9,207.8 101.7,207.8 101.7,206.9 102.5,206.9 102.5,206.7 103.3,206.7 103.3,209.0 104.1,209.0 104.1,208.0 104.9,208.0 104.9,208.1 105.8,208.1 105.8,209.1 106.6,209.1 106.6,208.1 107.4,208.1 107.4,205.6 108.2,205.6 108.2,207.0 109.0,207.0 109.0,206.7 109.8,206.7 109.8,207.9 110.6,207.9 110.6,206.7 111.4,206.7 111.4,206.9 112.2,206.9 112.2,206.8 113.1,206.8 113.1,206.4 113.9,206.4 113.9,207.1 114.7,207.1 114.7,208.6 115.5,208.6 115.5,208.7 116.3,208.7 116.3,206.6 117.1,206.6 117.1,209.3 117.9,209.3 117.9,208.0 118.8,208.0 118.8,206.7 119.6,206.7 119.6,207.7 120.4,207.7 120.4,206.9 121.2,206.9 121.2,208.8 122.0,208.8 122.0,208.7 122.8,208.7 122.8,207.7 123.6,207.7 123.6,208.8 124.4,208.8 124.4,207.8 125.3,207.8 125.3,210.3 126.1,210.3 126.1,208.9 126.9,208.9 126.9,208.9 127.7,208.9 127.7,209.0 128.5,209.0 128.5,208.0 129.3,208.0 129.3,207.7 130.1,207.7 130.1,208.3 130.9,208.3 130.9,207.0 131.8,207.0 131.8,207.2 132.6,207.2 132.6,207.5 133.4,207.5 133.4,208.0 134.2,208.0 134.2,207.6 135.0,207.6 135.0,207.9 135.8,207.9 135.8,207.6 136.6,207.6 136.6,208.5 137.4,208.5 137.4,209.2 138.2,209.2 138.2,206.3 139.1,206.3 139.1,208.7 139.9,208.7 139.9,207.6 140.7,207.6 140.7,207.4 141.5,207.4 141.5,207.5 142.3,207.5 142.3,209.0 143.1,209.0 143.1,206.9 143.9,206.9 143.9,209.3 144.8,209.3 144.8,209.9 145.6,209.9 145.6,207.0 146.4,207.0 146.4,207.3 147.2,207.3 147.2,208.1 148.0,208.1 148.0,209.8 148.8,209.8 148.8,208.1 149.6,208.1 149.6,208.1 150.4,208.1 150.4,208.5 151.2,208.5 151.2,208.2 152.1,208.2 152.1,210.4 152.9,210.4 152.9,207.7 153.7,207.7 153.7,207.2 154.5,207.2 154.5,206.7 155.3,206.7 155.3,209.9 156.1,209.9 156.1,206.6 156.9,206.6 156.9,209.9 157.8,209.9 157.8,208.8 158.6,208.8 158.6,208.8 159.4,208.8 159.4,209.5 160.2,209.5 160.2,208.9 161.0,208.9 161.0,206.4 161.8,206.4 161.8,207.2 162.6,207.2 162.6,207.0 163.4,207.0 163.4,207.2 164.2,207.2 164.2,206.6 165.1,206.6 165.1,207.2 165.9,207.2 165.9,208.0 166.7,208.0 166.7,207.6 167.5,207.6 167.5,207.9 168.3,207.9 168.3,207.5 169.1,207.5 169.1,205.6 169.9,205.6 169.9,208.0 170.8,208.0 170.8,209.7 171.6,209.7 171.6,207.9 172.4,207.9 172.4,207.6 173.2,207.6 173.2,208.5 174.0,208.5 174.0,207.9 174.8,207.9 174.8,210.4 175.6,210.4 175.6,206.7 176.4,206.7 176.4,207.7 177.2,207.7 177.2,209.2 178.1,209.2 178.1,206.8 178.9,206.8 178.9,209.3 179.7,209.3 179.7,208.0 180.5,208.0 180.5,208.0 181.3,208.0 181.3,207.9 182.1,207.9 182.1,208.2 182.9,208.2 182.9,207.9 183.8,207.9 183.8,207.0 184.6,207.0 184.6,208.8 185.4,208.8 185.4,208.0 186.2,208.0 186.2,208.0 187.0,208.0 187.0,209.2 187.8,209.2 187.8,206.7 188.6,206.7 188.6,206.7 189.4,206.7 189.4,208.5 190.2,208.5 190.2,208.9 191.1,208.9 191.1,210.1 191.9,210.1 191.9,206.4 192.7,206.4 192.7,209.4 193.5,209.4 193.5,210.1 194.3,210.1 194.3,207.6 195.1,207.6 195.1,209.5 195.9,209.5 195.9,208.7 196.8,208.7 196.8,211.1 197.6,211.1 197.6,210.1 198.4,210.1 198.4,211.7 199.2,211.7 199.2,208.8 200.0,208.8 200.0,209.2 200.8,209.2 200.8,207.7 201.6,207.7 201.6,208.1 202.4,208.1 202.4,206.4 203.2,206.4 203.2,206.7 204.1,206.7 204.1,207.3 204.9,207.3 204.9,207.8 205.7,207.8 205.7,208.7 206.5,208.7 206.5,210.1 207.3,210.1 207.3,210.0 208.1,210.0 208.1,206.9 208.9,206.9 208.9,209.0 209.8,209.0 209.8,208.7 210.6,208.7 210.6,209.1 211.4,209.1 211.4,208.6 212.2,208.6 212.2,208.9 213.0,208.9 213.0,207.3 213.8,207.3 213.8,208.9 214.6,208.9 214.6,209.2 215.4,209.2 215.4,207.3 216.2,207.3 216.2,2Line truncated
<circle class="nj-charts-json-dot" cx="262.6" cy="138.8" r="3.5"><title>#5828: 1.97&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="262.6" y1="54.0" x2="262.6" y2="133.8"/>
<circle class="nj-theme-dot" cx="262.6" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="262.6" y="50.0" text-anchor="middle">1</text>
<circle class="nj-charts-json-dot" cx="279.6" cy="127.0" r="3.5"><title>#5884: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="279.6" y1="36.0" x2="279.6" y2="122.0"/>
<circle class="nj-theme-dot" cx="279.6" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="279.6" y="32.0" text-anchor="middle">1</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--timeline" viewBox="0 0 340 270" role="img" aria-labelledby="nj-blog-tl-to_cbor_twitter nj-blog-tl-to_cbor_twitter-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-tl-to_cbor_twitter">to_cbor() twitter: speedup over 3.12.0 by commit</title>
<desc id="nj-blog-tl-to_cbor_twitter-d">to_cbor() twitter: speedup over 3.12.0 at each of 317 commits, ending at 5.0x. Labeled steps, by theme: 4, 6, 6.</desc>
<desc id="nj-blog-tl-to_cbor_twitter-d">to_cbor() twitter: speedup over 3.12.0 at each of 353 commits, ending at 5.0x. Labeled steps, by theme: 4, 6, 6.</desc>
<text class="nj-charts-panel" x="8" y="18">to_cbor() twitter</text>
<line class="nj-charts-grid" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="212">1&#215;</text>
@@ -12,23 +12,23 @@
<text class="nj-charts-tick nj-charts-tick--r" x="38" y="70">8&#215;</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="44" y2="212"/>
<text class="nj-charts-tick" x="44" y="225">3.12.0</text>
<line class="nj-charts-axis" x1="126.361" y1="208" x2="126.361" y2="212"/>
<text class="nj-charts-tick" x="126.361" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="215.962" y1="208" x2="215.962" y2="212"/>
<text class="nj-charts-tick" x="215.962" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.9,208.0 44.9,208.0 45.8,208.0 45.8,204.9 46.7,204.9 46.7,205.2 47.6,205.2 47.6,204.7 48.5,204.7 48.5,205.2 49.4,205.2 49.4,205.0 50.3,205.0 50.3,204.9 51.2,204.9 51.2,205.0 52.1,205.0 52.1,205.0 53.1,205.0 53.1,205.1 54.0,205.1 54.0,205.4 54.9,205.4 54.9,205.0 55.8,205.0 55.8,205.2 56.7,205.2 56.7,211.6 57.6,211.6 57.6,206.8 58.5,206.8 58.5,204.2 59.4,204.2 59.4,207.6 60.3,207.6 60.3,204.1 61.2,204.1 61.2,203.8 62.1,203.8 62.1,204.2 63.0,204.2 63.0,205.1 63.9,205.1 63.9,204.4 64.8,204.4 64.8,204.3 65.7,204.3 65.7,204.0 66.6,204.0 66.6,202.7 67.5,202.7 67.5,204.2 68.4,204.2 68.4,204.2 69.3,204.2 69.3,204.2 70.2,204.2 70.2,204.4 71.2,204.4 71.2,206.2 72.1,206.2 72.1,204.3 73.0,204.3 73.0,204.1 73.9,204.1 73.9,204.3 74.8,204.3 74.8,204.3 75.7,204.3 75.7,204.3 76.6,204.3 76.6,204.3 77.5,204.3 77.5,204.4 78.4,204.4 78.4,204.8 79.3,204.8 79.3,208.4 80.2,208.4 80.2,203.5 81.1,203.5 81.1,206.2 82.0,206.2 82.0,204.4 82.9,204.4 82.9,203.2 83.8,203.2 83.8,204.1 84.7,204.1 84.7,204.2 85.6,204.2 85.6,203.7 86.5,203.7 86.5,204.2 87.4,204.2 87.4,203.2 88.3,203.2 88.3,204.2 89.3,204.2 89.3,204.4 90.2,204.4 90.2,203.8 91.1,203.8 91.1,204.4 92.0,204.4 92.0,204.7 92.9,204.7 92.9,204.6 93.8,204.6 93.8,208.7 94.7,208.7 94.7,205.2 95.6,205.2 95.6,205.5 96.5,205.5 96.5,205.2 97.4,205.2 97.4,205.3 98.3,205.3 98.3,206.8 99.2,206.8 99.2,204.6 100.1,204.6 100.1,205.5 101.0,205.5 101.0,205.1 101.9,205.1 101.9,204.7 102.8,204.7 102.8,205.7 103.7,205.7 103.7,205.0 104.6,205.0 104.6,204.9 105.5,204.9 105.5,206.5 106.4,206.5 106.4,205.6 107.4,205.6 107.4,205.0 108.3,205.0 108.3,209.2 109.2,209.2 109.2,205.9 110.1,205.9 110.1,206.5 111.0,206.5 111.0,205.5 111.9,205.5 111.9,205.3 112.8,205.3 112.8,205.3 113.7,205.3 113.7,205.1 114.6,205.1 114.6,204.4 115.5,204.4 115.5,204.6 116.4,204.6 116.4,204.8 117.3,204.8 117.3,204.2 118.2,204.2 118.2,203.8 119.1,203.8 119.1,204.4 120.0,204.4 120.0,202.8 120.9,202.8 120.9,203.5 121.8,203.5 121.8,204.0 122.7,204.0 122.7,204.3 123.6,204.3 123.6,202.9 124.6,202.9 124.6,203.3 125.5,203.3 125.5,204.4 126.4,204.4 126.4,204.5 127.3,204.5 127.3,204.1 128.2,204.1 128.2,208.3 129.1,208.3 129.1,203.8 130.0,203.8 130.0,207.0 130.9,207.0 130.9,205.9 131.8,205.9 131.8,205.4 132.7,205.4 132.7,205.3 133.6,205.3 133.6,205.8 134.5,205.8 134.5,205.4 135.4,205.4 135.4,205.6 136.3,205.6 136.3,206.3 137.2,206.3 137.2,205.5 138.1,205.5 138.1,204.8 139.0,204.8 139.0,204.6 139.9,204.6 139.9,206.1 140.8,206.1 140.8,204.6 141.7,204.6 141.7,204.1 142.7,204.1 142.7,204.3 143.6,204.3 143.6,205.6 144.5,205.6 144.5,203.9 145.4,203.9 145.4,204.0 146.3,204.0 146.3,203.9 147.2,203.9 147.2,204.6 148.1,204.6 148.1,204.1 149.0,204.1 149.0,203.9 149.9,203.9 149.9,204.8 150.8,204.8 150.8,203.2 151.7,203.2 151.7,203.3 152.6,203.3 152.6,204.7 153.5,204.7 153.5,208.3 154.4,208.3 154.4,204.3 155.3,204.3 155.3,207.4 156.2,207.4 156.2,204.4 157.1,204.4 157.1,208.2 158.0,208.2 158.0,205.0 158.9,205.0 158.9,204.9 159.8,204.9 159.8,208.8 160.8,208.8 160.8,207.9 161.7,207.9 161.7,206.2 162.6,206.2 162.6,204.2 163.5,204.2 163.5,204.1 164.4,204.1 164.4,204.2 165.3,204.2 165.3,202.2 166.2,202.2 166.2,205.6 167.1,205.6 167.1,203.0 168.0,203.0 168.0,203.4 168.9,203.4 168.9,202.7 169.8,202.7 169.8,203.6 170.7,203.6 170.7,203.3 171.6,203.3 171.6,203.2 172.5,203.2 172.5,204.9 173.4,204.9 173.4,202.9 174.3,202.9 174.3,202.2 175.2,202.2 175.2,202.5 176.1,202.5 176.1,202.9 177.0,202.9 177.0,202.9 177.9,202.9 177.9,202.3 178.9,202.3 178.9,202.9 179.8,202.9 179.8,203.7 180.7,203.7 180.7,204.1 181.6,204.1 181.6,203.9 182.5,203.9 182.5,203.7 183.4,203.7 183.4,203.3 184.3,203.3 184.3,203.8 185.2,203.8 185.2,205.0 186.1,205.0 186.1,208.0 187.0,208.0 187.0,205.1 187.9,205.1 187.9,206.5 188.8,206.5 188.8,205.4 189.7,205.4 189.7,205.4 190.6,205.4 190.6,207.0 191.5,207.0 191.5,204.9 192.4,204.9 192.4,205.4 193.3,205.4 193.3,203.6 194.2,203.6 194.2,205.7 195.1,205.7 195.1,204.5 196.1,204.5 196.1,205.0 197.0,205.0 197.0,205.2 197.9,205.2 197.9,204.9 198.8,204.9 198.8,204.5 199.7,204.5 199.7,204.9 200.6,204.9 200.6,205.3 201.5,205.3 201.5,203.9 202.4,203.9 202.4,204.8 203.3,204.8 203.3,204.8 204.2,204.8 204.2,203.6 205.1,203.6 205.1,203.4 206.0,203.4 206.0,203.8 206.9,203.8 206.9,205.1 207.8,205.1 207.8,205.5 208.7,205.5 208.7,204.0 209.6,204.0 209.6,204.9 210.5,204.9 210.5,205.0 211.4,205.0 211.4,206.4 212.3,206.4 212.3,205.1 213.2,205.1 213.2,204.5 214.2,204.5 214.2,204.8 215.1,204.8 215.1,205.2 216.0,205.2 216.0,205.0 216.9,205.0 216.9,204.6 217.8,204.6 217.8,203.9 218.7,203.9 218.7,203.5 219.6,203.5 219.6,203.6 220.5,203.6 220.5,204.2 221.4,204.2 221.4,205.9 222.3,205.9 222.3,205.2 223.2,205.2 223.2,204.8 224.1,204.8 224.1,207.3 225.0,207.3 225.0,205.2 225.9,205.2 225.9,208.6 226.8,208.6 226.8,204.3 227.7,204.3 227.7,203.9 228.6,203.9 228.6,203.2 229.5,203.2 229.5,203.9 230.4,203.9 230.4,205.9 231.3,205.9 231.3,204.8 232.3,204.8 232.3,204.7 233.2,204.7 233.2,203.6 234.1,203.6 234.1,203.7 235.0,203.7 235.0,208.2 235.9Line truncated
<circle class="nj-charts-json-dot" cx="256.7" cy="153.7" r="3.5"><title>#5328: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="256.7" y1="54.0" x2="256.7" y2="148.7"/>
<circle class="nj-theme-dot" cx="256.7" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="256.7" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="295.6" cy="123.4" r="3.5"><title>#5824: 3.5&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="295.6" y1="54.0" x2="295.6" y2="118.4"/>
<circle class="nj-theme-dot" cx="295.6" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="295.6" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="309.2" cy="96.9" r="3.5"><title>#5885: 5.1&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="309.2" y1="36.0" x2="309.2" y2="91.9"/>
<circle class="nj-theme-dot" cx="309.2" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="309.2" y="32.0" text-anchor="middle">6</text>
<line class="nj-charts-axis" x1="117.938" y1="208" x2="117.938" y2="212"/>
<text class="nj-charts-tick" x="117.938" y="225">Sep 2026</text>
<line class="nj-charts-axis" x1="198.375" y1="208" x2="198.375" y2="212"/>
<text class="nj-charts-tick" x="198.375" y="225">Oct</text>
<polyline class="nj-charts-json" points="44.0,208.0 44.8,208.0 44.8,208.0 45.6,208.0 45.6,204.9 46.4,204.9 46.4,205.2 47.2,205.2 47.2,204.7 48.1,204.7 48.1,205.2 48.9,205.2 48.9,205.0 49.7,205.0 49.7,204.9 50.5,204.9 50.5,205.0 51.3,205.0 51.3,205.0 52.1,205.0 52.1,205.1 52.9,205.1 52.9,205.4 53.8,205.4 53.8,205.0 54.6,205.0 54.6,205.2 55.4,205.2 55.4,211.6 56.2,211.6 56.2,206.8 57.0,206.8 57.0,204.2 57.8,204.2 57.8,207.6 58.6,207.6 58.6,204.1 59.4,204.1 59.4,203.8 60.2,203.8 60.2,204.2 61.1,204.2 61.1,205.1 61.9,205.1 61.9,204.4 62.7,204.4 62.7,204.3 63.5,204.3 63.5,204.0 64.3,204.0 64.3,202.7 65.1,202.7 65.1,204.2 65.9,204.2 65.9,204.2 66.8,204.2 66.8,204.2 67.6,204.2 67.6,204.4 68.4,204.4 68.4,206.2 69.2,206.2 69.2,204.3 70.0,204.3 70.0,204.1 70.8,204.1 70.8,204.3 71.6,204.3 71.6,204.3 72.4,204.3 72.4,204.3 73.2,204.3 73.2,204.3 74.1,204.3 74.1,204.4 74.9,204.4 74.9,204.8 75.7,204.8 75.7,208.4 76.5,208.4 76.5,203.5 77.3,203.5 77.3,206.2 78.1,206.2 78.1,204.4 78.9,204.4 78.9,203.2 79.8,203.2 79.8,204.1 80.6,204.1 80.6,204.2 81.4,204.2 81.4,203.7 82.2,203.7 82.2,204.2 83.0,204.2 83.0,203.2 83.8,203.2 83.8,204.2 84.6,204.2 84.6,204.4 85.4,204.4 85.4,203.8 86.2,203.8 86.2,204.4 87.1,204.4 87.1,204.7 87.9,204.7 87.9,204.6 88.7,204.6 88.7,208.7 89.5,208.7 89.5,205.2 90.3,205.2 90.3,205.5 91.1,205.5 91.1,205.2 91.9,205.2 91.9,205.3 92.8,205.3 92.8,206.8 93.6,206.8 93.6,204.6 94.4,204.6 94.4,205.5 95.2,205.5 95.2,205.1 96.0,205.1 96.0,204.7 96.8,204.7 96.8,205.7 97.6,205.7 97.6,205.0 98.4,205.0 98.4,204.9 99.2,204.9 99.2,206.5 100.1,206.5 100.1,205.6 100.9,205.6 100.9,205.0 101.7,205.0 101.7,209.2 102.5,209.2 102.5,205.9 103.3,205.9 103.3,206.5 104.1,206.5 104.1,205.5 104.9,205.5 104.9,205.3 105.8,205.3 105.8,205.3 106.6,205.3 106.6,205.1 107.4,205.1 107.4,204.4 108.2,204.4 108.2,204.6 109.0,204.6 109.0,204.8 109.8,204.8 109.8,204.2 110.6,204.2 110.6,203.8 111.4,203.8 111.4,204.4 112.2,204.4 112.2,202.8 113.1,202.8 113.1,203.5 113.9,203.5 113.9,204.0 114.7,204.0 114.7,204.3 115.5,204.3 115.5,202.9 116.3,202.9 116.3,203.3 117.1,203.3 117.1,204.4 117.9,204.4 117.9,204.5 118.8,204.5 118.8,204.1 119.6,204.1 119.6,208.3 120.4,208.3 120.4,203.8 121.2,203.8 121.2,207.0 122.0,207.0 122.0,205.9 122.8,205.9 122.8,205.4 123.6,205.4 123.6,205.3 124.4,205.3 124.4,205.8 125.3,205.8 125.3,205.4 126.1,205.4 126.1,205.6 126.9,205.6 126.9,206.3 127.7,206.3 127.7,205.5 128.5,205.5 128.5,204.8 129.3,204.8 129.3,204.6 130.1,204.6 130.1,206.1 130.9,206.1 130.9,204.6 131.8,204.6 131.8,204.1 132.6,204.1 132.6,204.3 133.4,204.3 133.4,205.6 134.2,205.6 134.2,203.9 135.0,203.9 135.0,204.0 135.8,204.0 135.8,203.9 136.6,203.9 136.6,204.6 137.4,204.6 137.4,204.1 138.2,204.1 138.2,203.9 139.1,203.9 139.1,204.8 139.9,204.8 139.9,203.2 140.7,203.2 140.7,203.3 141.5,203.3 141.5,204.7 142.3,204.7 142.3,208.3 143.1,208.3 143.1,204.3 143.9,204.3 143.9,207.4 144.8,207.4 144.8,204.4 145.6,204.4 145.6,208.2 146.4,208.2 146.4,205.0 147.2,205.0 147.2,204.9 148.0,204.9 148.0,208.8 148.8,208.8 148.8,207.9 149.6,207.9 149.6,206.2 150.4,206.2 150.4,204.2 151.2,204.2 151.2,204.1 152.1,204.1 152.1,204.2 152.9,204.2 152.9,202.2 153.7,202.2 153.7,205.6 154.5,205.6 154.5,203.0 155.3,203.0 155.3,203.4 156.1,203.4 156.1,202.7 156.9,202.7 156.9,203.6 157.8,203.6 157.8,203.3 158.6,203.3 158.6,203.2 159.4,203.2 159.4,204.9 160.2,204.9 160.2,202.9 161.0,202.9 161.0,202.2 161.8,202.2 161.8,202.5 162.6,202.5 162.6,202.9 163.4,202.9 163.4,202.9 164.2,202.9 164.2,202.3 165.1,202.3 165.1,202.9 165.9,202.9 165.9,203.7 166.7,203.7 166.7,204.1 167.5,204.1 167.5,203.9 168.3,203.9 168.3,203.7 169.1,203.7 169.1,203.3 169.9,203.3 169.9,203.8 170.8,203.8 170.8,205.0 171.6,205.0 171.6,208.0 172.4,208.0 172.4,205.1 173.2,205.1 173.2,206.5 174.0,206.5 174.0,205.4 174.8,205.4 174.8,205.4 175.6,205.4 175.6,207.0 176.4,207.0 176.4,204.9 177.2,204.9 177.2,205.4 178.1,205.4 178.1,203.6 178.9,203.6 178.9,205.7 179.7,205.7 179.7,204.5 180.5,204.5 180.5,205.0 181.3,205.0 181.3,205.2 182.1,205.2 182.1,204.9 182.9,204.9 182.9,204.5 183.8,204.5 183.8,204.9 184.6,204.9 184.6,205.3 185.4,205.3 185.4,203.9 186.2,203.9 186.2,204.8 187.0,204.8 187.0,204.8 187.8,204.8 187.8,203.6 188.6,203.6 188.6,203.4 189.4,203.4 189.4,203.8 190.2,203.8 190.2,205.1 191.1,205.1 191.1,205.5 191.9,205.5 191.9,204.0 192.7,204.0 192.7,204.9 193.5,204.9 193.5,205.0 194.3,205.0 194.3,206.4 195.1,206.4 195.1,205.1 195.9,205.1 195.9,204.5 196.8,204.5 196.8,204.8 197.6,204.8 197.6,205.2 198.4,205.2 198.4,205.0 199.2,205.0 199.2,204.6 200.0,204.6 200.0,203.9 200.8,203.9 200.8,203.5 201.6,203.5 201.6,203.6 202.4,203.6 202.4,204.2 203.2,204.2 203.2,205.9 204.1,205.9 204.1,205.2 204.9,205.2 204.9,204.8 205.7,204.8 205.7,207.3 206.5,207.3 206.5,205.2 207.3,205.2 207.3,208.6 208.1,208.6 208.1,204.3 208.9,204.3 208.9,203.9 209.8,203.9 209.8,203.2 210.6,203.2 210.6,203.9 211.4,203.9 211.4,205.9 212.2,205.9 212.2,204.8 213.0,204.8 213.0,204.7 213.8,204.7 213.8,203.6 214.6,203.6 214.6,203.7 215.4,203.7 215.4,208.2 216.2,208.2 216.2,2Line truncated
<circle class="nj-charts-json-dot" cx="234.9" cy="153.7" r="3.5"><title>#5328: 2.2&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="234.9" y1="54.0" x2="234.9" y2="148.7"/>
<circle class="nj-theme-dot" cx="234.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="234.9" y="50.0" text-anchor="middle">4</text>
<circle class="nj-charts-json-dot" cx="269.9" cy="123.4" r="3.5"><title>#5824: 3.5&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="269.9" y1="54.0" x2="269.9" y2="118.4"/>
<circle class="nj-theme-dot" cx="269.9" cy="46.0" r="7.5"/>
<text class="nj-theme-num" x="269.9" y="50.0" text-anchor="middle">6</text>
<circle class="nj-charts-json-dot" cx="282.1" cy="96.9" r="3.5"><title>#5885: 5.1&#215;</title></circle>
<line class="nj-charts-grid" stroke-dasharray="2 2" x1="282.1" y1="36.0" x2="282.1" y2="91.9"/>
<circle class="nj-theme-dot" cx="282.1" cy="28.0" r="7.5"/>
<text class="nj-theme-num" x="282.1" y="32.0" text-anchor="middle">6</text>
<line class="nj-charts-axis" x1="44" y1="208" x2="330" y2="208"/>
<text class="nj-charts-note" x="8" y="262">speedup over 3.12.0 (log scale), more is better</text>
</svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+187 -167
View File
@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog nj-charts--heat" viewBox="0 0 784 510" role="img" aria-labelledby="nj-blog-uc-mac nj-blog-uc-mac-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-uc-mac">Use cases: time of each library relative to the fastest, Apple M1 Max</title>
<desc id="nj-blog-uc-mac-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00; nlohmann/json json_document minify: 1.00; nlohmann/json json_document write: 1.00; yyjson validate: 1.41; yyjson sum: 1.12; yyjson select: 1.29; yyjson edit: 1.50; yyjson minify: 1.25; yyjson write: 1.23; simdjson validate: 1.49; simdjson sum: 1.18; simdjson select: 1.34 (0.74 checking less, partial); simdjson edit: n/a; simdjson minify: 2.03 (0.18 checking less, partial); simdjson write: 3.21; sonic-rs (Rust) validate: 1.93; sonic-rs (Rust) sum: 1.54; sonic-rs (Rust) select: 1.85; sonic-rs (Rust) edit: 2.10; sonic-rs (Rust) minify: 1.93; sonic-rs (Rust) write: 2.37; sonic-cpp validate: no fully validating way (2.52 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.84 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (2.32 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.68 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (2.01 checking less, no U&#8203;TF-8); sonic-cpp write: 1.54; simd-json (Rust) validate: 2.07; simd-json (Rust) sum: 1.62; simd-json (Rust) select: 2.40; simd-json (Rust) edit: 2.86; simd-json (Rust) minify: 3.41; simd-json (Rust) write: 3.08; Glaze validate: 2.03; Glaze sum: 3.84; Glaze select: 1.79 (0.81 checking less, partial); Glaze edit: 4.43; Glaze minify: 5.18 (1.03 checking less, partial); Glaze write: 2.19; Boost.J&#8203;SON validate: 2.55; Boost.J&#8203;SON sum: 1.97; Boost.J&#8203;SON select: 3.30; Boost.J&#8203;SON edit: 3.22; Boost.J&#8203;SON minify: 3.84; Boost.J&#8203;SON write: 3.68; nlohmann/json json validate: 2.70; nlohmann/json json sum: 1.95; nlohmann/json json select: 6.87; nlohmann/json json edit: 3.58; nlohmann/json json minify: 4.85; nlohmann/json json write: 2.04; serde_json (Rust) validate: 2.47 (2.23 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.59; serde_json (Rust) select: 2.42 (2.27 checking less, no U&#8203;TF-8); serde_json (Rust) edit: 5.04; serde_json (Rust) minify: 5.88; serde_json (Rust) write: 2.93; RapidJSON validate: 6.68 (4.32 checking less, no U&#8203;TF-8); RapidJSON sum: 4.43 (2.98 checking less, no U&#8203;TF-8); RapidJSON select: 5.99 (3.90 checking less, no U&#8203;TF-8); RapidJSON edit: 4.85 (3.80 checking less, no U&#8203;TF-8); RapidJSON minify: 4.85 (4.53 checking less, no U&#8203;TF-8); RapidJSON write: 5.74.</desc>
<desc id="nj-blog-uc-mac-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.85 doing less, N); nlohmann/json json_document minify: 1.00 (0.85 doing less, N); nlohmann/json json_document write: 1.00 (0.70 doing less, N); yyjson validate: 1.42; yyjson sum: 1.14; yyjson select: 1.30; yyjson edit: 1.49; yyjson minify: 1.26 (1.19 doing less, N); yyjson write: 1.26; simdjson validate: 1.52; simdjson sum: 1.20; simdjson select: 1.36 (0.75 doing less, P); simdjson edit: n/a; simdjson minify: 2.06 (0.18 doing less, P); simdjson write: 3.27; sonic-rs (Rust) validate: 1.94; sonic-rs (Rust) sum: 1.53; sonic-rs (Rust) select: 1.84; sonic-rs (Rust) edit: 2.10; sonic-rs (Rust) minify: 1.93; sonic-rs (Rust) write: 2.39; sonic-cpp validate: no fully validating way (2.55 doing less, U); sonic-cpp sum: no fully validating way (1.85 doing less, U); sonic-cpp select: no fully validating way (2.33 doing less, U); sonic-cpp edit: no fully validating way (1.71 doing less, U); sonic-cpp minify: no fully validating way (2.04 doing less, U); sonic-cpp write: 1.63; simd-json (Rust) validate: 2.08; simd-json (Rust) sum: 1.62; simd-json (Rust) select: 2.39; simd-json (Rust) edit: 2.85; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 3.12; Glaze validate: 2.05; Glaze sum: 3.86; Glaze select: 1.80 (0.82 doing less, P); Glaze edit: 4.42; Glaze minify: 5.19 (1.06 doing less, P); Glaze write: 2.24; Boost.J&#8203;SON validate: 2.59; Boost.J&#8203;SON sum: 1.98; Boost.J&#8203;SON select: 3.29; Boost.J&#8203;SON edit: 3.25; Boost.J&#8203;SON minify: 3.87; Boost.J&#8203;SON write: 3.75; serde_json (Rust) validate: 2.48 (2.24 doing less, U); serde_json (Rust) sum: 2.58; serde_json (Rust) select: 2.41 (2.25 doing less, U); serde_json (Rust) edit: 5.02; serde_json (Rust) minify: 5.86; serde_json (Rust) write: 2.97; nlohmann/json json validate: 2.74; nlohmann/json json sum: 1.96; nlohmann/json json select: 6.91; nlohmann/json json edit: 3.72; nlohmann/json json minify: 4.91; nlohmann/json json write: 2.08; RapidJSON validate: 6.78 (4.40 doing less, U); RapidJSON sum: 4.46 (3.01 doing less, U); RapidJSON select: 6.01 (3.95 doing less, U); RapidJSON edit: 4.88 (3.84 doing less, U); RapidJSON minify: 4.89 (4.28 doing less, U N); RapidJSON write: 5.87.</desc>
<text class="nj-charts-tick" x="270" y="34">validate</text>
<text class="nj-charts-tick" x="362" y="34">sum</text>
<text class="nj-charts-tick" x="454" y="34">select</text>
@@ -8,102 +8,122 @@
<text class="nj-charts-tick" x="638" y="34">minify</text>
<text class="nj-charts-tick" x="730" y="34">write</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 170 µs&#10;citm_catalog.json: 313 µs&#10;canada.json: 881 µs&#10;jeopardy.json: 20,764 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 169 µs&#10;citm_catalog.json: 313 µs&#10;canada.json: 868 µs&#10;jeopardy.json: 20,764 µs">
<rect class="nj-heat-0" x="225" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 226 µs&#10;citm_catalog.json: 482 µs&#10;canada.json: 1,818 µs&#10;jeopardy.json: 28,732 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 227 µs&#10;citm_catalog.json: 482 µs&#10;canada.json: 1,790 µs&#10;jeopardy.json: 29,450 µs">
<rect class="nj-heat-0" x="317" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 180 µs&#10;citm_catalog.json: 363 µs&#10;canada.json: 959 µs&#10;jeopardy.json: 24,367 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 186 µs&#10;citm_catalog.json: 363 µs&#10;canada.json: 928 µs&#10;jeopardy.json: 25,032 µs">
<rect class="nj-heat-0" x="409" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 284 µs&#10;citm_catalog.json: 560 µs&#10;canada.json: 2,762 µs&#10;jeopardy.json: 57,380 µs">
<rect class="nj-heat-0" x="501" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 283 µs&#10;citm_catalog.json: 563 µs&#10;canada.json: 2,741 µs&#10;jeopardy.json: 58,470 µs">
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 258 µs&#10;citm_catalog.json: 496 µs&#10;canada.json: 2,577 µs&#10;jeopardy.json: 37,294 µs">
<rect class="nj-heat-0" x="593" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less&#10;0.85× the time of the fastest fully validating library&#10;twitter.json: 283 µs · editable (validates fully)&#10;citm_catalog.json: 560 µs · editable (source numbers) (validates fully)&#10;canada.json: 1,448 µs · editable (source numbers) (validates fully)&#10;jeopardy.json: 58,344 µs · editable (source numbers) (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.85</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 75.6 µs&#10;citm_catalog.json: 136 µs&#10;canada.json: 1,618 µs&#10;jeopardy.json: 14,609 µs">
<rect class="nj-heat-0" x="685" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 261 µs&#10;citm_catalog.json: 493 µs&#10;canada.json: 2,550 µs&#10;jeopardy.json: 37,888 µs">
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less&#10;0.85× the time of the fastest fully validating library&#10;twitter.json: 259 µs · parse + dump (source numbers) (validates fully)&#10;citm_catalog.json: 493 µs · parse + dump (source numbers) (validates fully)&#10;canada.json: 1,328 µs · parse + dump (source numbers) (validates fully)&#10;jeopardy.json: 37,888 µs · parse + dump (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.85</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 72.9 µs&#10;citm_catalog.json: 133 µs&#10;canada.json: 1,622 µs&#10;jeopardy.json: 14,735 µs">
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less&#10;0.70× the time of the fastest fully validating library&#10;twitter.json: 72.9 µs · dump (validates fully)&#10;citm_catalog.json: 133 µs · dump (validates fully)&#10;canada.json: 400 µs · dump (source numbers) (validates fully)&#10;jeopardy.json: 14,732 µs · dump (source numbers) (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.70</text>
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;1.41× the time of the fastest library (fully validating)&#10;twitter.json: 181 µs · read&#10;citm_catalog.json: 474 µs · insitu (copy)&#10;canada.json: 1,484 µs · insitu (copy)&#10;jeopardy.json: 30,583 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;1.42× the time of the fastest library (fully validating)&#10;twitter.json: 178 µs · read&#10;citm_catalog.json: 475 µs · read&#10;canada.json: 1,496 µs · insitu (copy)&#10;jeopardy.json: 30,679 µs · read (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.41</text>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.42</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.12× the time of the fastest library (fully validating)&#10;twitter.json: 229 µs · insitu (copy)&#10;citm_catalog.json: 570 µs · read&#10;canada.json: 1,867 µs · insitu (copy)&#10;jeopardy.json: 37,323 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.14× the time of the fastest library (fully validating)&#10;twitter.json: 229 µs · insitu (copy)&#10;citm_catalog.json: 576 µs · read&#10;canada.json: 1,941 µs · read&#10;jeopardy.json: 37,855 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-0" x="317" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.12</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.14</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.29× the time of the fastest library (fully validating)&#10;twitter.json: 188 µs · insitu (copy)&#10;citm_catalog.json: 475 µs · insitu (copy)&#10;canada.json: 1,488 µs · insitu (copy)&#10;jeopardy.json: 32,022 µs · read (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.30× the time of the fastest library (fully validating)&#10;twitter.json: 191 µs · insitu (copy)&#10;citm_catalog.json: 476 µs · read&#10;canada.json: 1,490 µs · insitu (copy)&#10;jeopardy.json: 33,078 µs · read (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="409" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.29</text>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.30</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.50× the time of the fastest library (fully validating)&#10;twitter.json: 446 µs · mut copy&#10;citm_catalog.json: 924 µs · insitu (copy) + mut copy&#10;canada.json: 3,685 µs · insitu (copy) + mut copy&#10;jeopardy.json: 83,706 µs · insitu (copy) + mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.49× the time of the fastest library (fully validating)&#10;twitter.json: 441 µs · mut copy&#10;citm_catalog.json: 904 µs · insitu (copy) + mut copy&#10;canada.json: 3,700 µs · mut copy&#10;jeopardy.json: 85,478 µs · insitu (copy) + mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="501" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.50</text>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.49</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.25× the time of the fastest library (fully validating)&#10;twitter.json: 291 µs · insitu (copy) + write&#10;citm_catalog.json: 635 µs · insitu (copy) + write&#10;canada.json: 3,209 µs · read + write&#10;jeopardy.json: 49,919 µs · insitu (copy) + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.25</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.26× the time of the fastest library (fully validating)&#10;twitter.json: 298 µs · read + write&#10;citm_catalog.json: 641 µs · insitu (copy) + write&#10;canada.json: 3,219 µs · insitu (copy) + write&#10;jeopardy.json: 51,099 µs · read + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.26</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.23× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 101 µs&#10;citm_catalog.json: 164 µs&#10;canada.json: 1,715 µs&#10;jeopardy.json: 19,621 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less&#10;1.19× the time of the fastest fully validating library&#10;twitter.json: 298 µs · read + write (validates fully)&#10;citm_catalog.json: 641 µs · insitu (copy) + write (validates fully)&#10;canada.json: 2,527 µs · read (raw numbers) + write (validates fully)&#10;jeopardy.json: 51,099 µs · read + write (validates fully)&#10;copies each number&#x27;s text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="639" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.19</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.26× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 103 µs&#10;citm_catalog.json: 165 µs&#10;canada.json: 1,719 µs&#10;jeopardy.json: 19,993 µs">
<rect class="nj-heat-1" x="685" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.23</text>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.26</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">simdjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;1.49× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 202 µs&#10;citm_catalog.json: 444 µs&#10;canada.json: 1,883 µs&#10;jeopardy.json: 28,317 µs">
<rect class="nj-heat-1" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="138" text-anchor="middle">1.49</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;1.52× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 205 µs&#10;citm_catalog.json: 459 µs&#10;canada.json: 1,890 µs&#10;jeopardy.json: 28,911 µs">
<rect class="nj-heat-2" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="138" text-anchor="middle">1.52</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.18× the time of the fastest library (fully validating)&#10;twitter.json: 239 µs · D&#8203;OM&#10;citm_catalog.json: 563 µs · On-Demand&#10;canada.json: 2,372 µs · On-Demand&#10;jeopardy.json: 34,486 µs · D&#8203;OM">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.20× the time of the fastest library (fully validating)&#10;twitter.json: 244 µs · D&#8203;OM&#10;citm_catalog.json: 588 µs · On-Demand&#10;canada.json: 2,387 µs · On-Demand&#10;jeopardy.json: 35,389 µs · D&#8203;OM">
<rect class="nj-heat-1" x="317" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="138" text-anchor="middle">1.18</text>
<text class="nj-charts-cell" x="362" y="138" text-anchor="middle">1.20</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.34× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 196 µs&#10;citm_catalog.json: 441 µs&#10;canada.json: 1,883 µs&#10;jeopardy.json: 30,127 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.36× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 202 µs&#10;citm_catalog.json: 454 µs&#10;canada.json: 1,886 µs&#10;jeopardy.json: 30,892 µs">
<rect class="nj-heat-1" x="409" y="117" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="138" text-anchor="middle">1.34</text>
<text class="nj-charts-cell" x="431.5" y="138" text-anchor="middle">1.36</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.74× the time of the fastest fully validating library&#10;twitter.json: 125 µs · On-Demand structs&#10;citm_catalog.json: 346 µs · On-Demand&#10;canada.json: 564 µs · On-Demand&#10;jeopardy.json: 19,234 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.75× the time of the fastest fully validating library&#10;twitter.json: 128 µs · On-Demand structs&#10;citm_catalog.json: 353 µs · On-Demand&#10;canada.json: 566 µs · On-Demand (key selectors)&#10;jeopardy.json: 19,832 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<rect class="nj-heat-0" x="455" y="117" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="132" text-anchor="middle">0.74</text>
<text class="nj-charts-cell" x="476.5" y="132" text-anchor="middle">0.75</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="145" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · edit&#10;simdjson&#x27;s documents are read-only: it has no A&#8203;PI to change a value and write the result">
<rect class="nj-heat-na" x="501" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-tick" x="546" y="138">n/a</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;2.03× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 566 µs&#10;citm_catalog.json: 906 µs&#10;canada.json: 5,026 µs&#10;jeopardy.json: 81,426 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;2.06× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 574 µs&#10;citm_catalog.json: 928 µs&#10;canada.json: 5,038 µs&#10;jeopardy.json: 82,978 µs">
<rect class="nj-heat-2" x="593" y="117" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="138" text-anchor="middle">2.03</text>
<text class="nj-charts-cell" x="615.5" y="138" text-anchor="middle">2.06</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.18× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 61.3 µs&#10;citm_catalog.json: 168 µs&#10;canada.json: 228 µs&#10;jeopardy.json: 5,653 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.18× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 61.5 µs&#10;citm_catalog.json: 168 µs&#10;canada.json: 227 µs&#10;jeopardy.json: 5,755 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="117" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="132" text-anchor="middle">0.18</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="145" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;3.21× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 342 µs&#10;citm_catalog.json: 451 µs&#10;canada.json: 3,159 µs&#10;jeopardy.json: 52,849 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;3.27× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 342 µs&#10;citm_catalog.json: 448 µs&#10;canada.json: 3,196 µs&#10;jeopardy.json: 53,776 µs">
<rect class="nj-heat-3" x="685" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">3.21</text>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">3.27</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="174" text-anchor="end">sonic-rs (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.93× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 326 µs&#10;citm_catalog.json: 681 µs&#10;canada.json: 1,939 µs&#10;jeopardy.json: 31,450 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.94× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 326 µs&#10;citm_catalog.json: 681 µs&#10;canada.json: 1,939 µs&#10;jeopardy.json: 31,450 µs">
<rect class="nj-heat-2" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.93</text>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.94</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.54× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 364 µs&#10;citm_catalog.json: 778 µs&#10;canada.json: 2,703 µs&#10;jeopardy.json: 41,361 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.53× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 364 µs&#10;citm_catalog.json: 778 µs&#10;canada.json: 2,703 µs&#10;jeopardy.json: 41,361 µs">
<rect class="nj-heat-2" x="317" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.54</text>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.53</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.85× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 333 µs&#10;citm_catalog.json: 691 µs&#10;canada.json: 1,936 µs&#10;jeopardy.json: 40,660 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.84× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 333 µs&#10;citm_catalog.json: 691 µs&#10;canada.json: 1,936 µs&#10;jeopardy.json: 40,660 µs">
<rect class="nj-heat-2" x="409" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.85</text>
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.84</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;2.10× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 634 µs&#10;citm_catalog.json: 1,257 µs&#10;canada.json: 4,396 µs&#10;jeopardy.json: 140,936 µs">
<rect class="nj-heat-2" x="501" y="153" width="90" height="34" rx="3"/>
@@ -113,234 +133,234 @@
<rect class="nj-heat-2" x="593" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="174" text-anchor="middle">1.93</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.37× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 212 µs&#10;citm_catalog.json: 446 µs&#10;canada.json: 2,419 µs&#10;jeopardy.json: 33,366 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.39× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 212 µs&#10;citm_catalog.json: 446 µs&#10;canada.json: 2,419 µs&#10;jeopardy.json: 33,366 µs">
<rect class="nj-heat-2" x="685" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.37</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.39</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="210" text-anchor="end">sonic-cpp</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.52× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 380 µs&#10;citm_catalog.json: 981 µs&#10;canada.json: 2,577 µs&#10;jeopardy.json: 40,694 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.55× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 381 µs&#10;citm_catalog.json: 994 µs&#10;canada.json: 2,579 µs&#10;jeopardy.json: 41,429 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-3" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="204" text-anchor="middle">2.52</text>
<text class="nj-charts-cell" x="270" y="204" text-anchor="middle">2.55</text>
<text class="nj-charts-cell nj-charts-cell--small" x="270" y="217" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.84× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 427 µs&#10;citm_catalog.json: 1,084 µs&#10;canada.json: 2,955 µs&#10;jeopardy.json: 48,014 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.85× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 428 µs&#10;citm_catalog.json: 1,088 µs&#10;canada.json: 2,972 µs&#10;jeopardy.json: 48,845 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="317" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="204" text-anchor="middle">1.84</text>
<text class="nj-charts-cell" x="362" y="204" text-anchor="middle">1.85</text>
<text class="nj-charts-cell nj-charts-cell--small" x="362" y="217" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;2.32× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 384 µs&#10;citm_catalog.json: 990 µs&#10;canada.json: 2,576 µs&#10;jeopardy.json: 45,060 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;2.33× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 385 µs&#10;citm_catalog.json: 991 µs&#10;canada.json: 2,585 µs&#10;jeopardy.json: 46,396 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="409" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="204" text-anchor="middle">2.32</text>
<text class="nj-charts-cell" x="454" y="204" text-anchor="middle">2.33</text>
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="217" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.68× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 476 µs&#10;citm_catalog.json: 1,218 µs&#10;canada.json: 5,620 µs&#10;jeopardy.json: 61,631 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.71× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 490 µs&#10;citm_catalog.json: 1,229 µs&#10;canada.json: 5,653 µs&#10;jeopardy.json: 63,914 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="204" text-anchor="middle">1.68</text>
<text class="nj-charts-cell" x="546" y="204" text-anchor="middle">1.71</text>
<text class="nj-charts-cell nj-charts-cell--small" x="546" y="217" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;2.01× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 490 µs&#10;citm_catalog.json: 1,212 µs&#10;canada.json: 5,620 µs&#10;jeopardy.json: 59,715 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;2.04× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 505 µs&#10;citm_catalog.json: 1,224 µs&#10;canada.json: 5,661 µs&#10;jeopardy.json: 61,985 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="204" text-anchor="middle">2.01</text>
<text class="nj-charts-cell" x="638" y="204" text-anchor="middle">2.04</text>
<text class="nj-charts-cell nj-charts-cell--small" x="638" y="217" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.54× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 104 µs&#10;citm_catalog.json: 229 µs&#10;canada.json: 3,040 µs&#10;jeopardy.json: 18,906 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.63× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 113 µs&#10;citm_catalog.json: 236 µs&#10;canada.json: 3,046 µs&#10;jeopardy.json: 19,953 µs">
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.54</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.63</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">simd-json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;2.07× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 289 µs&#10;citm_catalog.json: 698 µs&#10;canada.json: 2,278 µs&#10;jeopardy.json: 38,874 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;2.08× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 289 µs&#10;citm_catalog.json: 698 µs&#10;canada.json: 2,278 µs&#10;jeopardy.json: 38,874 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">2.07</text>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">2.08</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.62× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 354 µs&#10;citm_catalog.json: 866 µs&#10;canada.json: 2,717 µs&#10;jeopardy.json: 47,518 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="317" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.62</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.40× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 364 µs&#10;citm_catalog.json: 914 µs&#10;canada.json: 2,657 µs&#10;jeopardy.json: 57,697 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.39× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 364 µs&#10;citm_catalog.json: 914 µs&#10;canada.json: 2,657 µs&#10;jeopardy.json: 57,697 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="409" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.40</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.39</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.86× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 948 µs&#10;citm_catalog.json: 2,102 µs&#10;canada.json: 7,654 µs&#10;jeopardy.json: 110,693 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.85× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 948 µs&#10;citm_catalog.json: 2,102 µs&#10;canada.json: 7,654 µs&#10;jeopardy.json: 110,693 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.86</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.85</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.41× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 952 µs&#10;citm_catalog.json: 2,111 µs&#10;canada.json: 7,658 µs&#10;jeopardy.json: 108,130 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.40× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 952 µs&#10;citm_catalog.json: 2,111 µs&#10;canada.json: 7,658 µs&#10;jeopardy.json: 108,130 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="593" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">3.41</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">3.40</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;3.08× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 355 µs&#10;citm_catalog.json: 478 µs&#10;canada.json: 2,728 µs&#10;jeopardy.json: 47,412 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;3.12× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 355 µs&#10;citm_catalog.json: 478 µs&#10;canada.json: 2,728 µs&#10;jeopardy.json: 47,412 µs">
<rect class="nj-heat-3" x="685" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">3.08</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">3.12</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="282" text-anchor="end">Glaze</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.03× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 328 µs&#10;citm_catalog.json: 864 µs&#10;canada.json: 1,304 µs&#10;jeopardy.json: 45,000 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.05× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 330 µs&#10;citm_catalog.json: 854 µs&#10;canada.json: 1,302 µs&#10;jeopardy.json: 46,181 µs">
<rect class="nj-heat-2" x="225" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">2.03</text>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">2.05</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;3.84× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 976 µs&#10;citm_catalog.json: 2,058 µs&#10;canada.json: 6,228 µs&#10;jeopardy.json: 99,307 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;3.86× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 985 µs&#10;citm_catalog.json: 2,057 µs&#10;canada.json: 6,272 µs&#10;jeopardy.json: 100,545 µs">
<rect class="nj-heat-3" x="317" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">3.84</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">3.86</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.79× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 310 µs&#10;citm_catalog.json: 846 µs&#10;canada.json: 1,304 µs&#10;jeopardy.json: 46,082 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.80× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 313 µs&#10;citm_catalog.json: 849 µs&#10;canada.json: 1,302 µs&#10;jeopardy.json: 47,315 µs">
<rect class="nj-heat-2" x="409" y="261" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="282" text-anchor="middle">1.79</text>
<text class="nj-charts-cell" x="431.5" y="282" text-anchor="middle">1.80</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.81× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 238 µs&#10;citm_catalog.json: 252 µs&#10;canada.json: 310 µs&#10;jeopardy.json: 36,025 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.82× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 239 µs&#10;citm_catalog.json: 258 µs&#10;canada.json: 310 µs&#10;jeopardy.json: 37,143 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<rect class="nj-heat-0" x="455" y="261" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="276" text-anchor="middle">0.81</text>
<text class="nj-charts-cell" x="476.5" y="276" text-anchor="middle">0.82</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="289" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;4.43× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,529 µs&#10;citm_catalog.json: 3,234 µs&#10;canada.json: 10,939 µs&#10;jeopardy.json: 178,986 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;4.42× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,529 µs&#10;citm_catalog.json: 3,231 µs&#10;canada.json: 10,938 µs&#10;jeopardy.json: 180,098 µs">
<rect class="nj-heat-3" x="501" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">4.43</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">4.42</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;5.18× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,500 µs&#10;citm_catalog.json: 3,192 µs&#10;canada.json: 10,949 µs&#10;jeopardy.json: 168,670 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;5.19× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,517 µs&#10;citm_catalog.json: 3,220 µs&#10;canada.json: 10,920 µs&#10;jeopardy.json: 168,662 µs">
<rect class="nj-heat-4" x="593" y="261" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="282" text-anchor="middle">5.18</text>
<text class="nj-charts-cell" x="615.5" y="282" text-anchor="middle">5.19</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;1.03× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 280 µs&#10;citm_catalog.json: 726 µs&#10;canada.json: 1,705 µs&#10;jeopardy.json: 39,266 µs&#10;minify_json only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;1.06× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 285 µs&#10;citm_catalog.json: 796 µs&#10;canada.json: 1,705 µs&#10;jeopardy.json: 40,374 µs&#10;minify_json only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="261" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="276" text-anchor="middle">1.03</text>
<text class="nj-charts-cell" x="660.5" y="276" text-anchor="middle">1.06</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="289" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;2.19× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 210 µs&#10;citm_catalog.json: 468 µs&#10;canada.json: 1,694 µs&#10;jeopardy.json: 33,394 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;2.24× the time of the fastest library (fully validating)&#10;twitter.json: 213 µs · generic&#10;citm_catalog.json: 470 µs · generic&#10;canada.json: 1,705 µs · generic (strict)&#10;jeopardy.json: 34,047 µs · generic">
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.19</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.24</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">Boost.J&#8203;SON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;2.55× the time of the fastest library (fully validating)&#10;way: S&#8203;AX (numbers: none)&#10;twitter.json: 529 µs&#10;citm_catalog.json: 992 µs&#10;canada.json: 1,466 µs&#10;jeopardy.json: 53,794 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;2.59× the time of the fastest library (fully validating)&#10;way: S&#8203;AX (numbers: none)&#10;twitter.json: 536 µs&#10;citm_catalog.json: 995 µs&#10;canada.json: 1,467 µs&#10;jeopardy.json: 54,696 µs">
<rect class="nj-heat-3" x="225" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="318" text-anchor="middle">2.55</text>
<text class="nj-charts-cell" x="270" y="318" text-anchor="middle">2.59</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.97× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 529 µs&#10;citm_catalog.json: 1,006 µs&#10;canada.json: 3,028 µs&#10;jeopardy.json: 53,687 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.98× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 529 µs&#10;citm_catalog.json: 1,008 µs&#10;canada.json: 3,042 µs&#10;jeopardy.json: 55,145 µs">
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">1.97</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">1.98</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;3.30× the time of the fastest library (fully validating)&#10;twitter.json: 622 µs · parse_into structs&#10;citm_catalog.json: 1,204 µs · parse_into structs&#10;canada.json: 3,621 µs · parse&#10;jeopardy.json: 66,725 µs · parse_into structs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;3.29× the time of the fastest library (fully validating)&#10;twitter.json: 620 µs · parse_into structs&#10;citm_catalog.json: 1,205 µs · parse_into structs&#10;canada.json: 3,634 µs · parse&#10;jeopardy.json: 67,861 µs · parse_into structs">
<rect class="nj-heat-3" x="409" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">3.30</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">3.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;3.22× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,364 µs&#10;citm_catalog.json: 1,989 µs&#10;canada.json: 6,492 µs&#10;jeopardy.json: 154,518 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;3.25× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,367 µs&#10;citm_catalog.json: 2,000 µs&#10;canada.json: 6,558 µs&#10;jeopardy.json: 159,053 µs">
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">3.22</text>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">3.25</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;3.84× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,378 µs&#10;citm_catalog.json: 1,979 µs&#10;canada.json: 6,494 µs&#10;jeopardy.json: 151,389 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;3.87× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,384 µs&#10;citm_catalog.json: 1,990 µs&#10;canada.json: 6,554 µs&#10;jeopardy.json: 155,141 µs">
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">3.84</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">3.87</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;3.68× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 497 µs&#10;citm_catalog.json: 501 µs&#10;canada.json: 2,874 µs&#10;jeopardy.json: 62,488 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;3.75× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 499 µs&#10;citm_catalog.json: 504 µs&#10;canada.json: 2,891 µs&#10;jeopardy.json: 63,231 µs">
<rect class="nj-heat-3" x="685" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">3.68</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">3.75</text>
</g>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="354" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.70× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 451 µs&#10;citm_catalog.json: 854 µs&#10;canada.json: 2,395 µs&#10;jeopardy.json: 56,129 µs">
<rect class="nj-heat-3" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.70</text>
<text class="nj-charts-rowlabel " x="216" y="354" text-anchor="end">serde_json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.48× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 452 µs&#10;citm_catalog.json: 1,103 µs&#10;canada.json: 1,556 µs&#10;jeopardy.json: 46,517 µs">
<rect class="nj-heat-2" x="225" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="354" text-anchor="middle">2.48</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.95× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 462 µs&#10;citm_catalog.json: 931 µs&#10;canada.json: 3,065 µs&#10;jeopardy.json: 62,740 µs">
<rect class="nj-heat-2" x="317" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">1.95</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.24× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 354 µs&#10;citm_catalog.json: 1,047 µs&#10;canada.json: 1,451 µs&#10;jeopardy.json: 44,984 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="271" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="348" text-anchor="middle">2.24</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="361" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;6.87× the time of the fastest library (fully validating)&#10;twitter.json: 1,358 µs · parse&#10;citm_catalog.json: 2,414 µs · parse&#10;canada.json: 5,876 µs · structs (from_json)&#10;jeopardy.json: 176,914 µs · parse">
<rect class="nj-heat-4" x="409" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="354" text-anchor="middle">6.87</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.58× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 652 µs&#10;citm_catalog.json: 1,242 µs&#10;canada.json: 4,772 µs&#10;jeopardy.json: 66,568 µs">
<rect class="nj-heat-3" x="317" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">2.58</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.58× the time of the fastest library (fully validating)&#10;twitter.json: 1,281 µs · ordered_json&#10;citm_catalog.json: 2,335 µs · ordered_json&#10;canada.json: 8,140 µs · parse&#10;jeopardy.json: 170,559 µs · ordered_json">
<rect class="nj-heat-3" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">3.58</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;2.41× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,125 µs&#10;canada.json: 1,560 µs&#10;jeopardy.json: 62,378 µs">
<rect class="nj-heat-2" x="409" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">2.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.85× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 1,592 µs&#10;citm_catalog.json: 2,692 µs&#10;canada.json: 8,135 µs&#10;jeopardy.json: 195,657 µs">
<rect class="nj-heat-3" x="593" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="354" text-anchor="middle">4.85</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select, checking less&#10;2.25× the time of the fastest fully validating library&#10;twitter.json: 410 µs · structs&#10;citm_catalog.json: 1,084 µs · structs&#10;canada.json: 1,455 µs · structs&#10;jeopardy.json: 62,378 µs · from_utf8 + structs (validates fully)&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="455" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">2.25</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;2.04× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 214 µs&#10;citm_catalog.json: 285 µs&#10;canada.json: 2,234 µs&#10;jeopardy.json: 30,902 µs">
<rect class="nj-heat-2" x="685" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">2.04</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.02× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 2,009 µs&#10;citm_catalog.json: 3,316 µs&#10;canada.json: 9,666 µs&#10;jeopardy.json: 251,931 µs">
<rect class="nj-heat-4" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.02</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="390" text-anchor="end">serde_json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.47× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 452 µs&#10;citm_catalog.json: 1,103 µs&#10;canada.json: 1,556 µs&#10;jeopardy.json: 46,517 µs">
<rect class="nj-heat-2" x="225" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="390" text-anchor="middle">2.47</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.86× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 2,004 µs&#10;citm_catalog.json: 3,290 µs&#10;canada.json: 9,792 µs&#10;jeopardy.json: 227,369 µs">
<rect class="nj-heat-4" x="593" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="354" text-anchor="middle">5.86</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.23× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 354 µs&#10;citm_catalog.json: 1,047 µs&#10;canada.json: 1,451 µs&#10;jeopardy.json: 44,984 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="271" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="384" text-anchor="middle">2.23</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.97× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 322 µs&#10;citm_catalog.json: 490 µs&#10;canada.json: 2,286 µs&#10;jeopardy.json: 49,967 µs">
<rect class="nj-heat-3" x="685" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">2.97</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.59× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 652 µs&#10;citm_catalog.json: 1,242 µs&#10;canada.json: 4,772 µs&#10;jeopardy.json: 66,568 µs">
<rect class="nj-heat-3" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">2.59</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="390" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.74× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 462 µs&#10;citm_catalog.json: 905 µs&#10;canada.json: 2,340 µs&#10;jeopardy.json: 54,684 µs">
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.74</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;2.42× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,125 µs&#10;canada.json: 1,560 µs&#10;jeopardy.json: 62,378 µs">
<rect class="nj-heat-2" x="409" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="390" text-anchor="middle">2.42</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.96× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 466 µs&#10;citm_catalog.json: 932 µs&#10;canada.json: 3,075 µs&#10;jeopardy.json: 64,003 µs">
<rect class="nj-heat-2" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.96</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select, checking less&#10;2.27× the time of the fastest fully validating library&#10;twitter.json: 410 µs · structs&#10;citm_catalog.json: 1,084 µs · structs&#10;canada.json: 1,455 µs · structs&#10;jeopardy.json: 62,378 µs · from_utf8 + structs (validates fully)&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="455" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="384" text-anchor="middle">2.27</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;6.91× the time of the fastest library (fully validating)&#10;twitter.json: 1,360 µs · parse&#10;citm_catalog.json: 2,407 µs · parse&#10;canada.json: 6,041 µs · structs (from_json)&#10;jeopardy.json: 180,705 µs · parse">
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">6.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.04× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 2,009 µs&#10;citm_catalog.json: 3,316 µs&#10;canada.json: 9,666 µs&#10;jeopardy.json: 251,931 µs">
<rect class="nj-heat-4" x="501" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">5.04</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.72× the time of the fastest library (fully validating)&#10;twitter.json: 1,266 µs · ordered_json&#10;citm_catalog.json: 2,329 µs · ordered_json&#10;canada.json: 8,305 µs · parse&#10;jeopardy.json: 199,819 µs · ordered_json">
<rect class="nj-heat-3" x="501" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.72</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.88× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 2,004 µs&#10;citm_catalog.json: 3,290 µs&#10;canada.json: 9,792 µs&#10;jeopardy.json: 227,369 µs">
<rect class="nj-heat-4" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">5.88</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.91× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 1,616 µs&#10;citm_catalog.json: 2,688 µs&#10;canada.json: 8,318 µs&#10;jeopardy.json: 199,579 µs">
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.93× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 322 µs&#10;citm_catalog.json: 490 µs&#10;canada.json: 2,286 µs&#10;jeopardy.json: 49,967 µs">
<rect class="nj-heat-3" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.93</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;2.08× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 216 µs&#10;citm_catalog.json: 286 µs&#10;canada.json: 2,250 µs&#10;jeopardy.json: 31,183 µs">
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.08</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="426" text-anchor="end">RapidJSON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.68× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,310 µs&#10;citm_catalog.json: 1,570 µs&#10;canada.json: 6,748 µs&#10;jeopardy.json: 139,647 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.78× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 1,585 µs&#10;canada.json: 6,862 µs&#10;jeopardy.json: 141,752 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.68</text>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.78</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;4.32× the time of the fastest fully validating library&#10;twitter.json: 694 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,144 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,748 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 63,372 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;4.40× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 700 µs&#10;citm_catalog.json: 1,178 µs&#10;canada.json: 6,838 µs&#10;jeopardy.json: 63,673 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="271" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.32</text>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.40</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;4.43× the time of the fastest library (fully validating)&#10;twitter.json: 1,330 µs · S&#8203;AX&#10;citm_catalog.json: 1,638 µs · S&#8203;AX&#10;canada.json: 6,895 µs · S&#8203;AX&#10;jeopardy.json: 146,234 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;4.46× the time of the fastest library (fully validating)&#10;twitter.json: 1,331 µs · S&#8203;AX&#10;citm_catalog.json: 1,655 µs · S&#8203;AX&#10;canada.json: 6,938 µs · S&#8203;AX&#10;jeopardy.json: 149,509 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="317" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">4.43</text>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">4.46</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.98× the time of the fastest fully validating library&#10;twitter.json: 743 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,246 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,895 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 70,310 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;3.01× the time of the fastest fully validating library&#10;twitter.json: 748 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,276 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,938 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 71,697 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="363" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.98</text>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">3.01</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;5.99× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,314 µs&#10;citm_catalog.json: 1,566 µs&#10;canada.json: 6,754 µs&#10;jeopardy.json: 142,108 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;6.01× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,316 µs&#10;citm_catalog.json: 1,569 µs&#10;canada.json: 6,800 µs&#10;jeopardy.json: 145,958 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="409" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">5.99</text>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">6.01</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.90× the time of the fastest fully validating library&#10;twitter.json: 698 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,141 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,754 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 66,120 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.95× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 702 µs&#10;citm_catalog.json: 1,169 µs&#10;canada.json: 6,799 µs&#10;jeopardy.json: 68,045 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="455" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.90</text>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.95</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;4.85× the time of the fastest library (fully validating)&#10;twitter.json: 1,916 µs · Document&#10;citm_catalog.json: 2,397 µs · insitu (copy)&#10;canada.json: 13,720 µs · insitu (copy)&#10;jeopardy.json: 220,366 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;4.88× the time of the fastest library (fully validating)&#10;twitter.json: 1,924 µs · Document&#10;citm_catalog.json: 2,404 µs · insitu (copy)&#10;canada.json: 13,830 µs · insitu (copy)&#10;jeopardy.json: 226,139 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">4.85</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">4.88</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;3.80× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,352 µs&#10;citm_catalog.json: 1,969 µs&#10;canada.json: 13,694 µs&#10;jeopardy.json: 144,422 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;3.84× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,354 µs&#10;citm_catalog.json: 2,001 µs&#10;canada.json: 13,825 µs&#10;jeopardy.json: 148,686 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="547" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">3.80</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">3.84</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;4.85× the time of the fastest library (fully validating)&#10;twitter.json: 1,500 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 1,807 µs · S&#8203;AX to Writer&#10;canada.json: 14,222 µs · Document + Writer&#10;jeopardy.json: 176,922 µs · S&#8203;AX to Writer">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;4.89× the time of the fastest library (fully validating)&#10;twitter.json: 1,512 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 1,816 µs · S&#8203;AX to Writer&#10;canada.json: 14,281 µs · Document + Writer&#10;jeopardy.json: 180,596 µs · S&#8203;AX to Writer">
<rect class="nj-heat-3" x="593" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">4.85</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">4.89</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;4.53× the time of the fastest fully validating library&#10;twitter.json: 1,300 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 1,705 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 14,208 µs · Document + Writer (no encoding check)&#10;jeopardy.json: 164,205 µs · S&#8203;AX to Writer (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;4.28× the time of the fastest fully validating library&#10;twitter.json: 1,328 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 1,714 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 10,904 µs · S&#8203;AX to Writer (raw numbers) (validates fully)&#10;jeopardy.json: 167,694 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;copies each number&#x27;s text instead of formatting it (kParseNumbersAsStringsFlag)">
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">4.53</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U</text>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">4.28</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;5.74× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 592 µs&#10;citm_catalog.json: 820 µs&#10;canada.json: 6,864 µs&#10;jeopardy.json: 79,510 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;5.87× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 598 µs&#10;citm_catalog.json: 822 µs&#10;canada.json: 6,889 µs&#10;jeopardy.json: 81,406 µs">
<rect class="nj-heat-4" x="685" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">5.74</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">5.87</text>
</g>
<text class="nj-charts-tick nj-charts-tick--l" x="8" y="472">time relative to the fastest fully validating library, less is better</text>
<g><rect class="nj-heat-0" x="8" y="482" width="76" height="20" rx="3"/>

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 46 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog nj-charts--heat" viewBox="0 0 784 510" role="img" aria-labelledby="nj-blog-uc-x86-clang nj-blog-uc-x86-clang-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-uc-x86-clang">Use cases: time of each library relative to the fastest, x86-64 with Clang 23</title>
<desc id="nj-blog-uc-x86-clang-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00; nlohmann/json json_document minify: 1.00; nlohmann/json json_document write: 1.00; yyjson validate: 2.09; yyjson sum: 1.17; yyjson select: 1.37; yyjson edit: 1.48; yyjson minify: 1.29; yyjson write: 1.18; sonic-cpp validate: no fully validating way (2.27 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.22 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.50 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.23 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (1.38 checking less, no U&#8203;TF-8); sonic-cpp write: 1.38; sonic-rs (Rust) validate: 1.83; sonic-rs (Rust) sum: 1.06; sonic-rs (Rust) select: 1.35; sonic-rs (Rust) edit: 1.92; sonic-rs (Rust) minify: 1.76; sonic-rs (Rust) write: 1.96; simdjson validate: 1.97; simdjson sum: 1.15; simdjson select: 1.35 (0.56 checking less, partial); simdjson edit: n/a; simdjson minify: 1.68 (0.19 checking less, partial); simdjson write: 2.30; Boost.J&#8203;SON validate: 1.72; Boost.J&#8203;SON sum: 1.13; Boost.J&#8203;SON select: 2.23; Boost.J&#8203;SON edit: 2.37; Boost.J&#8203;SON minify: 2.66; Boost.J&#8203;SON write: 2.33; simd-json (Rust) validate: 3.40; simd-json (Rust) sum: 1.81; simd-json (Rust) select: 2.65; simd-json (Rust) edit: 3.04; simd-json (Rust) minify: 3.52; simd-json (Rust) write: 2.17; serde_json (Rust) validate: 2.27 (2.04 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.21; serde_json (Rust) select: 1.76; serde_json (Rust) edit: 4.94; serde_json (Rust) minify: 5.37; serde_json (Rust) write: 2.12; Glaze validate: 2.07; Glaze sum: 4.39 (3.96 checking less, partial); Glaze select: 1.42 (0.62 checking less, partial); Glaze edit: 6.29; Glaze minify: 6.49 (0.71 checking less, partial); Glaze write: 1.97; nlohmann/json json validate: 2.66; nlohmann/json json sum: 1.53; nlohmann/json json select: 8.63; nlohmann/json json edit: 4.31; nlohmann/json json minify: 5.41; nlohmann/json json write: 1.92; RapidJSON validate: 6.67 (5.04 checking less, no U&#8203;TF-8); RapidJSON sum: 3.32 (2.61 checking less, no U&#8203;TF-8); RapidJSON select: 4.52 (3.59 checking less, no U&#8203;TF-8); RapidJSON edit: 3.27 (2.79 checking less, no U&#8203;TF-8); RapidJSON minify: 3.59 (2.99 checking less, no U&#8203;TF-8); RapidJSON write: 2.95.</desc>
<desc id="nj-blog-uc-x86-clang-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.82 doing less, N); nlohmann/json json_document minify: 1.00 (0.80 doing less, N); nlohmann/json json_document write: 1.00 (0.70 doing less, N); yyjson validate: 2.23; yyjson sum: 1.16; yyjson select: 1.43; yyjson edit: 1.48; yyjson minify: 1.24 (1.08 doing less, N); yyjson write: 1.15; sonic-cpp validate: no fully validating way (2.35 doing less, U); sonic-cpp sum: no fully validating way (1.21 doing less, U); sonic-cpp select: no fully validating way (1.53 doing less, U); sonic-cpp edit: no fully validating way (1.19 doing less, U); sonic-cpp minify: no fully validating way (1.33 doing less, U); sonic-cpp write: 1.31; sonic-rs (Rust) validate: 1.91; sonic-rs (Rust) sum: 1.07; sonic-rs (Rust) select: 1.38; sonic-rs (Rust) edit: 1.90; sonic-rs (Rust) minify: 1.71; sonic-rs (Rust) write: 1.98; simdjson validate: 2.08; simdjson sum: 1.14; simdjson select: 1.33 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.63 (0.18 doing less, P); simdjson write: 2.26; Boost.J&#8203;SON validate: 1.81; Boost.J&#8203;SON sum: 1.14; Boost.J&#8203;SON select: 2.24; Boost.J&#8203;SON edit: 2.35; Boost.J&#8203;SON minify: 2.64; Boost.J&#8203;SON write: 2.37; simd-json (Rust) validate: 3.58; simd-json (Rust) sum: 1.80; simd-json (Rust) select: 2.64; simd-json (Rust) edit: 2.88; simd-json (Rust) minify: 3.34; simd-json (Rust) write: 2.26; serde_json (Rust) validate: 2.37 (2.12 doing less, U); serde_json (Rust) sum: 2.22; serde_json (Rust) select: 1.77; serde_json (Rust) edit: 4.53; serde_json (Rust) minify: 4.86; serde_json (Rust) write: 2.19; Glaze validate: 2.20; Glaze sum: 4.04 (3.75 doing less, P); Glaze select: 1.40 (0.61 doing less, P); Glaze edit: 5.43; Glaze minify: 5.56 (0.67 doing less, P); Glaze write: 1.95; nlohmann/json json validate: 2.71; nlohmann/json json sum: 1.41; nlohmann/json json select: 7.47; nlohmann/json json edit: 3.81; nlohmann/json json minify: 4.67; nlohmann/json json write: 1.86; RapidJSON validate: 6.87 (5.20 doing less, U); RapidJSON sum: 3.25 (2.48 doing less, U); RapidJSON select: 4.52 (3.58 doing less, U); RapidJSON edit: 3.12 (2.69 doing less, U); RapidJSON minify: 3.38 (2.49 doing less, U N); RapidJSON write: 2.84.</desc>
<text class="nj-charts-tick" x="270" y="34">validate</text>
<text class="nj-charts-tick" x="362" y="34">sum</text>
<text class="nj-charts-tick" x="454" y="34">select</text>
@@ -8,124 +8,144 @@
<text class="nj-charts-tick" x="638" y="34">minify</text>
<text class="nj-charts-tick" x="730" y="34">write</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 254 µs&#10;citm_catalog.json: 544 µs&#10;canada.json: 1,110 µs&#10;jeopardy.json: 37,852 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 254 µs&#10;citm_catalog.json: 517 µs&#10;canada.json: 995 µs&#10;jeopardy.json: 34,154 µs">
<rect class="nj-heat-0" x="225" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 375 µs&#10;citm_catalog.json: 898 µs&#10;canada.json: 3,822 µs&#10;jeopardy.json: 94,039 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 372 µs&#10;citm_catalog.json: 948 µs&#10;canada.json: 3,720 µs&#10;jeopardy.json: 86,351 µs">
<rect class="nj-heat-0" x="317" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;twitter.json: 320 µs · parse&#10;citm_catalog.json: 779 µs · parse&#10;canada.json: 1,446 µs · structs (from_json)&#10;jeopardy.json: 97,121 µs · parse">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;twitter.json: 314 µs · parse&#10;citm_catalog.json: 778 µs · parse&#10;canada.json: 1,387 µs · structs (from_json)&#10;jeopardy.json: 87,988 µs · parse">
<rect class="nj-heat-0" x="409" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 525 µs&#10;citm_catalog.json: 1,169 µs&#10;canada.json: 6,142 µs&#10;jeopardy.json: 188,750 µs">
<rect class="nj-heat-0" x="501" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 524 µs&#10;citm_catalog.json: 1,143 µs&#10;canada.json: 5,462 µs&#10;jeopardy.json: 202,684 µs">
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 471 µs&#10;citm_catalog.json: 1,018 µs&#10;canada.json: 5,144 µs&#10;jeopardy.json: 154,046 µs">
<rect class="nj-heat-0" x="593" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less&#10;0.82× the time of the fastest fully validating library&#10;twitter.json: 519 µs · editable (source numbers) (validates fully)&#10;citm_catalog.json: 1,143 µs · editable (validates fully)&#10;canada.json: 2,443 µs · editable (source numbers) (validates fully)&#10;jeopardy.json: 202,684 µs · editable (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.82</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 153 µs&#10;citm_catalog.json: 273 µs&#10;canada.json: 4,019 µs&#10;jeopardy.json: 71,355 µs">
<rect class="nj-heat-0" x="685" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 474 µs&#10;citm_catalog.json: 1,050 µs&#10;canada.json: 5,333 µs&#10;jeopardy.json: 156,634 µs">
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less&#10;0.80× the time of the fastest fully validating library&#10;way: parse + dump (source numbers)&#10;twitter.json: 466 µs (validates fully)&#10;citm_catalog.json: 1,048 µs (validates fully)&#10;canada.json: 2,402 µs (validates fully)&#10;jeopardy.json: 147,779 µs (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.80</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 159 µs&#10;citm_catalog.json: 277 µs&#10;canada.json: 3,798 µs&#10;jeopardy.json: 67,700 µs">
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less&#10;0.70× the time of the fastest fully validating library&#10;way: dump (source numbers)&#10;twitter.json: 152 µs (validates fully)&#10;citm_catalog.json: 275 µs (validates fully)&#10;canada.json: 986 µs (validates fully)&#10;jeopardy.json: 67,141 µs (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.70</text>
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.09× the time of the fastest library (fully validating)&#10;twitter.json: 380 µs · insitu (copy)&#10;citm_catalog.json: 982 µs · read&#10;canada.json: 2,325 µs · read (raw numbers)&#10;jeopardy.json: 127,605 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.23× the time of the fastest library (fully validating)&#10;twitter.json: 380 µs · read&#10;citm_catalog.json: 897 µs · read&#10;canada.json: 2,573 µs · read (raw numbers)&#10;jeopardy.json: 125,497 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.09</text>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.23</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.17× the time of the fastest library (fully validating)&#10;twitter.json: 435 µs · read&#10;citm_catalog.json: 1,086 µs · read&#10;canada.json: 3,458 µs · insitu (copy)&#10;jeopardy.json: 141,006 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.16× the time of the fastest library (fully validating)&#10;twitter.json: 435 µs · insitu (copy)&#10;citm_catalog.json: 1,054 µs · read&#10;canada.json: 3,456 µs · read&#10;jeopardy.json: 131,400 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="317" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.17</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.16</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.37× the time of the fastest library (fully validating)&#10;twitter.json: 392 µs · read&#10;citm_catalog.json: 934 µs · read&#10;canada.json: 2,385 µs · read (raw numbers)&#10;jeopardy.json: 142,562 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.43× the time of the fastest library (fully validating)&#10;twitter.json: 389 µs · insitu (copy)&#10;citm_catalog.json: 900 µs · read&#10;canada.json: 2,627 µs · read (raw numbers)&#10;jeopardy.json: 134,301 µs · read (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="409" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.37</text>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.43</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.48× the time of the fastest library (fully validating)&#10;twitter.json: 813 µs · insitu (copy) + mut copy&#10;citm_catalog.json: 1,845 µs · mut copy&#10;canada.json: 7,648 µs · mut copy&#10;jeopardy.json: 301,256 µs · mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.48× the time of the fastest library (fully validating)&#10;twitter.json: 869 µs · mut copy&#10;citm_catalog.json: 1,674 µs · insitu (copy) + mut copy&#10;canada.json: 7,099 µs · mut copy&#10;jeopardy.json: 309,767 µs · mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="501" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.48</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.29× the time of the fastest library (fully validating)&#10;twitter.json: 629 µs · read + write&#10;citm_catalog.json: 1,281 µs · insitu (copy) + write&#10;canada.json: 6,146 µs · read + write&#10;jeopardy.json: 211,812 µs · insitu (copy) + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.29</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.24× the time of the fastest library (fully validating)&#10;twitter.json: 631 µs · read + write&#10;citm_catalog.json: 1,262 µs · insitu (copy) + write&#10;canada.json: 6,304 µs · insitu (copy) + write&#10;jeopardy.json: 196,789 µs · read + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.24</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.18× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 217 µs&#10;citm_catalog.json: 376 µs&#10;canada.json: 3,618 µs&#10;jeopardy.json: 77,694 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less&#10;1.08× the time of the fastest fully validating library&#10;twitter.json: 631 µs · read + write (validates fully)&#10;citm_catalog.json: 1,246 µs · read (raw numbers) + write (validates fully)&#10;canada.json: 3,614 µs · read (raw numbers) + write (validates fully)&#10;jeopardy.json: 196,789 µs · read + write (validates fully)&#10;copies each number&#x27;s text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)">
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.08</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.15× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 216 µs&#10;citm_catalog.json: 359 µs&#10;canada.json: 3,514 µs&#10;jeopardy.json: 73,410 µs">
<rect class="nj-heat-1" x="685" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.18</text>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.15</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">sonic-cpp</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.27× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 452 µs&#10;citm_catalog.json: 1,077 µs&#10;canada.json: 3,054 µs&#10;jeopardy.json: 103,704 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.35× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 445 µs&#10;citm_catalog.json: 1,000 µs&#10;canada.json: 3,042 µs&#10;jeopardy.json: 100,684 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.27</text>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.35</text>
<text class="nj-charts-cell nj-charts-cell--small" x="270" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.22× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 503 µs&#10;citm_catalog.json: 1,181 µs&#10;canada.json: 3,913 µs&#10;jeopardy.json: 116,464 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.21× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 508 µs&#10;citm_catalog.json: 1,171 µs&#10;canada.json: 3,661 µs&#10;jeopardy.json: 110,607 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="317" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.22</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.21</text>
<text class="nj-charts-cell nj-charts-cell--small" x="362" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.50× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 458 µs&#10;citm_catalog.json: 1,038 µs&#10;canada.json: 3,127 µs&#10;jeopardy.json: 119,384 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.53× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 456 µs&#10;citm_catalog.json: 1,013 µs&#10;canada.json: 3,104 µs&#10;jeopardy.json: 113,400 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="409" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.50</text>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.53</text>
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.23× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 656 µs&#10;citm_catalog.json: 1,542 µs&#10;canada.json: 8,630 µs&#10;jeopardy.json: 185,270 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.19× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 634 µs&#10;citm_catalog.json: 1,458 µs&#10;canada.json: 7,852 µs&#10;jeopardy.json: 183,532 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="501" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.23</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.19</text>
<text class="nj-charts-cell nj-charts-cell--small" x="546" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.38× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 662 µs&#10;citm_catalog.json: 1,523 µs&#10;canada.json: 8,111 µs&#10;jeopardy.json: 170,679 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.33× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 646 µs&#10;citm_catalog.json: 1,482 µs&#10;canada.json: 8,135 µs&#10;jeopardy.json: 167,844 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="593" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.38</text>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.33</text>
<text class="nj-charts-cell nj-charts-cell--small" x="638" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.38× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 229 µs&#10;citm_catalog.json: 501 µs&#10;canada.json: 5,302 µs&#10;jeopardy.json: 72,121 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.31× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 219 µs&#10;citm_catalog.json: 473 µs&#10;canada.json: 4,853 µs&#10;jeopardy.json: 67,189 µs">
<rect class="nj-heat-1" x="685" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.38</text>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.31</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="174" text-anchor="end">sonic-rs (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.83× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 482 µs&#10;citm_catalog.json: 969 µs&#10;canada.json: 2,489 µs&#10;jeopardy.json: 55,486 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.91× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 501 µs&#10;citm_catalog.json: 970 µs&#10;canada.json: 2,249 µs&#10;jeopardy.json: 54,369 µs">
<rect class="nj-heat-2" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.83</text>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.06× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 503 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,418 µs&#10;jeopardy.json: 59,993 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.07× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 501 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,397 µs&#10;jeopardy.json: 59,583 µs">
<rect class="nj-heat-0" x="317" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.06</text>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.07</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.35× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 538 µs&#10;citm_catalog.json: 1,028 µs&#10;canada.json: 2,283 µs&#10;jeopardy.json: 91,950 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.38× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 504 µs&#10;citm_catalog.json: 1,033 µs&#10;canada.json: 2,328 µs&#10;jeopardy.json: 90,486 µs">
<rect class="nj-heat-1" x="409" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.35</text>
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.38</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.92× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,201 µs&#10;citm_catalog.json: 2,416 µs&#10;canada.json: 7,958 µs&#10;jeopardy.json: 421,718 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.90× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,197 µs&#10;citm_catalog.json: 2,389 µs&#10;canada.json: 7,744 µs&#10;jeopardy.json: 390,952 µs">
<rect class="nj-heat-2" x="501" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">1.92</text>
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">1.90</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.76× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,003 µs&#10;citm_catalog.json: 2,174 µs&#10;canada.json: 7,753 µs&#10;jeopardy.json: 217,354 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.71× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,000 µs&#10;citm_catalog.json: 2,097 µs&#10;canada.json: 7,795 µs&#10;jeopardy.json: 215,280 µs">
<rect class="nj-heat-2" x="593" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="174" text-anchor="middle">1.76</text>
<text class="nj-charts-cell" x="638" y="174" text-anchor="middle">1.71</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;1.96× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 445 µs&#10;citm_catalog.json: 931 µs&#10;canada.json: 4,048 µs&#10;jeopardy.json: 104,487 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;1.98× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 434 µs&#10;citm_catalog.json: 927 µs&#10;canada.json: 3,987 µs&#10;jeopardy.json: 109,176 µs">
<rect class="nj-heat-2" x="685" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">1.96</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">1.98</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="210" text-anchor="end">simdjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;1.97× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 308 µs&#10;citm_catalog.json: 726 µs&#10;canada.json: 3,190 µs&#10;jeopardy.json: 123,266 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;2.08× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 306 µs&#10;citm_catalog.json: 722 µs&#10;canada.json: 3,203 µs&#10;jeopardy.json: 118,182 µs">
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.97</text>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">2.08</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.15× the time of the fastest library (fully validating)&#10;twitter.json: 395 µs · D&#8203;OM&#10;citm_catalog.json: 1,028 µs · D&#8203;OM&#10;canada.json: 4,221 µs · D&#8203;OM&#10;jeopardy.json: 121,944 µs · On-Demand">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.14× the time of the fastest library (fully validating)&#10;twitter.json: 398 µs · D&#8203;OM&#10;citm_catalog.json: 981 µs · D&#8203;OM&#10;canada.json: 4,131 µs · D&#8203;OM&#10;jeopardy.json: 116,924 µs · On-Demand">
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.15</text>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.35× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 318 µs&#10;citm_catalog.json: 798 µs&#10;canada.json: 3,369 µs&#10;jeopardy.json: 135,711 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.33× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 316 µs&#10;citm_catalog.json: 736 µs&#10;canada.json: 3,272 µs&#10;jeopardy.json: 121,563 µs">
<rect class="nj-heat-1" x="409" y="189" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="210" text-anchor="middle">1.35</text>
<text class="nj-charts-cell" x="431.5" y="210" text-anchor="middle">1.33</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.56× the time of the fastest fully validating library&#10;twitter.json: 183 µs · On-Demand structs&#10;citm_catalog.json: 500 µs · On-Demand (key selectors)&#10;canada.json: 705 µs · On-Demand&#10;jeopardy.json: 54,241 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.56× the time of the fastest fully validating library&#10;twitter.json: 182 µs · On-Demand&#10;citm_catalog.json: 495 µs · On-Demand&#10;canada.json: 698 µs · On-Demand (key selectors)&#10;jeopardy.json: 47,588 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<rect class="nj-heat-0" x="455" y="189" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="204" text-anchor="middle">0.56</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="217" text-anchor="middle">P</text>
@@ -134,213 +154,213 @@
<rect class="nj-heat-na" x="501" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-tick" x="546" y="210">n/a</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.68× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 841 µs&#10;citm_catalog.json: 1,430 µs&#10;canada.json: 8,343 µs&#10;jeopardy.json: 299,968 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.63× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 842 µs&#10;citm_catalog.json: 1,430 µs&#10;canada.json: 8,105 µs&#10;jeopardy.json: 297,946 µs">
<rect class="nj-heat-2" x="593" y="189" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="210" text-anchor="middle">1.68</text>
<text class="nj-charts-cell" x="615.5" y="210" text-anchor="middle">1.63</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.19× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 104 µs&#10;citm_catalog.json: 256 µs&#10;canada.json: 375 µs&#10;jeopardy.json: 46,051 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.18× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 98.8 µs&#10;citm_catalog.json: 269 µs&#10;canada.json: 332 µs&#10;jeopardy.json: 44,830 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="189" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="204" text-anchor="middle">0.19</text>
<text class="nj-charts-cell" x="660.5" y="204" text-anchor="middle">0.18</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="217" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.30× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 496 µs&#10;citm_catalog.json: 679 µs&#10;canada.json: 5,335 µs&#10;jeopardy.json: 187,340 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.26× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 503 µs&#10;citm_catalog.json: 672 µs&#10;canada.json: 5,039 µs&#10;jeopardy.json: 173,990 µs">
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.30</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.26</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J&#8203;SON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.72× the time of the fastest library (fully validating)&#10;way: S&#8203;AX (numbers: none)&#10;twitter.json: 576 µs&#10;citm_catalog.json: 913 µs&#10;canada.json: 1,678 µs&#10;jeopardy.json: 57,742 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.81× the time of the fastest library (fully validating)&#10;twitter.json: 569 µs · S&#8203;AX (numbers: none)&#10;citm_catalog.json: 909 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,683 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 54,986 µs · S&#8203;AX">
<rect class="nj-heat-2" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.72</text>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.81</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.13× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 582 µs&#10;citm_catalog.json: 939 µs&#10;canada.json: 6,061 µs&#10;jeopardy.json: 60,122 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.14× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 580 µs&#10;citm_catalog.json: 924 µs&#10;canada.json: 5,915 µs&#10;jeopardy.json: 60,351 µs">
<rect class="nj-heat-0" x="317" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.13</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.14</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.23× the time of the fastest library (fully validating)&#10;twitter.json: 788 µs · parse_into structs&#10;citm_catalog.json: 1,479 µs · parse_into structs&#10;canada.json: 7,216 µs · parse&#10;jeopardy.json: 103,495 µs · parse_into structs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.24× the time of the fastest library (fully validating)&#10;twitter.json: 767 µs · parse_into structs&#10;citm_catalog.json: 1,389 µs · parse_into structs&#10;canada.json: 7,310 µs · parse&#10;jeopardy.json: 95,891 µs · parse_into structs">
<rect class="nj-heat-2" x="409" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.23</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.24</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.37× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,733 µs&#10;citm_catalog.json: 2,761 µs&#10;canada.json: 14,208 µs&#10;jeopardy.json: 330,404 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.35× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,723 µs&#10;citm_catalog.json: 2,574 µs&#10;canada.json: 12,679 µs&#10;jeopardy.json: 358,088 µs">
<rect class="nj-heat-2" x="501" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.37</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.35</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.66× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,745 µs&#10;citm_catalog.json: 2,654 µs&#10;canada.json: 12,599 µs&#10;jeopardy.json: 324,994 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.64× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,753 µs&#10;citm_catalog.json: 2,591 µs&#10;canada.json: 13,210 µs&#10;jeopardy.json: 339,360 µs">
<rect class="nj-heat-3" x="593" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.66</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.64</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.33× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 485 µs&#10;citm_catalog.json: 892 µs&#10;canada.json: 6,128 µs&#10;jeopardy.json: 134,196 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.37× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 487 µs&#10;citm_catalog.json: 900 µs&#10;canada.json: 5,691 µs&#10;jeopardy.json: 142,547 µs">
<rect class="nj-heat-2" x="685" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.33</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.37</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="282" text-anchor="end">simd-json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.40× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 563 µs&#10;citm_catalog.json: 1,403 µs&#10;canada.json: 4,630 µs&#10;jeopardy.json: 212,467 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.58× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 567 µs&#10;citm_catalog.json: 1,430 µs&#10;canada.json: 4,359 µs&#10;jeopardy.json: 207,551 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="225" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.40</text>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.58</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.81× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 668 µs&#10;citm_catalog.json: 1,688 µs&#10;canada.json: 5,134 µs&#10;jeopardy.json: 224,411 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.80× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 681 µs&#10;citm_catalog.json: 1,650 µs&#10;canada.json: 5,083 µs&#10;jeopardy.json: 210,185 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="317" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.81</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.80</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.65× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 740 µs&#10;citm_catalog.json: 1,802 µs&#10;canada.json: 4,997 µs&#10;jeopardy.json: 258,566 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.64× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 679 µs&#10;citm_catalog.json: 1,731 µs&#10;canada.json: 5,144 µs&#10;jeopardy.json: 239,164 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.65</text>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.64</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;3.04× the time of the fastest library (fully validating)&#10;twitter.json: 1,924 µs · borrowed (copy)&#10;citm_catalog.json: 4,575 µs · borrowed (copy)&#10;canada.json: 15,746 µs · owned (copy)&#10;jeopardy.json: 435,817 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.88× the time of the fastest library (fully validating)&#10;twitter.json: 1,862 µs · borrowed (copy)&#10;citm_catalog.json: 4,194 µs · borrowed (copy)&#10;canada.json: 14,896 µs · owned (copy)&#10;jeopardy.json: 391,369 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">3.04</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">2.88</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.52× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,878 µs&#10;citm_catalog.json: 4,655 µs&#10;canada.json: 15,955 µs&#10;jeopardy.json: 419,412 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.34× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,889 µs&#10;citm_catalog.json: 4,196 µs&#10;canada.json: 15,716 µs&#10;jeopardy.json: 414,377 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="593" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.52</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.34</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.17× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 597 µs&#10;citm_catalog.json: 809 µs&#10;canada.json: 4,817 µs&#10;jeopardy.json: 114,245 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.26× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 582 µs&#10;citm_catalog.json: 800 µs&#10;canada.json: 5,147 µs&#10;jeopardy.json: 122,623 µs">
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.17</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.26</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">serde_json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.27× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 622 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,621 µs&#10;jeopardy.json: 65,602 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.37× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 624 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,406 µs&#10;jeopardy.json: 64,720 µs">
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.27</text>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.37</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.04× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,371 µs&#10;canada.json: 2,538 µs&#10;jeopardy.json: 60,154 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.12× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 484 µs&#10;citm_catalog.json: 1,370 µs&#10;canada.json: 2,314 µs&#10;jeopardy.json: 58,247 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.04</text>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.12</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="325" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.21× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,316 µs&#10;canada.json: 7,241 µs&#10;jeopardy.json: 130,249 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.22× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,288 µs&#10;canada.json: 7,127 µs&#10;jeopardy.json: 129,497 µs">
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.21</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.22</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.76× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 722 µs&#10;citm_catalog.json: 1,559 µs&#10;canada.json: 2,585 µs&#10;jeopardy.json: 114,701 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.77× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 701 µs&#10;citm_catalog.json: 1,532 µs&#10;canada.json: 2,529 µs&#10;jeopardy.json: 107,316 µs">
<rect class="nj-heat-2" x="409" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.76</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.77</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;4.94× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,036 µs&#10;citm_catalog.json: 7,181 µs&#10;canada.json: 17,371 µs&#10;jeopardy.json: 843,034 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;4.53× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,042 µs&#10;citm_catalog.json: 6,586 µs&#10;canada.json: 16,631 µs&#10;jeopardy.json: 632,766 µs">
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.94</text>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.53</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.37× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,220 µs&#10;citm_catalog.json: 6,876 µs&#10;canada.json: 17,276 µs&#10;jeopardy.json: 628,192 µs">
<rect class="nj-heat-4" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.37</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;4.86× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,012 µs&#10;citm_catalog.json: 6,583 µs&#10;canada.json: 17,306 µs&#10;jeopardy.json: 509,702 µs">
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.86</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.12× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 560 µs&#10;citm_catalog.json: 848 µs&#10;canada.json: 3,964 µs&#10;jeopardy.json: 129,473 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.19× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 550 µs&#10;citm_catalog.json: 887 µs&#10;canada.json: 4,005 µs&#10;jeopardy.json: 134,163 µs">
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.12</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.19</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="354" text-anchor="end">Glaze</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.07× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 593 µs&#10;citm_catalog.json: 1,272 µs&#10;canada.json: 1,778 µs&#10;jeopardy.json: 79,561 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.20× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 582 µs&#10;citm_catalog.json: 1,229 µs&#10;canada.json: 2,011 µs&#10;jeopardy.json: 72,734 µs">
<rect class="nj-heat-2" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.07</text>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.20</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.39× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,522 µs&#10;citm_catalog.json: 4,278 µs&#10;canada.json: 12,460 µs&#10;jeopardy.json: 334,494 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.04× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,392 µs&#10;citm_catalog.json: 4,048 µs&#10;canada.json: 11,814 µs&#10;jeopardy.json: 264,675 µs">
<rect class="nj-heat-3" x="317" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.39</text>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.04</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;3.96× the time of the fastest fully validating library&#10;twitter.json: 2,522 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,278 µs · generic (double, strict) (validates fully)&#10;canada.json: 12,460 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 221,802 µs · lazy_json&#10;reads lazily: lazy_json reads only what you ask for and steps over the rest">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;3.75× the time of the fastest fully validating library&#10;twitter.json: 2,383 µs · generic (double)&#10;citm_catalog.json: 4,010 µs · generic (double)&#10;canada.json: 11,814 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 198,418 µs · lazy_json&#10;accepts trailing garbage after the value: Glaze&#x27;s default (validate_trailing_whitespace checks it)&#10;reads lazily: lazy_json reads only what you ask for and steps over the rest">
<rect class="nj-heat-3" x="363" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">3.96</text>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">3.75</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.42× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 552 µs&#10;citm_catalog.json: 1,462 µs&#10;canada.json: 1,833 µs&#10;jeopardy.json: 96,315 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.40× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 542 µs&#10;citm_catalog.json: 1,370 µs&#10;canada.json: 1,870 µs&#10;jeopardy.json: 82,551 µs">
<rect class="nj-heat-1" x="409" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.42</text>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.40</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.62× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 344 µs&#10;citm_catalog.json: 442 µs&#10;canada.json: 464 µs&#10;jeopardy.json: 74,134 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.61× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 337 µs&#10;citm_catalog.json: 418 µs&#10;canada.json: 446 µs&#10;jeopardy.json: 67,047 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<rect class="nj-heat-0" x="455" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.62</text>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.61</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;6.29× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 4,375 µs&#10;citm_catalog.json: 8,829 µs&#10;canada.json: 33,432 µs&#10;jeopardy.json: 863,139 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;5.43× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,866 µs&#10;citm_catalog.json: 7,305 µs&#10;canada.json: 27,388 µs&#10;jeopardy.json: 744,826 µs">
<rect class="nj-heat-4" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">6.29</text>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.43</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;6.49× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 4,282 µs&#10;citm_catalog.json: 8,704 µs&#10;canada.json: 29,995 µs&#10;jeopardy.json: 604,082 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;5.56× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,834 µs&#10;citm_catalog.json: 7,269 µs&#10;canada.json: 27,454 µs&#10;jeopardy.json: 521,119 µs">
<rect class="nj-heat-4" x="593" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">6.49</text>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">5.56</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.71× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 419 µs&#10;citm_catalog.json: 1,024 µs&#10;canada.json: 2,463 µs&#10;jeopardy.json: 93,661 µs&#10;minify_json only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.67× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 422 µs&#10;citm_catalog.json: 1,058 µs&#10;canada.json: 2,150 µs&#10;jeopardy.json: 88,952 µs&#10;minify_json only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.71</text>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.67</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.97× the time of the fastest library (fully validating)&#10;twitter.json: 383 µs · generic&#10;citm_catalog.json: 741 µs · generic (strict)&#10;canada.json: 4,522 µs · generic (strict)&#10;jeopardy.json: 139,142 µs · generic">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.95× the time of the fastest library (fully validating)&#10;twitter.json: 400 µs · generic&#10;citm_catalog.json: 722 µs · generic (strict)&#10;canada.json: 4,229 µs · generic (strict)&#10;jeopardy.json: 134,914 µs · generic">
<rect class="nj-heat-2" x="685" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.97</text>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.95</text>
</g>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="390" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.66× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 675 µs&#10;citm_catalog.json: 1,314 µs&#10;canada.json: 4,278 µs&#10;jeopardy.json: 76,082 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.71× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 654 µs&#10;citm_catalog.json: 1,283 µs&#10;canada.json: 4,043 µs&#10;jeopardy.json: 70,284 µs">
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.66</text>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.71</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.53× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 745 µs&#10;citm_catalog.json: 1,619 µs&#10;canada.json: 5,470 µs&#10;jeopardy.json: 100,260 µs">
<rect class="nj-heat-2" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.53</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.41× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 720 µs&#10;citm_catalog.json: 1,382 µs&#10;canada.json: 5,162 µs&#10;jeopardy.json: 87,316 µs">
<rect class="nj-heat-1" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;8.63× the time of the fastest library (fully validating)&#10;twitter.json: 3,764 µs · parse&#10;citm_catalog.json: 5,991 µs · parse&#10;canada.json: 12,787 µs · parse&#10;jeopardy.json: 673,472 µs · structs (from_json)">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.47× the time of the fastest library (fully validating)&#10;twitter.json: 3,521 µs · parse&#10;citm_catalog.json: 5,192 µs · structs (from_json)&#10;canada.json: 11,196 µs · structs (from_json)&#10;jeopardy.json: 453,587 µs · structs (from_json)">
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">8.63</text>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.47</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.31× the time of the fastest library (fully validating)&#10;way: ordered_json&#10;twitter.json: 2,952 µs&#10;citm_catalog.json: 5,505 µs&#10;canada.json: 17,698 µs&#10;jeopardy.json: 857,064 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.81× the time of the fastest library (fully validating)&#10;twitter.json: 2,784 µs · ordered_json&#10;citm_catalog.json: 4,911 µs · ordered_json&#10;canada.json: 15,563 µs · parse&#10;jeopardy.json: 659,023 µs · ordered_json">
<rect class="nj-heat-3" x="501" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">4.31</text>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.81</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;5.41× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 4,076 µs&#10;citm_catalog.json: 6,340 µs&#10;canada.json: 16,899 µs&#10;jeopardy.json: 744,614 µs">
<rect class="nj-heat-4" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">5.41</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.67× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,990 µs&#10;citm_catalog.json: 5,719 µs&#10;canada.json: 16,153 µs&#10;jeopardy.json: 536,911 µs">
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.67</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.92× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 439 µs&#10;citm_catalog.json: 623 µs&#10;canada.json: 4,836 µs&#10;jeopardy.json: 124,328 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.86× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 441 µs&#10;citm_catalog.json: 606 µs&#10;canada.json: 4,485 µs&#10;jeopardy.json: 113,462 µs">
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.92</text>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.86</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="426" text-anchor="end">RapidJSON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.67× the time of the fastest library (fully validating)&#10;twitter.json: 1,912 µs · insitu (copy)&#10;citm_catalog.json: 2,285 µs · S&#8203;AX&#10;canada.json: 10,385 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 254,120 µs · S&#8203;AX (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.87× the time of the fastest library (fully validating)&#10;twitter.json: 1,808 µs · insitu (copy)&#10;citm_catalog.json: 2,105 µs · S&#8203;AX&#10;canada.json: 10,540 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 247,331 µs · S&#8203;AX (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.67</text>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.87</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;5.04× the time of the fastest fully validating library&#10;twitter.json: 1,212 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,774 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,385 µs · S&#8203;AX (raw numbers) (validates fully)&#10;jeopardy.json: 168,144 µs · S&#8203;AX (raw numbers) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;5.20× the time of the fastest fully validating library&#10;twitter.json: 1,171 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,664 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,540 µs · S&#8203;AX (raw numbers) (validates fully)&#10;jeopardy.json: 158,423 µs · S&#8203;AX (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="271" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">5.04</text>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">5.20</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;3.32× the time of the fastest library (fully validating)&#10;twitter.json: 1,869 µs · insitu (copy)&#10;citm_catalog.json: 2,305 µs · S&#8203;AX&#10;canada.json: 12,617 µs · S&#8203;AX&#10;jeopardy.json: 269,631 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;3.25× the time of the fastest library (fully validating)&#10;twitter.json: 1,865 µs · insitu (copy)&#10;citm_catalog.json: 2,173 µs · S&#8203;AX&#10;canada.json: 11,995 µs · S&#8203;AX&#10;jeopardy.json: 258,526 µs · S&#8203;AX&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="317" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">3.32</text>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">3.25</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.61× the time of the fastest fully validating library&#10;twitter.json: 1,231 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,954 µs · S&#8203;AX (no encoding check)&#10;canada.json: 12,617 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 185,360 µs · S&#8203;AX (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="363" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.61</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.48× the time of the fastest fully validating library&#10;twitter.json: 1,232 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,757 µs · S&#8203;AX (no encoding check)&#10;canada.json: 11,995 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 166,047 µs · S&#8203;AX (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="363" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.48</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;4.52× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,815 µs&#10;citm_catalog.json: 2,519 µs&#10;canada.json: 12,154 µs&#10;jeopardy.json: 263,951 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;4.52× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,813 µs&#10;citm_catalog.json: 2,306 µs&#10;canada.json: 11,750 µs&#10;jeopardy.json: 253,907 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.52</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.59× the time of the fastest fully validating library&#10;twitter.json: 1,184 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,076 µs · Document (no encoding check)&#10;canada.json: 12,154 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 195,046 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.58× the time of the fastest fully validating library&#10;twitter.json: 1,181 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,932 µs · insitu (copy) (no encoding check)&#10;canada.json: 11,750 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 182,669 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="455" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.59</text>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.58</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;3.27× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 2,481 µs&#10;citm_catalog.json: 3,414 µs&#10;canada.json: 23,990 µs&#10;jeopardy.json: 401,007 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;3.12× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 2,470 µs&#10;citm_catalog.json: 3,194 µs&#10;canada.json: 21,016 µs&#10;jeopardy.json: 380,503 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.27</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.12</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.79× the time of the fastest fully validating library&#10;twitter.json: 1,877 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 3,057 µs · Document (no encoding check)&#10;canada.json: 23,979 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 315,136 µs · Document (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.69× the time of the fastest fully validating library&#10;twitter.json: 1,839 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,862 µs · Document (no encoding check)&#10;canada.json: 21,016 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 311,506 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="547" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.79</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.69</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.59× the time of the fastest library (fully validating)&#10;twitter.json: 2,467 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 2,972 µs · S&#8203;AX to Writer&#10;canada.json: 22,419 µs · Document + Writer&#10;jeopardy.json: 383,355 µs · S&#8203;AX to Writer">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.38× the time of the fastest library (fully validating)&#10;twitter.json: 2,416 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 2,870 µs · S&#8203;AX to Writer&#10;canada.json: 22,073 µs · Document + Writer&#10;jeopardy.json: 354,208 µs · S&#8203;AX to Writer">
<rect class="nj-heat-3" x="593" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.59</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.38</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.99× the time of the fastest fully validating library&#10;twitter.json: 1,790 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,577 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 22,377 µs · Document + Writer (no encoding check)&#10;jeopardy.json: 293,834 µs · S&#8203;AX to Writer (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)">
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.99</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.49× the time of the fastest fully validating library&#10;twitter.json: 1,751 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,380 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 14,655 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;jeopardy.json: 261,920 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;copies each number&#x27;s text instead of formatting it (kParseNumbersAsStringsFlag)">
<rect class="nj-heat-2" x="639" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.49</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.95× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 647 µs&#10;citm_catalog.json: 970 µs&#10;canada.json: 10,796 µs&#10;jeopardy.json: 133,581 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.84× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 627 µs&#10;citm_catalog.json: 952 µs&#10;canada.json: 9,851 µs&#10;jeopardy.json: 126,032 µs">
<rect class="nj-heat-3" x="685" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.95</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.84</text>
</g>
<text class="nj-charts-tick nj-charts-tick--l" x="8" y="472">time relative to the fastest fully validating library, less is better</text>
<g><rect class="nj-heat-0" x="8" y="482" width="76" height="20" rx="3"/>

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 46 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog nj-charts--heat" viewBox="0 0 784 510" role="img" aria-labelledby="nj-blog-uc-x86-gcc nj-blog-uc-x86-gcc-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-uc-x86-gcc">Use cases: time of each library relative to the fastest, x86-64 with G&#8203;CC 16.2</title>
<desc id="nj-blog-uc-x86-gcc-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.07; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00; nlohmann/json json_document minify: 1.00; nlohmann/json json_document write: 1.00; yyjson validate: 2.27; yyjson sum: 1.33; yyjson select: 1.41; yyjson edit: 1.51; yyjson minify: 1.28; yyjson write: 1.08; sonic-cpp validate: no fully validating way (2.33 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.26 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.44 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.28 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (1.36 checking less, no U&#8203;TF-8); sonic-cpp write: 1.46; simdjson validate: 2.09; simdjson sum: 1.00; simdjson select: 1.29 (0.56 checking less, partial); simdjson edit: n/a; simdjson minify: 1.61 (0.18 checking less, partial); simdjson write: 2.25; sonic-rs (Rust) validate: 2.00; sonic-rs (Rust) sum: 1.11; sonic-rs (Rust) select: 1.36; sonic-rs (Rust) edit: 2.01; sonic-rs (Rust) minify: 1.69; sonic-rs (Rust) write: 1.99; Boost.J&#8203;SON validate: 1.99; Boost.J&#8203;SON sum: 1.26; Boost.J&#8203;SON select: 2.21; Boost.J&#8203;SON edit: 2.37; Boost.J&#8203;SON minify: 2.54; Boost.J&#8203;SON write: 2.21; simd-json (Rust) validate: 3.73; simd-json (Rust) sum: 1.90; simd-json (Rust) select: 2.68; simd-json (Rust) edit: 3.18; simd-json (Rust) minify: 3.38; simd-json (Rust) write: 2.21; serde_json (Rust) validate: 2.49 (2.24 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.31; serde_json (Rust) select: 1.78; serde_json (Rust) edit: 5.18; serde_json (Rust) minify: 5.15; serde_json (Rust) write: 2.16; Glaze validate: 2.91; Glaze sum: 4.32 (4.14 checking less, partial); Glaze select: 1.72 (0.60 checking less, partial); Glaze edit: 5.06; Glaze minify: 4.91 (0.77 checking less, partial); Glaze write: 1.91; RapidJSON validate: 5.61 (5.15 checking less, no U&#8203;TF-8); RapidJSON sum: 2.71 (2.47 checking less, no U&#8203;TF-8); RapidJSON select: 3.43 (3.26 checking less, no U&#8203;TF-8); RapidJSON edit: 2.79 (2.67 checking less, no U&#8203;TF-8); RapidJSON minify: 3.45 (2.83 checking less, no U&#8203;TF-8); RapidJSON write: 2.92; nlohmann/json json validate: 3.06; nlohmann/json json sum: 1.71; nlohmann/json json select: 8.29; nlohmann/json json edit: 4.49; nlohmann/json json minify: 5.20; nlohmann/json json write: 1.83.</desc>
<desc id="nj-blog-uc-x86-gcc-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.09; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.79 doing less, N); nlohmann/json json_document minify: 1.00 (0.79 doing less, N); nlohmann/json json_document write: 1.00 (0.65 doing less, N); yyjson validate: 2.26; yyjson sum: 1.33; yyjson select: 1.39; yyjson edit: 1.47; yyjson minify: 1.28 (1.03 doing less, N); yyjson write: 1.08; sonic-cpp validate: no fully validating way (2.34 doing less, U); sonic-cpp sum: no fully validating way (1.25 doing less, U); sonic-cpp select: no fully validating way (1.46 doing less, U); sonic-cpp edit: no fully validating way (1.20 doing less, U); sonic-cpp minify: no fully validating way (1.35 doing less, U); sonic-cpp write: 1.44; simdjson validate: 2.11; simdjson sum: 1.00; simdjson select: 1.31 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.61 (0.18 doing less, P); simdjson write: 2.27; sonic-rs (Rust) validate: 1.98; sonic-rs (Rust) sum: 1.14; sonic-rs (Rust) select: 1.38; sonic-rs (Rust) edit: 1.91; sonic-rs (Rust) minify: 1.74; sonic-rs (Rust) write: 2.02; Boost.J&#8203;SON validate: 1.99; Boost.J&#8203;SON sum: 1.28; Boost.J&#8203;SON select: 2.19; Boost.J&#8203;SON edit: 2.31; Boost.J&#8203;SON minify: 2.60; Boost.J&#8203;SON write: 2.31; simd-json (Rust) validate: 3.71; simd-json (Rust) sum: 1.92; simd-json (Rust) select: 2.63; simd-json (Rust) edit: 2.90; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 2.29; serde_json (Rust) validate: 2.45 (2.19 doing less, U); serde_json (Rust) sum: 2.36; serde_json (Rust) select: 1.76; serde_json (Rust) edit: 4.56; serde_json (Rust) minify: 4.95; serde_json (Rust) write: 2.23; Glaze validate: 2.90; Glaze sum: 4.19 (4.01 doing less, P); Glaze select: 1.72 (0.61 doing less, P); Glaze edit: 4.50; Glaze minify: 4.68 (0.77 doing less, P); Glaze write: 1.94; nlohmann/json json validate: 2.97; nlohmann/json json sum: 1.69; nlohmann/json json select: 7.27; nlohmann/json json edit: 3.78; nlohmann/json json minify: 4.64; nlohmann/json json write: 1.86; RapidJSON validate: 5.59 (5.06 doing less, U); RapidJSON sum: 2.75 (2.46 doing less, U); RapidJSON select: 3.40 (3.23 doing less, U); RapidJSON edit: 2.63 (2.55 doing less, U); RapidJSON minify: 3.42 (2.54 doing less, U N); RapidJSON write: 2.88.</desc>
<text class="nj-charts-tick" x="270" y="34">validate</text>
<text class="nj-charts-tick" x="362" y="34">sum</text>
<text class="nj-charts-tick" x="454" y="34">select</text>
@@ -8,99 +8,119 @@
<text class="nj-charts-tick" x="638" y="34">minify</text>
<text class="nj-charts-tick" x="730" y="34">write</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 256 µs&#10;citm_catalog.json: 504 µs&#10;canada.json: 880 µs&#10;jeopardy.json: 35,446 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 254 µs&#10;citm_catalog.json: 510 µs&#10;canada.json: 862 µs&#10;jeopardy.json: 34,543 µs">
<rect class="nj-heat-0" x="225" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.07× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 387 µs&#10;citm_catalog.json: 996 µs&#10;canada.json: 3,670 µs&#10;jeopardy.json: 93,686 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.09× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 388 µs&#10;citm_catalog.json: 967 µs&#10;canada.json: 3,634 µs&#10;jeopardy.json: 91,873 µs">
<rect class="nj-heat-0" x="317" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.07</text>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.09</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 333 µs&#10;citm_catalog.json: 812 µs&#10;canada.json: 1,336 µs&#10;jeopardy.json: 92,556 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;twitter.json: 328 µs · structs (from_json)&#10;citm_catalog.json: 773 µs · parse&#10;canada.json: 1,306 µs · parse&#10;jeopardy.json: 91,598 µs · parse">
<rect class="nj-heat-0" x="409" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 538 µs&#10;citm_catalog.json: 1,146 µs&#10;canada.json: 5,464 µs&#10;jeopardy.json: 175,454 µs">
<rect class="nj-heat-0" x="501" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 538 µs&#10;citm_catalog.json: 1,112 µs&#10;canada.json: 5,519 µs&#10;jeopardy.json: 195,482 µs">
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 486 µs&#10;citm_catalog.json: 1,104 µs&#10;canada.json: 5,300 µs&#10;jeopardy.json: 157,399 µs">
<rect class="nj-heat-0" x="593" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less&#10;0.79× the time of the fastest fully validating library&#10;twitter.json: 534 µs · editable (source numbers) (validates fully)&#10;citm_catalog.json: 1,112 µs · editable (validates fully)&#10;canada.json: 2,133 µs · editable (source numbers) (validates fully)&#10;jeopardy.json: 195,194 µs · editable (source numbers) (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.79</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 158 µs&#10;citm_catalog.json: 255 µs&#10;canada.json: 3,957 µs&#10;jeopardy.json: 69,975 µs">
<rect class="nj-heat-0" x="685" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 481 µs&#10;citm_catalog.json: 1,034 µs&#10;canada.json: 5,163 µs&#10;jeopardy.json: 151,260 µs">
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less&#10;0.79× the time of the fastest fully validating library&#10;way: parse + dump (source numbers)&#10;twitter.json: 466 µs (validates fully)&#10;citm_catalog.json: 1,017 µs (validates fully)&#10;canada.json: 2,153 µs (validates fully)&#10;jeopardy.json: 149,649 µs (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.79</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 155 µs&#10;citm_catalog.json: 251 µs&#10;canada.json: 3,844 µs&#10;jeopardy.json: 70,827 µs">
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less&#10;0.65× the time of the fastest fully validating library&#10;way: dump (source numbers)&#10;twitter.json: 139 µs (validates fully)&#10;citm_catalog.json: 232 µs (validates fully)&#10;canada.json: 835 µs (validates fully)&#10;jeopardy.json: 69,129 µs (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.65</text>
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.27× the time of the fastest library (fully validating)&#10;twitter.json: 397 µs · read&#10;citm_catalog.json: 939 µs · read (raw numbers)&#10;canada.json: 2,138 µs · read (raw numbers)&#10;jeopardy.json: 133,549 µs · read (raw numbers)">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.26× the time of the fastest library (fully validating)&#10;twitter.json: 389 µs · read (raw numbers)&#10;citm_catalog.json: 946 µs · insitu (copy)&#10;canada.json: 2,133 µs · read (raw numbers)&#10;jeopardy.json: 127,616 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.27</text>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.26</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.33× the time of the fastest library (fully validating)&#10;twitter.json: 452 µs · read&#10;citm_catalog.json: 1,162 µs · insitu (copy)&#10;canada.json: 4,138 µs · insitu (copy)&#10;jeopardy.json: 142,713 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.33× the time of the fastest library (fully validating)&#10;twitter.json: 450 µs · insitu (copy)&#10;citm_catalog.json: 1,100 µs · read&#10;canada.json: 4,131 µs · read&#10;jeopardy.json: 136,960 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="317" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.33</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.41× the time of the fastest library (fully validating)&#10;twitter.json: 406 µs · read&#10;citm_catalog.json: 1,012 µs · insitu (copy)&#10;canada.json: 2,177 µs · read (raw numbers)&#10;jeopardy.json: 145,779 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.39× the time of the fastest library (fully validating)&#10;twitter.json: 400 µs · insitu (copy)&#10;citm_catalog.json: 950 µs · read&#10;canada.json: 2,136 µs · read (raw numbers)&#10;jeopardy.json: 138,356 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="409" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.41</text>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.39</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.51× the time of the fastest library (fully validating)&#10;twitter.json: 793 µs · mut copy&#10;citm_catalog.json: 1,742 µs · insitu (copy) + mut copy&#10;canada.json: 7,566 µs · mut copy&#10;jeopardy.json: 296,291 µs · mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="501" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.51</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.47× the time of the fastest library (fully validating)&#10;twitter.json: 787 µs · mut copy&#10;citm_catalog.json: 1,645 µs · insitu (copy) + mut copy&#10;canada.json: 7,403 µs · insitu (copy) + mut copy&#10;jeopardy.json: 311,249 µs · insitu (copy) + mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="501" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.47</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.28× the time of the fastest library (fully validating)&#10;twitter.json: 622 µs · insitu (copy) + write&#10;citm_catalog.json: 1,324 µs · read + write&#10;canada.json: 6,687 µs · insitu (copy) + write&#10;jeopardy.json: 215,236 µs · insitu (copy) + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.28</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.28× the time of the fastest library (fully validating)&#10;twitter.json: 616 µs · insitu (copy) + write&#10;citm_catalog.json: 1,273 µs · insitu (copy) + write&#10;canada.json: 6,621 µs · read + write&#10;jeopardy.json: 203,508 µs · insitu (copy) + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.28</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.08× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 215 µs&#10;citm_catalog.json: 319 µs&#10;canada.json: 3,367 µs&#10;jeopardy.json: 66,593 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less&#10;1.03× the time of the fastest fully validating library&#10;twitter.json: 616 µs · insitu (copy) + write (validates fully)&#10;citm_catalog.json: 1,224 µs · read (raw numbers) + write (validates fully)&#10;canada.json: 2,874 µs · read (raw numbers) + write (validates fully)&#10;jeopardy.json: 203,508 µs · insitu (copy) + write (validates fully)&#10;copies each number&#x27;s text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.03</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.08× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 187 µs&#10;citm_catalog.json: 333 µs&#10;canada.json: 3,343 µs&#10;jeopardy.json: 68,342 µs">
<rect class="nj-heat-0" x="685" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.08</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">sonic-cpp</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.33× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 401 µs&#10;citm_catalog.json: 929 µs&#10;canada.json: 3,258 µs&#10;jeopardy.json: 98,231 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.34× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 403 µs&#10;citm_catalog.json: 931 µs&#10;canada.json: 3,170 µs&#10;jeopardy.json: 96,915 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.33</text>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.34</text>
<text class="nj-charts-cell nj-charts-cell--small" x="270" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.26× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 471 µs&#10;citm_catalog.json: 1,209 µs&#10;canada.json: 3,945 µs&#10;jeopardy.json: 113,162 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.25× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 460 µs&#10;citm_catalog.json: 1,126 µs&#10;canada.json: 3,948 µs&#10;jeopardy.json: 105,174 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="317" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.26</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.25</text>
<text class="nj-charts-cell nj-charts-cell--small" x="362" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.44× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 409 µs&#10;citm_catalog.json: 1,005 µs&#10;canada.json: 3,180 µs&#10;jeopardy.json: 111,279 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.46× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 408 µs&#10;citm_catalog.json: 933 µs&#10;canada.json: 3,178 µs&#10;jeopardy.json: 113,267 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="409" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.44</text>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.46</text>
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.28× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 623 µs&#10;citm_catalog.json: 1,522 µs&#10;canada.json: 8,678 µs&#10;jeopardy.json: 193,208 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.20× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 619 µs&#10;citm_catalog.json: 1,434 µs&#10;canada.json: 8,257 µs&#10;jeopardy.json: 183,468 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="501" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.28</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.20</text>
<text class="nj-charts-cell nj-charts-cell--small" x="546" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.36× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 628 µs&#10;citm_catalog.json: 1,538 µs&#10;canada.json: 8,644 µs&#10;jeopardy.json: 182,074 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.35× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 635 µs&#10;citm_catalog.json: 1,427 µs&#10;canada.json: 8,228 µs&#10;jeopardy.json: 175,214 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="593" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.36</text>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.35</text>
<text class="nj-charts-cell nj-charts-cell--small" x="638" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.46× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 254 µs&#10;citm_catalog.json: 510 µs&#10;canada.json: 5,356 µs&#10;jeopardy.json: 72,110 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.44× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 250 µs&#10;citm_catalog.json: 512 µs&#10;canada.json: 5,098 µs&#10;jeopardy.json: 69,815 µs">
<rect class="nj-heat-1" x="685" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.46</text>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.44</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="174" text-anchor="end">simdjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;2.09× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 302 µs&#10;citm_catalog.json: 680 µs&#10;canada.json: 3,167 µs&#10;jeopardy.json: 117,836 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;2.11× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 298 µs&#10;citm_catalog.json: 690 µs&#10;canada.json: 3,166 µs&#10;jeopardy.json: 116,296 µs">
<rect class="nj-heat-2" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">2.09</text>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">2.11</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: On-Demand&#10;twitter.json: 349 µs&#10;citm_catalog.json: 846 µs&#10;canada.json: 3,443 µs&#10;jeopardy.json: 98,772 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: On-Demand&#10;twitter.json: 345 µs&#10;citm_catalog.json: 802 µs&#10;canada.json: 3,465 µs&#10;jeopardy.json: 92,425 µs">
<rect class="nj-heat-0" x="317" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.29× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 314 µs&#10;citm_catalog.json: 697 µs&#10;canada.json: 3,281 µs&#10;jeopardy.json: 128,804 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.31× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 311 µs&#10;citm_catalog.json: 698 µs&#10;canada.json: 3,263 µs&#10;jeopardy.json: 127,285 µs">
<rect class="nj-heat-1" x="409" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.29</text>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.31</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.56× the time of the fastest fully validating library&#10;twitter.json: 183 µs · On-Demand&#10;citm_catalog.json: 516 µs · On-Demand (key selectors)&#10;canada.json: 701 µs · On-Demand (key selectors)&#10;jeopardy.json: 50,654 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.56× the time of the fastest fully validating library&#10;twitter.json: 178 µs · On-Demand (key selectors)&#10;citm_catalog.json: 495 µs · On-Demand (key selectors)&#10;canada.json: 674 µs · On-Demand&#10;jeopardy.json: 49,613 µs · On-Demand&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<rect class="nj-heat-0" x="455" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="168" text-anchor="middle">0.56</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="181" text-anchor="middle">P</text>
@@ -109,238 +129,238 @@
<rect class="nj-heat-na" x="501" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-tick" x="546" y="174">n/a</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.61× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 797 µs&#10;citm_catalog.json: 1,389 µs&#10;canada.json: 8,834 µs&#10;jeopardy.json: 306,425 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.61× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 788 µs&#10;citm_catalog.json: 1,302 µs&#10;canada.json: 8,426 µs&#10;jeopardy.json: 301,627 µs">
<rect class="nj-heat-2" x="593" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.61</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.18× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 105 µs&#10;citm_catalog.json: 264 µs&#10;canada.json: 371 µs&#10;jeopardy.json: 49,313 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.18× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 93.7 µs&#10;citm_catalog.json: 279 µs&#10;canada.json: 313 µs&#10;jeopardy.json: 46,983 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="168" text-anchor="middle">0.18</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="181" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.25× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 461 µs&#10;citm_catalog.json: 590 µs&#10;canada.json: 5,868 µs&#10;jeopardy.json: 176,988 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.27× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 463 µs&#10;citm_catalog.json: 586 µs&#10;canada.json: 5,626 µs&#10;jeopardy.json: 185,384 µs">
<rect class="nj-heat-2" x="685" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.25</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.27</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="210" text-anchor="end">sonic-rs (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;2.00× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 482 µs&#10;citm_catalog.json: 969 µs&#10;canada.json: 2,489 µs&#10;jeopardy.json: 55,486 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.98× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 501 µs&#10;citm_catalog.json: 970 µs&#10;canada.json: 2,249 µs&#10;jeopardy.json: 54,369 µs">
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">2.00</text>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.98</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.11× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 503 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,418 µs&#10;jeopardy.json: 59,993 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.14× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 501 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,397 µs&#10;jeopardy.json: 59,583 µs">
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.11</text>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.36× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 538 µs&#10;citm_catalog.json: 1,028 µs&#10;canada.json: 2,283 µs&#10;jeopardy.json: 91,950 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.38× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 504 µs&#10;citm_catalog.json: 1,033 µs&#10;canada.json: 2,328 µs&#10;jeopardy.json: 90,486 µs">
<rect class="nj-heat-1" x="409" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.36</text>
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.38</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;2.01× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,201 µs&#10;citm_catalog.json: 2,416 µs&#10;canada.json: 7,958 µs&#10;jeopardy.json: 421,718 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.91× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,197 µs&#10;citm_catalog.json: 2,389 µs&#10;canada.json: 7,744 µs&#10;jeopardy.json: 390,952 µs">
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">2.01</text>
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.69× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,003 µs&#10;citm_catalog.json: 2,174 µs&#10;canada.json: 7,753 µs&#10;jeopardy.json: 217,354 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.74× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,000 µs&#10;citm_catalog.json: 2,097 µs&#10;canada.json: 7,795 µs&#10;jeopardy.json: 215,280 µs">
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.69</text>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.74</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;1.99× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 445 µs&#10;citm_catalog.json: 931 µs&#10;canada.json: 4,048 µs&#10;jeopardy.json: 104,487 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.02× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 434 µs&#10;citm_catalog.json: 927 µs&#10;canada.json: 3,987 µs&#10;jeopardy.json: 109,176 µs">
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.99</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.02</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J&#8203;SON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.99× the time of the fastest library (fully validating)&#10;twitter.json: 688 µs · S&#8203;AX (numbers: none)&#10;citm_catalog.json: 920 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,643 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 61,295 µs · S&#8203;AX">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.99× the time of the fastest library (fully validating)&#10;twitter.json: 687 µs · S&#8203;AX&#10;citm_catalog.json: 912 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,637 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 59,426 µs · S&#8203;AX">
<rect class="nj-heat-2" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.99</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.26× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 689 µs&#10;citm_catalog.json: 1,000 µs&#10;canada.json: 5,784 µs&#10;jeopardy.json: 62,713 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.28× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 698 µs&#10;citm_catalog.json: 961 µs&#10;canada.json: 5,821 µs&#10;jeopardy.json: 60,418 µs">
<rect class="nj-heat-1" x="317" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.26</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.28</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.21× the time of the fastest library (fully validating)&#10;way: parse_into structs&#10;twitter.json: 874 µs&#10;citm_catalog.json: 1,330 µs&#10;canada.json: 6,790 µs&#10;jeopardy.json: 100,853 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.19× the time of the fastest library (fully validating)&#10;twitter.json: 886 µs · parse_into structs&#10;citm_catalog.json: 1,268 µs · parse_into structs&#10;canada.json: 6,606 µs · parse&#10;jeopardy.json: 94,730 µs · parse_into structs">
<rect class="nj-heat-2" x="409" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.21</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.19</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.37× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,779 µs&#10;citm_catalog.json: 2,536 µs&#10;canada.json: 12,676 µs&#10;jeopardy.json: 324,644 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.31× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,768 µs&#10;citm_catalog.json: 2,511 µs&#10;canada.json: 12,298 µs&#10;jeopardy.json: 339,121 µs">
<rect class="nj-heat-2" x="501" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.37</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.31</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.54× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,767 µs&#10;citm_catalog.json: 2,687 µs&#10;canada.json: 12,514 µs&#10;jeopardy.json: 311,858 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.60× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,768 µs&#10;citm_catalog.json: 2,494 µs&#10;canada.json: 12,141 µs&#10;jeopardy.json: 330,129 µs">
<rect class="nj-heat-3" x="593" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.54</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.60</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.21× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 452 µs&#10;citm_catalog.json: 825 µs&#10;canada.json: 5,580 µs&#10;jeopardy.json: 126,955 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.31× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 455 µs&#10;citm_catalog.json: 837 µs&#10;canada.json: 5,472 µs&#10;jeopardy.json: 144,557 µs">
<rect class="nj-heat-2" x="685" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.21</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.31</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="282" text-anchor="end">simd-json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.73× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 563 µs&#10;citm_catalog.json: 1,403 µs&#10;canada.json: 4,630 µs&#10;jeopardy.json: 212,467 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.71× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 567 µs&#10;citm_catalog.json: 1,430 µs&#10;canada.json: 4,359 µs&#10;jeopardy.json: 207,551 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="225" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.73</text>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.71</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.90× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 668 µs&#10;citm_catalog.json: 1,688 µs&#10;canada.json: 5,134 µs&#10;jeopardy.json: 224,411 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.92× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 681 µs&#10;citm_catalog.json: 1,650 µs&#10;canada.json: 5,083 µs&#10;jeopardy.json: 210,185 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="317" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.90</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.92</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.68× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 740 µs&#10;citm_catalog.json: 1,802 µs&#10;canada.json: 4,997 µs&#10;jeopardy.json: 258,566 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.63× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 679 µs&#10;citm_catalog.json: 1,731 µs&#10;canada.json: 5,144 µs&#10;jeopardy.json: 239,164 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.68</text>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.63</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;3.18× the time of the fastest library (fully validating)&#10;twitter.json: 1,924 µs · borrowed (copy)&#10;citm_catalog.json: 4,575 µs · borrowed (copy)&#10;canada.json: 15,746 µs · owned (copy)&#10;jeopardy.json: 435,817 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.90× the time of the fastest library (fully validating)&#10;twitter.json: 1,862 µs · borrowed (copy)&#10;citm_catalog.json: 4,194 µs · borrowed (copy)&#10;canada.json: 14,896 µs · owned (copy)&#10;jeopardy.json: 391,369 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">3.18</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">2.90</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.38× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,878 µs&#10;citm_catalog.json: 4,655 µs&#10;canada.json: 15,955 µs&#10;jeopardy.json: 419,412 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.40× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,889 µs&#10;citm_catalog.json: 4,196 µs&#10;canada.json: 15,716 µs&#10;jeopardy.json: 414,377 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="593" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.38</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.40</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.21× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 597 µs&#10;citm_catalog.json: 809 µs&#10;canada.json: 4,817 µs&#10;jeopardy.json: 114,245 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.29× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 582 µs&#10;citm_catalog.json: 800 µs&#10;canada.json: 5,147 µs&#10;jeopardy.json: 122,623 µs">
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.21</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.29</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">serde_json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.49× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 622 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,621 µs&#10;jeopardy.json: 65,602 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.45× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 624 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,406 µs&#10;jeopardy.json: 64,720 µs">
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.49</text>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.45</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.24× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,371 µs&#10;canada.json: 2,538 µs&#10;jeopardy.json: 60,154 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.19× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 484 µs&#10;citm_catalog.json: 1,370 µs&#10;canada.json: 2,314 µs&#10;jeopardy.json: 58,247 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.24</text>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.19</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="325" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.31× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,316 µs&#10;canada.json: 7,241 µs&#10;jeopardy.json: 130,249 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.36× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,288 µs&#10;canada.json: 7,127 µs&#10;jeopardy.json: 129,497 µs">
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.31</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.36</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.78× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 722 µs&#10;citm_catalog.json: 1,559 µs&#10;canada.json: 2,585 µs&#10;jeopardy.json: 114,701 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.76× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 701 µs&#10;citm_catalog.json: 1,532 µs&#10;canada.json: 2,529 µs&#10;jeopardy.json: 107,316 µs">
<rect class="nj-heat-2" x="409" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.78</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.76</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.18× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,036 µs&#10;citm_catalog.json: 7,181 µs&#10;canada.json: 17,371 µs&#10;jeopardy.json: 843,034 µs">
<rect class="nj-heat-4" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">5.18</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;4.56× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,042 µs&#10;citm_catalog.json: 6,586 µs&#10;canada.json: 16,631 µs&#10;jeopardy.json: 632,766 µs">
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.56</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.15× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,220 µs&#10;citm_catalog.json: 6,876 µs&#10;canada.json: 17,276 µs&#10;jeopardy.json: 628,192 µs">
<rect class="nj-heat-4" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.15</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;4.95× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,012 µs&#10;citm_catalog.json: 6,583 µs&#10;canada.json: 17,306 µs&#10;jeopardy.json: 509,702 µs">
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.95</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.16× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 560 µs&#10;citm_catalog.json: 848 µs&#10;canada.json: 3,964 µs&#10;jeopardy.json: 129,473 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.23× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 550 µs&#10;citm_catalog.json: 887 µs&#10;canada.json: 4,005 µs&#10;jeopardy.json: 134,163 µs">
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.16</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.23</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="354" text-anchor="end">Glaze</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.91× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 718 µs&#10;citm_catalog.json: 1,972 µs&#10;canada.json: 2,550 µs&#10;jeopardy.json: 80,290 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.90× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 714 µs&#10;citm_catalog.json: 1,974 µs&#10;canada.json: 2,521 µs&#10;jeopardy.json: 76,716 µs">
<rect class="nj-heat-3" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.91</text>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.90</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.32× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,397 µs&#10;citm_catalog.json: 4,330 µs&#10;canada.json: 11,094 µs&#10;jeopardy.json: 304,997 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.19× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,334 µs&#10;citm_catalog.json: 4,099 µs&#10;canada.json: 11,762 µs&#10;jeopardy.json: 243,497 µs">
<rect class="nj-heat-3" x="317" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.32</text>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.19</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;4.14× the time of the fastest fully validating library&#10;twitter.json: 2,386 µs · generic (double)&#10;citm_catalog.json: 4,330 µs · generic (double, strict) (validates fully)&#10;canada.json: 11,094 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 256,411 µs · lazy_json&#10;accepts trailing garbage after the value: Glaze&#x27;s default (validate_trailing_whitespace checks it)&#10;reads lazily: lazy_json reads only what you ask for and steps over the rest">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;4.01× the time of the fastest fully validating library&#10;twitter.json: 2,334 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,062 µs · generic (double)&#10;canada.json: 10,370 µs · generic (double)&#10;jeopardy.json: 233,200 µs · lazy_json&#10;accepts trailing garbage after the value: Glaze&#x27;s default (validate_trailing_whitespace checks it)&#10;reads lazily: lazy_json reads only what you ask for and steps over the rest">
<rect class="nj-heat-3" x="363" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">4.14</text>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">4.01</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.72× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 603 µs&#10;citm_catalog.json: 2,097 µs&#10;canada.json: 2,586 µs&#10;jeopardy.json: 90,324 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.72× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 604 µs&#10;citm_catalog.json: 1,976 µs&#10;canada.json: 2,534 µs&#10;jeopardy.json: 87,637 µs">
<rect class="nj-heat-2" x="409" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.72</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.60× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 344 µs&#10;citm_catalog.json: 422 µs&#10;canada.json: 430 µs&#10;jeopardy.json: 70,824 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.61× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 344 µs&#10;citm_catalog.json: 401 µs&#10;canada.json: 418 µs&#10;jeopardy.json: 70,801 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<rect class="nj-heat-0" x="455" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.60</text>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.61</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;5.06× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,577 µs&#10;citm_catalog.json: 6,466 µs&#10;canada.json: 22,051 µs&#10;jeopardy.json: 761,903 µs">
<rect class="nj-heat-4" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.06</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;4.50× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,364 µs&#10;citm_catalog.json: 6,118 µs&#10;canada.json: 20,572 µs&#10;jeopardy.json: 626,529 µs">
<rect class="nj-heat-3" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.50</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;4.91× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,511 µs&#10;citm_catalog.json: 6,660 µs&#10;canada.json: 22,202 µs&#10;jeopardy.json: 500,412 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;4.68× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,268 µs&#10;citm_catalog.json: 6,057 µs&#10;canada.json: 20,639 µs&#10;jeopardy.json: 457,013 µs">
<rect class="nj-heat-3" x="593" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.91</text>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.68</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.77× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 417 µs&#10;citm_catalog.json: 1,436 µs&#10;canada.json: 2,656 µs&#10;jeopardy.json: 100,316 µs&#10;minify_json only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.77× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 418 µs&#10;citm_catalog.json: 1,292 µs&#10;canada.json: 2,650 µs&#10;jeopardy.json: 93,423 µs&#10;minify_json only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.77</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.91× the time of the fastest library (fully validating)&#10;twitter.json: 380 µs · generic&#10;citm_catalog.json: 714 µs · generic&#10;canada.json: 4,135 µs · generic (strict)&#10;jeopardy.json: 133,036 µs · generic">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.94× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 380 µs&#10;citm_catalog.json: 733 µs&#10;canada.json: 4,017 µs&#10;jeopardy.json: 133,545 µs">
<rect class="nj-heat-2" x="685" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.91</text>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.94</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="390" text-anchor="end">RapidJSON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;5.61× the time of the fastest library (fully validating)&#10;twitter.json: 1,254 µs · insitu (copy)&#10;citm_catalog.json: 1,862 µs · insitu (copy)&#10;canada.json: 10,322 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 164,951 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="225" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="390" text-anchor="middle">5.61</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="390" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.97× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 667 µs&#10;citm_catalog.json: 1,426 µs&#10;canada.json: 4,398 µs&#10;jeopardy.json: 71,489 µs">
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.97</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;5.15× the time of the fastest fully validating library&#10;twitter.json: 1,132 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,587 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,322 µs · S&#8203;AX (raw numbers) (validates fully)&#10;jeopardy.json: 152,267 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="271" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="384" text-anchor="middle">5.15</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.69× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 814 µs&#10;citm_catalog.json: 1,638 µs&#10;canada.json: 5,673 µs&#10;jeopardy.json: 95,614 µs">
<rect class="nj-heat-2" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.69</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;2.71× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,299 µs&#10;citm_catalog.json: 2,179 µs&#10;canada.json: 11,198 µs&#10;jeopardy.json: 172,104 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="317" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="390" text-anchor="middle">2.71</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.27× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 3,454 µs&#10;citm_catalog.json: 5,203 µs&#10;canada.json: 11,070 µs&#10;jeopardy.json: 426,942 µs">
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.27</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.47× the time of the fastest fully validating library&#10;twitter.json: 1,141 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,796 µs · S&#8203;AX (no encoding check)&#10;canada.json: 11,198 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 162,975 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="363" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="384" text-anchor="middle">2.47</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.78× the time of the fastest library (fully validating)&#10;twitter.json: 2,806 µs · ordered_json&#10;citm_catalog.json: 4,972 µs · ordered_json&#10;canada.json: 14,917 µs · parse&#10;jeopardy.json: 635,353 µs · ordered_json">
<rect class="nj-heat-3" x="501" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.78</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;3.43× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,261 µs&#10;citm_catalog.json: 2,027 µs&#10;canada.json: 10,840 µs&#10;jeopardy.json: 166,338 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="390" text-anchor="middle">3.43</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.64× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,861 µs&#10;citm_catalog.json: 5,772 µs&#10;canada.json: 14,812 µs&#10;jeopardy.json: 546,637 µs">
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.64</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.26× the time of the fastest fully validating library&#10;twitter.json: 1,101 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,963 µs · insitu (copy) (no encoding check)&#10;canada.json: 10,558 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 166,338 µs · insitu (copy) (validates fully)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="455" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="384" text-anchor="middle">3.26</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.86× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 424 µs&#10;citm_catalog.json: 656 µs&#10;canada.json: 3,870 µs&#10;jeopardy.json: 117,712 µs">
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.86</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;2.79× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,965 µs&#10;citm_catalog.json: 2,915 µs&#10;canada.json: 19,784 µs&#10;jeopardy.json: 317,671 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="390" text-anchor="middle">2.79</text>
<text class="nj-charts-rowlabel " x="216" y="426" text-anchor="end">RapidJSON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;5.59× the time of the fastest library (fully validating)&#10;twitter.json: 1,250 µs · insitu (copy)&#10;citm_catalog.json: 1,893 µs · insitu (copy)&#10;canada.json: 10,133 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 157,360 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">5.59</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.67× the time of the fastest fully validating library&#10;twitter.json: 1,877 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,803 µs · insitu (copy) (no encoding check)&#10;canada.json: 19,340 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 297,090 µs · Document (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="547" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="384" text-anchor="middle">2.67</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;5.06× the time of the fastest fully validating library&#10;twitter.json: 1,089 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,590 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,051 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 145,703 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="271" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">5.06</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.45× the time of the fastest library (fully validating)&#10;twitter.json: 2,529 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 3,097 µs · S&#8203;AX to Writer&#10;canada.json: 21,347 µs · Document + Writer&#10;jeopardy.json: 379,477 µs · S&#8203;AX to Writer">
<rect class="nj-heat-3" x="593" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="390" text-anchor="middle">3.45</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;2.75× the time of the fastest library (fully validating)&#10;twitter.json: 1,300 µs · insitu (copy)&#10;citm_catalog.json: 2,039 µs · insitu (copy)&#10;canada.json: 11,309 µs · S&#8203;AX&#10;jeopardy.json: 170,218 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="317" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">2.75</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.83× the time of the fastest fully validating library&#10;way: S&#8203;AX to Writer (no encoding check)&#10;twitter.json: 1,795 µs&#10;citm_catalog.json: 2,690 µs&#10;canada.json: 21,058 µs&#10;jeopardy.json: 281,208 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)">
<rect class="nj-heat-3" x="639" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="384" text-anchor="middle">2.83</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="397" text-anchor="middle">U</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.46× the time of the fastest fully validating library&#10;twitter.json: 1,141 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,680 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,991 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 155,049 µs · S&#8203;AX (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="363" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.46</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.92× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 686 µs&#10;citm_catalog.json: 980 µs&#10;canada.json: 9,132 µs&#10;jeopardy.json: 132,234 µs">
<rect class="nj-heat-3" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.92</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;3.40× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,261 µs&#10;citm_catalog.json: 1,893 µs&#10;canada.json: 10,263 µs&#10;jeopardy.json: 165,979 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">3.40</text>
</g>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="426" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;3.06× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 691 µs&#10;citm_catalog.json: 1,471 µs&#10;canada.json: 4,540 µs&#10;jeopardy.json: 76,340 µs">
<rect class="nj-heat-3" x="225" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="426" text-anchor="middle">3.06</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.23× the time of the fastest fully validating library&#10;twitter.json: 1,096 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,834 µs · insitu (copy) (no encoding check)&#10;canada.json: 10,263 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 159,427 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="455" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.23</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.71× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 807 µs&#10;citm_catalog.json: 1,802 µs&#10;canada.json: 5,884 µs&#10;jeopardy.json: 100,220 µs">
<rect class="nj-heat-2" x="317" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="426" text-anchor="middle">1.71</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;2.63× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,951 µs&#10;citm_catalog.json: 2,858 µs&#10;canada.json: 19,274 µs&#10;jeopardy.json: 288,710 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">2.63</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;8.29× the time of the fastest library (fully validating)&#10;way: structs (from_json)&#10;twitter.json: 3,583 µs&#10;citm_catalog.json: 5,868 µs&#10;canada.json: 11,608 µs&#10;jeopardy.json: 646,498 µs">
<rect class="nj-heat-4" x="409" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="426" text-anchor="middle">8.29</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.55× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,793 µs&#10;citm_catalog.json: 2,785 µs&#10;canada.json: 18,934 µs&#10;jeopardy.json: 288,194 µs&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="547" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.55</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.49× the time of the fastest library (fully validating)&#10;twitter.json: 3,103 µs · ordered_json&#10;citm_catalog.json: 5,437 µs · ordered_json&#10;canada.json: 15,614 µs · parse&#10;jeopardy.json: 910,653 µs · ordered_json">
<rect class="nj-heat-3" x="501" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="426" text-anchor="middle">4.49</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.42× the time of the fastest library (fully validating)&#10;twitter.json: 2,431 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 2,815 µs · S&#8203;AX to Writer&#10;canada.json: 20,693 µs · Document + Writer&#10;jeopardy.json: 375,304 µs · S&#8203;AX to Writer">
<rect class="nj-heat-3" x="593" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.42</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;5.20× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 4,219 µs&#10;citm_catalog.json: 6,864 µs&#10;canada.json: 15,620 µs&#10;jeopardy.json: 724,748 µs">
<rect class="nj-heat-4" x="593" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="426" text-anchor="middle">5.20</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.54× the time of the fastest fully validating library&#10;twitter.json: 1,730 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,395 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 14,118 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;jeopardy.json: 274,873 µs · S&#8203;AX to Writer (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;copies each number&#x27;s text instead of formatting it (kParseNumbersAsStringsFlag)">
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.54</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.83× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 427 µs&#10;citm_catalog.json: 613 µs&#10;canada.json: 4,150 µs&#10;jeopardy.json: 113,965 µs">
<rect class="nj-heat-2" x="685" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">1.83</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.88× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 637 µs&#10;citm_catalog.json: 983 µs&#10;canada.json: 8,996 µs&#10;jeopardy.json: 130,099 µs">
<rect class="nj-heat-3" x="685" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.88</text>
</g>
<text class="nj-charts-tick nj-charts-tick--l" x="8" y="472">time relative to the fastest fully validating library, less is better</text>
<g><rect class="nj-heat-0" x="8" y="482" width="76" height="20" rx="3"/>

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 46 KiB

@@ -1,6 +1,6 @@
<svg class="nj-fig nj-charts nj-charts--blog nj-charts--heat" viewBox="0 0 784 510" role="img" aria-labelledby="nj-blog-uc-x86-gcc13 nj-blog-uc-x86-gcc13-d" xmlns="http://www.w3.org/2000/svg">
<title id="nj-blog-uc-x86-gcc13">Use cases: time of each library relative to the fastest, x86-64 with G&#8203;CC 13</title>
<desc id="nj-blog-uc-x86-gcc13-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.10; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00; nlohmann/json json_document minify: 1.00; nlohmann/json json_document write: 1.00; yyjson validate: 2.16; yyjson sum: 1.43; yyjson select: 1.40; yyjson edit: 1.58; yyjson minify: 1.37; yyjson write: 1.09; sonic-cpp validate: no fully validating way (2.30 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.31 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.49 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.28 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (1.36 checking less, no U&#8203;TF-8); sonic-cpp write: 1.51; simdjson validate: 2.03; simdjson sum: 1.00; simdjson select: 1.32 (0.56 checking less, partial); simdjson edit: n/a; simdjson minify: 1.59 (0.21 checking less, partial); simdjson write: 2.23; sonic-rs (Rust) validate: 1.85; sonic-rs (Rust) sum: 1.09; sonic-rs (Rust) select: 1.33; sonic-rs (Rust) edit: 1.97; sonic-rs (Rust) minify: 1.65; sonic-rs (Rust) write: 1.98; Boost.J&#8203;SON validate: 1.89; Boost.J&#8203;SON sum: 1.35; Boost.J&#8203;SON select: 2.22; Boost.J&#8203;SON edit: 2.55; Boost.J&#8203;SON minify: 2.70; Boost.J&#8203;SON write: 2.40; simd-json (Rust) validate: 3.44; simd-json (Rust) sum: 1.87; simd-json (Rust) select: 2.61; simd-json (Rust) edit: 3.10; simd-json (Rust) minify: 3.29; simd-json (Rust) write: 2.19; serde_json (Rust) validate: 2.30 (2.06 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.28; serde_json (Rust) select: 1.73; serde_json (Rust) edit: 5.05; serde_json (Rust) minify: 5.01; serde_json (Rust) write: 2.14; Glaze validate: 2.18; Glaze sum: 4.44 (4.13 checking less, partial); Glaze select: 1.42 (0.59 checking less, partial); Glaze edit: 5.15; Glaze minify: 5.09 (0.72 checking less, partial); Glaze write: 1.76; nlohmann/json json validate: 2.74; nlohmann/json json sum: 1.74; nlohmann/json json select: 7.91; nlohmann/json json edit: 4.46; nlohmann/json json minify: 5.05; nlohmann/json json write: 1.85; RapidJSON validate: 6.28 (4.90 checking less, no U&#8203;TF-8); RapidJSON sum: 3.27 (2.60 checking less, no U&#8203;TF-8); RapidJSON select: 4.15 (3.42 checking less, no U&#8203;TF-8); RapidJSON edit: 3.17 (2.78 checking less, no U&#8203;TF-8); RapidJSON minify: 3.64 (2.85 checking less, no U&#8203;TF-8); RapidJSON write: 2.99.</desc>
<desc id="nj-blog-uc-x86-gcc13-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.06; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.82 doing less, N); nlohmann/json json_document minify: 1.00 (0.80 doing less, N); nlohmann/json json_document write: 1.00 (0.68 doing less, N); yyjson validate: 2.13; yyjson sum: 1.47; yyjson select: 1.41; yyjson edit: 1.61; yyjson minify: 1.41 (1.06 doing less, N); yyjson write: 1.14; sonic-cpp validate: no fully validating way (2.30 doing less, U); sonic-cpp sum: no fully validating way (1.29 doing less, U); sonic-cpp select: no fully validating way (1.54 doing less, U); sonic-cpp edit: no fully validating way (1.27 doing less, U); sonic-cpp minify: no fully validating way (1.40 doing less, U); sonic-cpp write: 1.48; simdjson validate: 1.99; simdjson sum: 1.00; simdjson select: 1.33 (0.57 doing less, P); simdjson edit: n/a; simdjson minify: 1.64 (0.22 doing less, P); simdjson write: 2.20; sonic-rs (Rust) validate: 1.83; sonic-rs (Rust) sum: 1.14; sonic-rs (Rust) select: 1.36; sonic-rs (Rust) edit: 1.92; sonic-rs (Rust) minify: 1.76; sonic-rs (Rust) write: 2.03; Boost.J&#8203;SON validate: 1.91; Boost.J&#8203;SON sum: 1.33; Boost.J&#8203;SON select: 2.29; Boost.J&#8203;SON edit: 2.58; Boost.J&#8203;SON minify: 2.89; Boost.J&#8203;SON write: 2.51; simd-json (Rust) validate: 3.44; simd-json (Rust) sum: 1.93; simd-json (Rust) select: 2.59; simd-json (Rust) edit: 2.91; simd-json (Rust) minify: 3.45; simd-json (Rust) write: 2.31; serde_json (Rust) validate: 2.27 (2.03 doing less, U); serde_json (Rust) sum: 2.38; serde_json (Rust) select: 1.74; serde_json (Rust) edit: 4.59; serde_json (Rust) minify: 5.02; serde_json (Rust) write: 2.25; Glaze validate: 2.16; Glaze sum: 4.06; Glaze select: 1.41 (0.59 doing less, P); Glaze edit: 4.95; Glaze minify: 4.95 (0.71 doing less, P); Glaze write: 1.78; nlohmann/json json validate: 2.72; nlohmann/json json sum: 1.67; nlohmann/json json select: 7.23; nlohmann/json json edit: 3.87; nlohmann/json json minify: 4.68; nlohmann/json json write: 1.89; RapidJSON validate: 6.26 (4.90 doing less, U); RapidJSON sum: 3.19 (2.51 doing less, U); RapidJSON select: 4.10 (3.37 doing less, U); RapidJSON edit: 3.04 (2.70 doing less, U); RapidJSON minify: 3.67 (2.69 doing less, U N); RapidJSON write: 3.03.</desc>
<text class="nj-charts-tick" x="270" y="34">validate</text>
<text class="nj-charts-tick" x="362" y="34">sum</text>
<text class="nj-charts-tick" x="454" y="34">select</text>
@@ -8,339 +8,354 @@
<text class="nj-charts-tick" x="638" y="34">minify</text>
<text class="nj-charts-tick" x="730" y="34">write</text>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 268 µs&#10;citm_catalog.json: 577 µs&#10;canada.json: 968 µs&#10;jeopardy.json: 36,996 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate&#10;1.00× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 269 µs&#10;citm_catalog.json: 576 µs&#10;canada.json: 984 µs&#10;jeopardy.json: 34,383 µs">
<rect class="nj-heat-0" x="225" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.10× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 411 µs&#10;citm_catalog.json: 1,034 µs&#10;canada.json: 3,808 µs&#10;jeopardy.json: 97,029 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum&#10;1.06× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 391 µs&#10;citm_catalog.json: 919 µs&#10;canada.json: 3,687 µs&#10;jeopardy.json: 83,751 µs">
<rect class="nj-heat-0" x="317" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.10</text>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.06</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;twitter.json: 347 µs · structs (from_json)&#10;citm_catalog.json: 826 µs · parse&#10;canada.json: 1,403 µs · structs (from_json)&#10;jeopardy.json: 92,440 µs · parse">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 335 µs&#10;citm_catalog.json: 740 µs&#10;canada.json: 1,358 µs&#10;jeopardy.json: 94,846 µs">
<rect class="nj-heat-0" x="409" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 559 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 5,741 µs&#10;jeopardy.json: 180,574 µs">
<rect class="nj-heat-0" x="501" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit&#10;1.00× the time of the fastest library (fully validating)&#10;way: editable&#10;twitter.json: 534 µs&#10;citm_catalog.json: 1,091 µs&#10;canada.json: 5,634 µs&#10;jeopardy.json: 192,274 µs">
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 504 µs&#10;citm_catalog.json: 1,127 µs&#10;canada.json: 5,555 µs&#10;jeopardy.json: 158,589 µs">
<rect class="nj-heat-0" x="593" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less&#10;0.82× the time of the fastest fully validating library&#10;twitter.json: 534 µs · editable (validates fully)&#10;citm_catalog.json: 1,091 µs · editable (validates fully)&#10;canada.json: 2,606 µs · editable (source numbers) (validates fully)&#10;jeopardy.json: 192,274 µs · editable (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.82</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 152 µs&#10;citm_catalog.json: 272 µs&#10;canada.json: 3,839 µs&#10;jeopardy.json: 72,604 µs">
<rect class="nj-heat-0" x="685" y="45" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="66" text-anchor="middle">1.00</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify&#10;1.00× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 485 µs&#10;citm_catalog.json: 1,004 µs&#10;canada.json: 5,260 µs&#10;jeopardy.json: 142,985 µs">
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less&#10;0.80× the time of the fastest fully validating library&#10;way: parse + dump (source numbers)&#10;twitter.json: 484 µs (validates fully)&#10;citm_catalog.json: 990 µs (validates fully)&#10;canada.json: 2,236 µs (validates fully)&#10;jeopardy.json: 138,808 µs (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.80</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write&#10;1.00× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 151 µs&#10;citm_catalog.json: 270 µs&#10;canada.json: 3,827 µs&#10;jeopardy.json: 66,099 µs">
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less&#10;0.68× the time of the fastest fully validating library&#10;twitter.json: 148 µs · dump (source numbers) (validates fully)&#10;citm_catalog.json: 255 µs · dump (source numbers) (validates fully)&#10;canada.json: 870 µs · dump (source numbers) (validates fully)&#10;jeopardy.json: 66,099 µs · dump (validates fully)&#10;copies each number&#x27;s text instead of formatting it (number_format::source)">
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.68</text>
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.16× the time of the fastest library (fully validating)&#10;twitter.json: 394 µs · read&#10;citm_catalog.json: 990 µs · read (raw numbers)&#10;canada.json: 2,224 µs · read (raw numbers)&#10;jeopardy.json: 137,955 µs · read (raw numbers)">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate&#10;2.13× the time of the fastest library (fully validating)&#10;twitter.json: 392 µs · insitu (copy)&#10;citm_catalog.json: 991 µs · read (raw numbers)&#10;canada.json: 2,209 µs · read (raw numbers)&#10;jeopardy.json: 125,376 µs · read (raw numbers)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.16</text>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">2.13</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.43× the time of the fastest library (fully validating)&#10;twitter.json: 448 µs · insitu (copy)&#10;citm_catalog.json: 1,161 µs · read&#10;canada.json: 6,230 µs · insitu (copy)&#10;jeopardy.json: 137,830 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.47× the time of the fastest library (fully validating)&#10;twitter.json: 445 µs · insitu (copy)&#10;citm_catalog.json: 1,153 µs · read&#10;canada.json: 5,982 µs · read&#10;jeopardy.json: 132,844 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="317" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.43</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.47</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.40× the time of the fastest library (fully validating)&#10;twitter.json: 398 µs · insitu (copy)&#10;citm_catalog.json: 1,054 µs · read&#10;canada.json: 2,306 µs · read (raw numbers)&#10;jeopardy.json: 146,260 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.41× the time of the fastest library (fully validating)&#10;twitter.json: 399 µs · read&#10;citm_catalog.json: 996 µs · insitu (copy)&#10;canada.json: 2,221 µs · read (raw numbers)&#10;jeopardy.json: 142,096 µs · read&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="409" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.40</text>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.58× the time of the fastest library (fully validating)&#10;twitter.json: 811 µs · mut copy&#10;citm_catalog.json: 1,726 µs · mut copy&#10;canada.json: 9,875 µs · insitu (copy) + mut copy&#10;jeopardy.json: 296,846 µs · mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.61× the time of the fastest library (fully validating)&#10;twitter.json: 806 µs · insitu (copy) + mut copy&#10;citm_catalog.json: 1,712 µs · mut copy&#10;canada.json: 9,794 µs · insitu (copy) + mut copy&#10;jeopardy.json: 314,081 µs · mut copy&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="501" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.58</text>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.61</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.37× the time of the fastest library (fully validating)&#10;twitter.json: 647 µs · insitu (copy) + write&#10;citm_catalog.json: 1,396 µs · read + write&#10;canada.json: 9,552 µs · insitu (copy) + write&#10;jeopardy.json: 204,215 µs · read + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.37</text>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.41× the time of the fastest library (fully validating)&#10;twitter.json: 633 µs · insitu (copy) + write&#10;citm_catalog.json: 1,327 µs · read + write&#10;canada.json: 8,944 µs · insitu (copy) + write&#10;jeopardy.json: 194,228 µs · insitu (copy) + write&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.09× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 188 µs&#10;citm_catalog.json: 327 µs&#10;canada.json: 3,535 µs&#10;jeopardy.json: 74,169 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less&#10;1.06× the time of the fastest fully validating library&#10;twitter.json: 633 µs · insitu (copy) + write (validates fully)&#10;citm_catalog.json: 1,268 µs · read (raw numbers) + write (validates fully)&#10;canada.json: 2,942 µs · read (raw numbers) + write (validates fully)&#10;jeopardy.json: 194,228 µs · insitu (copy) + write (validates fully)&#10;copies each number&#x27;s text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.06</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.14× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 205 µs&#10;citm_catalog.json: 334 µs&#10;canada.json: 3,525 µs&#10;jeopardy.json: 71,877 µs">
<rect class="nj-heat-0" x="685" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.09</text>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.14</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">sonic-cpp</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.30× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 408 µs&#10;citm_catalog.json: 1,044 µs&#10;canada.json: 3,641 µs&#10;jeopardy.json: 99,805 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less&#10;2.30× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 416 µs&#10;citm_catalog.json: 1,034 µs&#10;canada.json: 3,563 µs&#10;jeopardy.json: 95,396 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.30</text>
<text class="nj-charts-cell nj-charts-cell--small" x="270" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.31× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 489 µs&#10;citm_catalog.json: 1,320 µs&#10;canada.json: 4,448 µs&#10;jeopardy.json: 108,214 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less&#10;1.29× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 462 µs&#10;citm_catalog.json: 1,211 µs&#10;canada.json: 4,178 µs&#10;jeopardy.json: 102,429 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="317" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.31</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.29</text>
<text class="nj-charts-cell nj-charts-cell--small" x="362" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.49× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 414 µs&#10;citm_catalog.json: 1,100 µs&#10;canada.json: 3,705 µs&#10;jeopardy.json: 108,534 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="409" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.49</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less&#10;1.54× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 415 µs&#10;citm_catalog.json: 1,040 µs&#10;canada.json: 3,708 µs&#10;jeopardy.json: 111,786 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-2" x="409" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.54</text>
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.28× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 654 µs&#10;citm_catalog.json: 1,617 µs&#10;canada.json: 8,704 µs&#10;jeopardy.json: 191,868 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less&#10;1.27× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 635 µs&#10;citm_catalog.json: 1,558 µs&#10;canada.json: 8,793 µs&#10;jeopardy.json: 186,661 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="501" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.28</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.27</text>
<text class="nj-charts-cell nj-charts-cell--small" x="546" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.36× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 648 µs&#10;citm_catalog.json: 1,654 µs&#10;canada.json: 9,043 µs&#10;jeopardy.json: 176,994 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less&#10;1.40× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 648 µs&#10;citm_catalog.json: 1,551 µs&#10;canada.json: 8,646 µs&#10;jeopardy.json: 162,814 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="593" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.36</text>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.40</text>
<text class="nj-charts-cell nj-charts-cell--small" x="638" y="145" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.51× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 279 µs&#10;citm_catalog.json: 538 µs&#10;canada.json: 5,132 µs&#10;jeopardy.json: 78,073 µs">
<rect class="nj-heat-2" x="685" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.51</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write&#10;1.48× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 258 µs&#10;citm_catalog.json: 536 µs&#10;canada.json: 5,070 µs&#10;jeopardy.json: 71,191 µs">
<rect class="nj-heat-1" x="685" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.48</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="174" text-anchor="end">simdjson</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;2.03× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 314 µs&#10;citm_catalog.json: 755 µs&#10;canada.json: 3,203 µs&#10;jeopardy.json: 123,091 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate&#10;1.99× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 311 µs&#10;citm_catalog.json: 750 µs&#10;canada.json: 3,111 µs&#10;jeopardy.json: 114,707 µs">
<rect class="nj-heat-2" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">2.03</text>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.99</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: On-Demand&#10;twitter.json: 360 µs&#10;citm_catalog.json: 869 µs&#10;canada.json: 3,514 µs&#10;jeopardy.json: 97,315 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.00× the time of the fastest library (fully validating)&#10;way: On-Demand&#10;twitter.json: 356 µs&#10;citm_catalog.json: 811 µs&#10;canada.json: 3,330 µs&#10;jeopardy.json: 89,536 µs">
<rect class="nj-heat-0" x="317" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.00</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.32× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 324 µs&#10;citm_catalog.json: 781 µs&#10;canada.json: 3,418 µs&#10;jeopardy.json: 132,025 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.33× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 320 µs&#10;citm_catalog.json: 755 µs&#10;canada.json: 3,149 µs&#10;jeopardy.json: 129,932 µs">
<rect class="nj-heat-1" x="409" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.32</text>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.33</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.56× the time of the fastest fully validating library&#10;twitter.json: 186 µs · On-Demand (key selectors)&#10;citm_catalog.json: 530 µs · On-Demand&#10;canada.json: 733 µs · On-Demand&#10;jeopardy.json: 49,766 µs · On-Demand (key selectors)&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.57× the time of the fastest fully validating library&#10;twitter.json: 184 µs · On-Demand (key selectors)&#10;citm_catalog.json: 508 µs · On-Demand&#10;canada.json: 701 µs · On-Demand&#10;jeopardy.json: 51,763 µs · On-Demand (key selectors)&#10;reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
<rect class="nj-heat-0" x="455" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="168" text-anchor="middle">0.56</text>
<text class="nj-charts-cell" x="476.5" y="168" text-anchor="middle">0.57</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="181" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · edit&#10;simdjson&#x27;s documents are read-only: it has no A&#8203;PI to change a value and write the result">
<rect class="nj-heat-na" x="501" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-tick" x="546" y="174">n/a</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.59× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 797 µs&#10;citm_catalog.json: 1,468 µs&#10;canada.json: 8,866 µs&#10;jeopardy.json: 306,970 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify&#10;1.64× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 795 µs&#10;citm_catalog.json: 1,396 µs&#10;canada.json: 8,342 µs&#10;jeopardy.json: 283,280 µs">
<rect class="nj-heat-2" x="593" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.59</text>
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.64</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.21× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 127 µs&#10;citm_catalog.json: 343 µs&#10;canada.json: 502 µs&#10;jeopardy.json: 47,256 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less&#10;0.22× the time of the fastest fully validating library&#10;way: minify&#10;twitter.json: 123 µs&#10;citm_catalog.json: 336 µs&#10;canada.json: 423 µs&#10;jeopardy.json: 44,890 µs&#10;simdjson::minify() only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="153" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="168" text-anchor="middle">0.21</text>
<text class="nj-charts-cell" x="660.5" y="168" text-anchor="middle">0.22</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="181" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.23× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 461 µs&#10;citm_catalog.json: 622 µs&#10;canada.json: 5,222 µs&#10;jeopardy.json: 189,639 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write&#10;2.20× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 457 µs&#10;citm_catalog.json: 618 µs&#10;canada.json: 4,906 µs&#10;jeopardy.json: 175,750 µs">
<rect class="nj-heat-2" x="685" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.23</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.20</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="210" text-anchor="end">sonic-rs (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.85× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 482 µs&#10;citm_catalog.json: 969 µs&#10;canada.json: 2,489 µs&#10;jeopardy.json: 55,486 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate&#10;1.83× the time of the fastest library (fully validating)&#10;way: IgnoredAny&#10;twitter.json: 501 µs&#10;citm_catalog.json: 970 µs&#10;canada.json: 2,249 µs&#10;jeopardy.json: 54,369 µs">
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.85</text>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.83</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.09× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 503 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,418 µs&#10;jeopardy.json: 59,993 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.14× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 501 µs&#10;citm_catalog.json: 1,123 µs&#10;canada.json: 4,397 µs&#10;jeopardy.json: 59,583 µs">
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.09</text>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.33× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 538 µs&#10;citm_catalog.json: 1,028 µs&#10;canada.json: 2,283 µs&#10;jeopardy.json: 91,950 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.36× the time of the fastest library (fully validating)&#10;way: structs&#10;twitter.json: 504 µs&#10;citm_catalog.json: 1,033 µs&#10;canada.json: 2,328 µs&#10;jeopardy.json: 90,486 µs">
<rect class="nj-heat-1" x="409" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.33</text>
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.36</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.97× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,201 µs&#10;citm_catalog.json: 2,416 µs&#10;canada.json: 7,958 µs&#10;jeopardy.json: 421,718 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.92× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,197 µs&#10;citm_catalog.json: 2,389 µs&#10;canada.json: 7,744 µs&#10;jeopardy.json: 390,952 µs">
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.97</text>
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.92</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.65× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,003 µs&#10;citm_catalog.json: 2,174 µs&#10;canada.json: 7,753 µs&#10;jeopardy.json: 217,354 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.76× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 1,000 µs&#10;citm_catalog.json: 2,097 µs&#10;canada.json: 7,795 µs&#10;jeopardy.json: 215,280 µs">
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.65</text>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.76</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;1.98× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 445 µs&#10;citm_catalog.json: 931 µs&#10;canada.json: 4,048 µs&#10;jeopardy.json: 104,487 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.03× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 434 µs&#10;citm_catalog.json: 927 µs&#10;canada.json: 3,987 µs&#10;jeopardy.json: 109,176 µs">
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.98</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.03</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J&#8203;SON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.89× the time of the fastest library (fully validating)&#10;way: S&#8203;AX (numbers: none)&#10;twitter.json: 716 µs&#10;citm_catalog.json: 949 µs&#10;canada.json: 1,638 µs&#10;jeopardy.json: 63,909 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · validate&#10;1.91× the time of the fastest library (fully validating)&#10;twitter.json: 723 µs · S&#8203;AX (numbers: none)&#10;citm_catalog.json: 933 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,674 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 61,382 µs · S&#8203;AX">
<rect class="nj-heat-2" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.89</text>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.35× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 794 µs&#10;citm_catalog.json: 1,131 µs&#10;canada.json: 5,696 µs&#10;jeopardy.json: 69,348 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.33× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 736 µs&#10;citm_catalog.json: 1,018 µs&#10;canada.json: 5,847 µs&#10;jeopardy.json: 62,361 µs">
<rect class="nj-heat-1" x="317" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.35</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.33</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.22× the time of the fastest library (fully validating)&#10;twitter.json: 905 µs · parse_into structs&#10;citm_catalog.json: 1,325 µs · parse_into structs&#10;canada.json: 7,511 µs · parse&#10;jeopardy.json: 99,987 µs · parse_into structs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.29× the time of the fastest library (fully validating)&#10;way: parse_into structs&#10;twitter.json: 889 µs&#10;citm_catalog.json: 1,383 µs&#10;canada.json: 6,906 µs&#10;jeopardy.json: 102,896 µs">
<rect class="nj-heat-2" x="409" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.22</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.55× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 2,028 µs&#10;citm_catalog.json: 2,875 µs&#10;canada.json: 13,782 µs&#10;jeopardy.json: 342,712 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.58× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,921 µs&#10;citm_catalog.json: 2,957 µs&#10;canada.json: 13,679 µs&#10;jeopardy.json: 357,636 µs">
<rect class="nj-heat-3" x="501" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.55</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.58</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.70× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,948 µs&#10;citm_catalog.json: 3,011 µs&#10;canada.json: 14,314 µs&#10;jeopardy.json: 318,313 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.89× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,933 µs&#10;citm_catalog.json: 2,927 µs&#10;canada.json: 13,580 µs&#10;jeopardy.json: 333,217 µs">
<rect class="nj-heat-3" x="593" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.70</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.89</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.40× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,026 µs&#10;canada.json: 5,843 µs&#10;jeopardy.json: 132,662 µs">
<rect class="nj-heat-2" x="685" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.40</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.51× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 464 µs&#10;citm_catalog.json: 999 µs&#10;canada.json: 6,202 µs&#10;jeopardy.json: 142,516 µs">
<rect class="nj-heat-3" x="685" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.51</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="282" text-anchor="end">simd-json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.44× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 563 µs&#10;citm_catalog.json: 1,403 µs&#10;canada.json: 4,630 µs&#10;jeopardy.json: 212,467 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate&#10;3.44× the time of the fastest library (fully validating)&#10;way: tape (copy)&#10;twitter.json: 567 µs&#10;citm_catalog.json: 1,430 µs&#10;canada.json: 4,359 µs&#10;jeopardy.json: 207,551 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="225" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.44</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.87× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 668 µs&#10;citm_catalog.json: 1,688 µs&#10;canada.json: 5,134 µs&#10;jeopardy.json: 224,411 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.93× the time of the fastest library (fully validating)&#10;way: visitor (copy)&#10;twitter.json: 681 µs&#10;citm_catalog.json: 1,650 µs&#10;canada.json: 5,083 µs&#10;jeopardy.json: 210,185 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-2" x="317" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.87</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.93</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.61× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 740 µs&#10;citm_catalog.json: 1,802 µs&#10;canada.json: 4,997 µs&#10;jeopardy.json: 258,566 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.59× the time of the fastest library (fully validating)&#10;way: structs (copy)&#10;twitter.json: 679 µs&#10;citm_catalog.json: 1,731 µs&#10;canada.json: 5,144 µs&#10;jeopardy.json: 239,164 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.61</text>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.59</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;3.10× the time of the fastest library (fully validating)&#10;twitter.json: 1,924 µs · borrowed (copy)&#10;citm_catalog.json: 4,575 µs · borrowed (copy)&#10;canada.json: 15,746 µs · owned (copy)&#10;jeopardy.json: 435,817 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.91× the time of the fastest library (fully validating)&#10;twitter.json: 1,862 µs · borrowed (copy)&#10;citm_catalog.json: 4,194 µs · borrowed (copy)&#10;canada.json: 14,896 µs · owned (copy)&#10;jeopardy.json: 391,369 µs · borrowed (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">3.10</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">2.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.29× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,878 µs&#10;citm_catalog.json: 4,655 µs&#10;canada.json: 15,955 µs&#10;jeopardy.json: 419,412 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.45× the time of the fastest library (fully validating)&#10;way: borrowed (copy)&#10;twitter.json: 1,889 µs&#10;citm_catalog.json: 4,196 µs&#10;canada.json: 15,716 µs&#10;jeopardy.json: 414,377 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="593" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.29</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.45</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.19× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 597 µs&#10;citm_catalog.json: 809 µs&#10;canada.json: 4,817 µs&#10;jeopardy.json: 114,245 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.31× the time of the fastest library (fully validating)&#10;way: borrowed&#10;twitter.json: 582 µs&#10;citm_catalog.json: 800 µs&#10;canada.json: 5,147 µs&#10;jeopardy.json: 122,623 µs">
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.19</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.31</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">serde_json (Rust)</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.30× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 622 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,621 µs&#10;jeopardy.json: 65,602 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate&#10;2.27× the time of the fastest library (fully validating)&#10;way: from_utf8 + IgnoredAny&#10;twitter.json: 624 µs&#10;citm_catalog.json: 1,440 µs&#10;canada.json: 2,406 µs&#10;jeopardy.json: 64,720 µs">
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.30</text>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.27</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.06× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 480 µs&#10;citm_catalog.json: 1,371 µs&#10;canada.json: 2,538 µs&#10;jeopardy.json: 60,154 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.03× the time of the fastest fully validating library&#10;way: IgnoredAny&#10;twitter.json: 484 µs&#10;citm_catalog.json: 1,370 µs&#10;canada.json: 2,314 µs&#10;jeopardy.json: 58,247 µs&#10;trusts U&#8203;TF-8 in the strings it skips (from_slice); strings it reads are checked">
<rect class="nj-heat-2" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.06</text>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.03</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="325" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.28× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,316 µs&#10;canada.json: 7,241 µs&#10;jeopardy.json: 130,249 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.38× the time of the fastest library (fully validating)&#10;way: visitor&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 2,288 µs&#10;canada.json: 7,127 µs&#10;jeopardy.json: 129,497 µs">
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.28</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.38</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.73× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 722 µs&#10;citm_catalog.json: 1,559 µs&#10;canada.json: 2,585 µs&#10;jeopardy.json: 114,701 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.74× the time of the fastest library (fully validating)&#10;way: from_utf8 + structs&#10;twitter.json: 701 µs&#10;citm_catalog.json: 1,532 µs&#10;canada.json: 2,529 µs&#10;jeopardy.json: 107,316 µs">
<rect class="nj-heat-2" x="409" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.73</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.74</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.05× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,036 µs&#10;citm_catalog.json: 7,181 µs&#10;canada.json: 17,371 µs&#10;jeopardy.json: 843,034 µs">
<rect class="nj-heat-4" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">5.05</text>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;4.59× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,042 µs&#10;citm_catalog.json: 6,586 µs&#10;canada.json: 16,631 µs&#10;jeopardy.json: 632,766 µs">
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.59</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.01× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,220 µs&#10;citm_catalog.json: 6,876 µs&#10;canada.json: 17,276 µs&#10;jeopardy.json: 628,192 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.02× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 4,012 µs&#10;citm_catalog.json: 6,583 µs&#10;canada.json: 17,306 µs&#10;jeopardy.json: 509,702 µs">
<rect class="nj-heat-4" x="593" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.01</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.02</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.14× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 560 µs&#10;citm_catalog.json: 848 µs&#10;canada.json: 3,964 µs&#10;jeopardy.json: 129,473 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.25× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 550 µs&#10;citm_catalog.json: 887 µs&#10;canada.json: 4,005 µs&#10;jeopardy.json: 134,163 µs">
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.14</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.25</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="354" text-anchor="end">Glaze</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.18× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 595 µs&#10;citm_catalog.json: 1,445 µs&#10;canada.json: 1,870 µs&#10;jeopardy.json: 77,940 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate&#10;2.16× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 592 µs&#10;citm_catalog.json: 1,417 µs&#10;canada.json: 1,868 µs&#10;jeopardy.json: 72,510 µs">
<rect class="nj-heat-2" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.18</text>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.16</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.44× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,416 µs&#10;citm_catalog.json: 4,521 µs&#10;canada.json: 12,148 µs&#10;jeopardy.json: 312,263 µs">
<rect class="nj-heat-3" x="317" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.44</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.06× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,350 µs&#10;citm_catalog.json: 4,048 µs&#10;canada.json: 10,485 µs&#10;jeopardy.json: 233,680 µs">
<rect class="nj-heat-3" x="317" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">4.06</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;4.13× the time of the fastest fully validating library&#10;twitter.json: 2,416 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,415 µs · generic (double)&#10;canada.json: 12,046 µs · generic (double)&#10;jeopardy.json: 241,145 µs · lazy_json&#10;accepts trailing garbage after the value: Glaze&#x27;s default (validate_trailing_whitespace checks it)&#10;reads lazily: lazy_json reads only what you ask for and steps over the rest">
<rect class="nj-heat-3" x="363" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">4.13</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.42× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 525 µs&#10;citm_catalog.json: 1,534 µs&#10;canada.json: 1,926 µs&#10;jeopardy.json: 98,399 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select&#10;1.41× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 526 µs&#10;citm_catalog.json: 1,453 µs&#10;canada.json: 1,902 µs&#10;jeopardy.json: 87,166 µs">
<rect class="nj-heat-1" x="409" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.42</text>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.59× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 338 µs&#10;citm_catalog.json: 417 µs&#10;canada.json: 446 µs&#10;jeopardy.json: 72,947 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.59× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 341 µs&#10;citm_catalog.json: 405 µs&#10;canada.json: 432 µs&#10;jeopardy.json: 66,832 µs&#10;reads into structs and steps over fields it doesn&#x27;t know without checking them (validate_skipped checks them too)">
<rect class="nj-heat-0" x="455" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.59</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;5.15× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,707 µs&#10;citm_catalog.json: 6,528 µs&#10;canada.json: 23,959 µs&#10;jeopardy.json: 788,989 µs">
<rect class="nj-heat-4" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.15</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit&#10;4.95× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,600 µs&#10;citm_catalog.json: 6,812 µs&#10;canada.json: 22,771 µs&#10;jeopardy.json: 676,289 µs">
<rect class="nj-heat-3" x="501" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.95</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;5.09× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,637 µs&#10;citm_catalog.json: 6,974 µs&#10;canada.json: 24,962 µs&#10;jeopardy.json: 528,359 µs">
<rect class="nj-heat-4" x="593" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">5.09</text>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;4.95× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,324 µs&#10;citm_catalog.json: 6,164 µs&#10;canada.json: 22,576 µs&#10;jeopardy.json: 476,579 µs">
<rect class="nj-heat-3" x="593" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.95</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.72× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 425 µs&#10;citm_catalog.json: 1,210 µs&#10;canada.json: 2,654 µs&#10;jeopardy.json: 98,485 µs&#10;minify_json only removes whitespace, without parsing the values">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.71× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 419 µs&#10;citm_catalog.json: 1,112 µs&#10;canada.json: 2,095 µs&#10;jeopardy.json: 96,282 µs&#10;minify_json only removes whitespace, without parsing the values">
<rect class="nj-heat-0" x="639" y="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.72</text>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.71</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="361" text-anchor="middle">P</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.76× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 340 µs&#10;citm_catalog.json: 663 µs&#10;canada.json: 3,669 µs&#10;jeopardy.json: 133,954 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write&#10;1.78× the time of the fastest library (fully validating)&#10;twitter.json: 332 µs · generic&#10;citm_catalog.json: 655 µs · generic&#10;canada.json: 3,676 µs · generic (strict)&#10;jeopardy.json: 128,044 µs · generic">
<rect class="nj-heat-2" x="685" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.76</text>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.78</text>
</g>
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="390" text-anchor="end">nlohmann/json json</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.74× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 659 µs&#10;citm_catalog.json: 1,360 µs&#10;canada.json: 4,533 µs&#10;jeopardy.json: 76,432 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate&#10;2.72× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 698 µs&#10;citm_catalog.json: 1,299 µs&#10;canada.json: 4,370 µs&#10;jeopardy.json: 72,856 µs">
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.74</text>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.72</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.74× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 822 µs&#10;citm_catalog.json: 1,849 µs&#10;canada.json: 6,124 µs&#10;jeopardy.json: 106,310 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.67× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 792 µs&#10;citm_catalog.json: 1,545 µs&#10;canada.json: 5,697 µs&#10;jeopardy.json: 95,144 µs">
<rect class="nj-heat-2" x="317" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.74</text>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.67</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.91× the time of the fastest library (fully validating)&#10;twitter.json: 3,260 µs · structs (from_json)&#10;citm_catalog.json: 5,881 µs · structs (from_json)&#10;canada.json: 12,046 µs · parse&#10;jeopardy.json: 630,235 µs · parse">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.23× the time of the fastest library (fully validating)&#10;twitter.json: 3,323 µs · parse&#10;citm_catalog.json: 5,055 µs · parse&#10;canada.json: 12,002 µs · structs (from_json)&#10;jeopardy.json: 432,006 µs · parse">
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.91</text>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.23</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.46× the time of the fastest library (fully validating)&#10;twitter.json: 3,191 µs · ordered_json&#10;citm_catalog.json: 5,392 µs · ordered_json&#10;canada.json: 16,314 µs · parse&#10;jeopardy.json: 915,203 µs · ordered_json">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.87× the time of the fastest library (fully validating)&#10;way: ordered_json&#10;twitter.json: 2,840 µs&#10;citm_catalog.json: 4,985 µs&#10;canada.json: 15,317 µs&#10;jeopardy.json: 649,500 µs">
<rect class="nj-heat-3" x="501" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">4.46</text>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.87</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;5.05× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,842 µs&#10;citm_catalog.json: 6,640 µs&#10;canada.json: 16,883 µs&#10;jeopardy.json: 753,123 µs">
<rect class="nj-heat-4" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">5.05</text>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.68× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,753 µs&#10;citm_catalog.json: 5,669 µs&#10;canada.json: 15,647 µs&#10;jeopardy.json: 527,354 µs">
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.68</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.85× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 435 µs&#10;citm_catalog.json: 622 µs&#10;canada.json: 4,021 µs&#10;jeopardy.json: 124,517 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.89× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 437 µs&#10;citm_catalog.json: 631 µs&#10;canada.json: 4,027 µs&#10;jeopardy.json: 119,028 µs">
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.85</text>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.89</text>
</g>
<text class="nj-charts-rowlabel " x="216" y="426" text-anchor="end">RapidJSON</text>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.28× the time of the fastest library (fully validating)&#10;twitter.json: 1,606 µs · insitu (copy)&#10;citm_catalog.json: 2,315 µs · S&#8203;AX&#10;canada.json: 10,370 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 223,678 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate&#10;6.26× the time of the fastest library (fully validating)&#10;twitter.json: 1,694 µs · insitu (copy)&#10;citm_catalog.json: 2,222 µs · insitu (copy)&#10;canada.json: 10,357 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 207,460 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-4" x="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.28</text>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.26</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;4.90× the time of the fastest fully validating library&#10;twitter.json: 1,133 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,678 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,350 µs · S&#8203;AX (raw numbers) (no encoding check)&#10;jeopardy.json: 162,310 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;4.90× the time of the fastest fully validating library&#10;twitter.json: 1,126 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,695 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,357 µs · S&#8203;AX (raw numbers) (validates fully)&#10;jeopardy.json: 153,062 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="271" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.90</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;3.27× the time of the fastest library (fully validating)&#10;twitter.json: 1,768 µs · insitu (copy)&#10;citm_catalog.json: 2,476 µs · S&#8203;AX&#10;canada.json: 12,444 µs · S&#8203;AX&#10;jeopardy.json: 223,612 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;3.19× the time of the fastest library (fully validating)&#10;twitter.json: 1,647 µs · insitu (copy)&#10;citm_catalog.json: 2,326 µs · S&#8203;AX&#10;canada.json: 10,949 µs · S&#8203;AX&#10;jeopardy.json: 212,747 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="317" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">3.27</text>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">3.19</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.60× the time of the fastest fully validating library&#10;twitter.json: 1,283 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,910 µs · S&#8203;AX (no encoding check)&#10;canada.json: 12,444 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 160,781 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.51× the time of the fastest fully validating library&#10;twitter.json: 1,169 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,739 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,825 µs · S&#8203;AX (no encoding check)&#10;jeopardy.json: 156,639 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="363" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.60</text>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.51</text>
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;4.15× the time of the fastest library (fully validating)&#10;twitter.json: 1,614 µs · insitu (copy)&#10;citm_catalog.json: 2,467 µs · insitu (copy)&#10;canada.json: 11,973 µs · Document&#10;jeopardy.json: 231,174 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;4.10× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,601 µs&#10;citm_catalog.json: 2,216 µs&#10;canada.json: 11,491 µs&#10;jeopardy.json: 221,481 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="409" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.15</text>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.10</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.42× the time of the fastest fully validating library&#10;twitter.json: 1,135 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,120 µs · Document (no encoding check)&#10;canada.json: 11,973 µs · Document (validates fully)&#10;jeopardy.json: 176,105 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.37× the time of the fastest fully validating library&#10;twitter.json: 1,117 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,920 µs · Document (no encoding check)&#10;canada.json: 11,482 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 166,715 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="455" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.42</text>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.37</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;3.17× the time of the fastest library (fully validating)&#10;twitter.json: 2,508 µs · insitu (copy)&#10;citm_catalog.json: 3,342 µs · insitu (copy)&#10;canada.json: 21,057 µs · Document&#10;jeopardy.json: 372,662 µs · insitu (copy)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;3.04× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 2,334 µs&#10;citm_catalog.json: 3,188 µs&#10;canada.json: 20,424 µs&#10;jeopardy.json: 354,478 µs&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="501" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.17</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.04</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.78× the time of the fastest fully validating library&#10;twitter.json: 1,956 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 3,004 µs · Document (no encoding check)&#10;canada.json: 21,057 µs · Document (validates fully)&#10;jeopardy.json: 316,448 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.70× the time of the fastest fully validating library&#10;twitter.json: 1,892 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,898 µs · Document (no encoding check)&#10;canada.json: 20,424 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 297,773 µs · insitu (copy) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;(copy): parses in place, on a copy of the input that is part of the time">
<rect class="nj-heat-3" x="547" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.78</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.70</text>
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="433" text-anchor="middle">U</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.64× the time of the fastest library (fully validating)&#10;twitter.json: 2,812 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 3,360 µs · S&#8203;AX to Writer&#10;canada.json: 21,929 µs · Document + Writer&#10;jeopardy.json: 425,370 µs · S&#8203;AX to Writer">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.67× the time of the fastest library (fully validating)&#10;twitter.json: 2,716 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 3,082 µs · S&#8203;AX to Writer&#10;canada.json: 20,610 µs · Document + Writer&#10;jeopardy.json: 386,778 µs · S&#8203;AX to Writer">
<rect class="nj-heat-3" x="593" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.64</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.67</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.85× the time of the fastest fully validating library&#10;twitter.json: 1,897 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,725 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 21,929 µs · Document + Writer (validates fully)&#10;jeopardy.json: 291,382 µs · S&#8203;AX to Writer (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.69× the time of the fastest fully validating library&#10;twitter.json: 1,837 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,508 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 14,998 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;jeopardy.json: 277,974 µs · S&#8203;AX to Writer (raw numbers) (no encoding check)&#10;trusts U&#8203;TF-8: RapidJSON&#x27;s default (kParseValidateEncodingFlag checks it)&#10;copies each number&#x27;s text instead of formatting it (kParseNumbersAsStringsFlag)">
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.85</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U</text>
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.69</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.99× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 694 µs&#10;citm_catalog.json: 1,018 µs&#10;canada.json: 8,831 µs&#10;jeopardy.json: 148,079 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;3.03× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 669 µs&#10;citm_catalog.json: 1,025 µs&#10;canada.json: 9,078 µs&#10;jeopardy.json: 140,116 µs">
<rect class="nj-heat-3" x="685" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.99</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">3.03</text>
</g>
<text class="nj-charts-tick nj-charts-tick--l" x="8" y="472">time relative to the fastest fully validating library, less is better</text>
<g><rect class="nj-heat-0" x="8" y="482" width="76" height="20" rx="3"/>

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 45 KiB

File diff suppressed because it is too large. Load diff
+182 -182
View File
@@ -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
1 benchmark unit 3.12.0 3.13.0 speedup
2 Accept/canada ns 1.26911e+07 1.29488e+07 2.31896e+06 2.3494e+06 5.473 5.512
3 Accept/citm_catalog ns 6.38348e+06 6.53091e+06 907300 923408 7.036 7.073
4 Accept/floats ns 1.13021e+08 1.15702e+08 2.2302e+07 2.26771e+07 5.068 5.102
5 Accept/jeopardy ns 2.18859e+08 2.20758e+08 5.74875e+07 5.92935e+07 3.807 3.723
6 Accept/signed_ints ns 1.15082e+08 1.17358e+08 2.76628e+07 2.82947e+07 4.160 4.148
7 Accept/small_signed_ints ns 5.58745e+07 5.75113e+07 1.76566e+07 1.80352e+07 3.165 3.189
8 Accept/twitter ns 2.45895e+06 2.51345e+06 474623 483792 5.181 5.195
9 Accept/unsigned_ints ns 1.13737e+08 1.16297e+08 2.91215e+07 2.97181e+07 3.906 3.913
10 BinaryToCbor/1024 ns 303.306 298.444 101.854 107.095 2.978 2.787
11 BinaryToCbor/128 ns 247.228 248.661 115.274 116.711 2.145 2.131
12 BinaryToCbor/16 ns 239.518 244.687 48.6796 49.6325 4.920 4.930
13 BinaryToCbor/16384 ns 949.458 952.115 408.254 413.62 2.326 2.302
14 BinaryToCbor/2048 ns 320.309 328.419 119.299 125.183 2.685 2.624
15 BinaryToCbor/256 ns 265.095 264.678 88.0809 90.8937 3.010 2.912
16 BinaryToCbor/32 ns 249.054 251.632 48.4924 50.4059 5.136 4.992
17 BinaryToCbor/32768 ns 1533.16 1541.05 801.01 802.721 1.914 1.920
18 BinaryToCbor/4096 ns 412.14 406.957 169.413 177.412 2.433 2.294
19 BinaryToCbor/512 ns 289.358 289.876 97.2851 102.063 2.974 2.840
20 BinaryToCbor/64 ns 249.278 254.928 83.8812 84.6434 2.972 3.012
21 BinaryToCbor/8 ns 242.904 247.618 48.4594 49.3761 5.013 5.015
22 BinaryToCbor/8192 ns 511.492 514.281 247.585 256.456 2.066 2.005
23 Copy/canada ns 3.65404e+06 3.78116e+06 2.86994e+06 2.92734e+06 1.273 1.292
24 Copy/citm_catalog ns 1.62077e+06 1.7026e+06 1.45859e+06 1.51108e+06 1.111 1.127
25 Copy/twitter ns 799004 840201 725731 767400 1.101 1.095
26 CopyAssign/canada ns 3.66694e+06 3.86416e+06 2.88365e+06 2.94449e+06 1.272 1.312
27 CopyAssign/citm_catalog ns 1.65324e+06 1.76529e+06 1.49021e+06 1.58608e+06 1.109 1.113
28 CopyAssign/twitter ns 807988 884985 738979 790724 1.093 1.119
29 CopyOnly/canada ns 1.51887e+06 1.60229e+06 1.50295e+06 1.57507e+06 1.011 1.017
30 CopyOnly/citm_catalog ns 743278 786244 781882 817481 0.951 0.962
31 CopyOnly/twitter ns 400238 423631 403229 420649 0.993 1.007
32 CopyRing/canada ns 3.68209e+06 3.86433e+06 2.88747e+06 2.99657e+06 1.275 1.290
33 CopyRing/citm_catalog ns 1.68855e+06 1.84434e+06 1.51116e+06 1.60579e+06 1.117 1.149
34 CopyRing/twitter ns 849612 951510 769730 818035 1.104 1.163
35 DestroyOnly/canada ns 2.12854e+06 2.22138e+06 1.37108e+06 1.40157e+06 1.552 1.585
36 DestroyOnly/citm_catalog ns 875707 926244 674090 711471 1.299 1.302
37 DestroyOnly/twitter ns 401328 416055 322604 336082 1.244 1.238
38 Diff/canada ns 3.81123e+07 3.98055e+07 3.68674e+06 3.80466e+06 10.338 10.462
39 Diff/citm_catalog ns 6.77551e+06 7.1859e+06 1.06847e+06 1.12351e+06 6.341 6.396
40 Diff/twitter ns 4.82656e+06 5.11261e+06 639150 661062 7.552 7.734
41 Dump/canada / - ns 6.6893e+06 6.95189e+06 2.28575e+06 2.33647e+06 2.927 2.975
42 Dump/canada / 4 ns 8.91301e+06 9.09882e+06 3.0094e+06 3.10291e+06 2.962 2.932
43 Dump/citm_catalog / - ns 1.38998e+06 1.42117e+06 291064 295678 4.776 4.806
44 Dump/citm_catalog / 4 ns 1.92209e+06 1.98589e+06 414843 422600 4.633 4.699
45 Dump/floats / - ns 6.31567e+07 6.4332e+07 2.35913e+07 2.37747e+07 2.677 2.706
46 Dump/floats / 4 ns 7.1106e+07 7.25695e+07 2.44198e+07 2.46207e+07 2.912 2.947
47 Dump/jeopardy / - ns 2.03467e+08 2.06771e+08 3.07362e+07 3.17494e+07 6.620 6.513
48 Dump/jeopardy / 4 ns 2.18712e+08 2.27967e+08 3.4619e+07 3.53626e+07 6.318 6.447
49 Dump/signed_ints / - ns 2.37468e+07 2.40551e+07 1.06034e+07 1.0736e+07 2.240 2.241
50 Dump/signed_ints / 4 ns 3.1988e+07 3.25192e+07 1.12253e+07 1.1333e+07 2.850 2.869
51 Dump/small_signed_ints / - ns 1.7782e+07 1.81398e+07 7.91902e+06 8.12457e+06 2.245 2.233
52 Dump/small_signed_ints / 4 ns 2.4964e+07 2.55296e+07 8.76268e+06 8.80796e+06 2.849 2.898
53 Dump/twitter / - ns 1.39069e+06 1.43584e+06 208747 214252 6.662 6.702
54 Dump/twitter / 4 ns 1.58219e+06 1.63183e+06 246027 253042 6.431 6.449
55 Dump/unsigned_ints / - ns 2.36168e+07 2.39512e+07 7.99718e+06 8.11916e+06 2.953 2.950
56 Dump/unsigned_ints / 4 ns 3.19304e+07 3.22761e+07 8.41574e+06 8.58925e+06 3.794 3.758
57 Equal/canada ns 454099 473767 336428 349284 1.350 1.356
58 Equal/citm_catalog ns 265088 279548 254849 263329 1.040 1.062
59 Equal/twitter ns 140412 145555 127744 131450 1.099 1.107
60 Flatten/canada ns 2.8443e+07 2.94475e+07 1.1054e+07 1.11184e+07 2.573 2.649
61 Flatten/citm_catalog ns 6.37309e+06 6.7155e+06 3.00071e+06 3.07325e+06 2.124 2.185
62 Flatten/twitter ns 3.47895e+06 3.66077e+06 2.04063e+06 2.10599e+06 1.705 1.738
63 FlattenOrdered/citm_catalog ns 2.51402e+08 2.62026e+08 1.38824e+06 1.42645e+06 181.094 183.691
64 FlattenOrdered/twitter ns 4.89453e+07 5.1275e+07 860119 890275 56.905 57.595
65 FromBinaryBuffer/bjdata / canada ns 8.21979e+06 8.81972e+06 4.07412e+06 4.16727e+06 2.018 2.116
66 FromBinaryBuffer/bjdata / twitter ns 3.11089e+06 3.32045e+06 957789 976266 3.248 3.401
67 FromBinaryBuffer/bjdata_optimized / canada ns 8.68489e+06 9.2386e+06 2.39853e+06 2.47996e+06 3.621 3.725
68 FromBinaryBuffer/bjdata_optimized / twitter ns 3.11963e+06 3.30526e+06 952143 985625 3.276 3.353
69 FromBinaryBuffer/bson / canada ns 9.42574e+06 1.00372e+07 4.20336e+06 4.31554e+06 2.242 2.326
70 FromBinaryBuffer/bson / citm_catalog ns 3.86254e+06 4.07611e+06 1.56165e+06 1.60647e+06 2.473 2.537
71 FromBinaryBuffer/bson / twitter ns 3.0653e+06 3.25635e+06 923900 936933 3.318 3.476
72 FromBinaryBuffer/cbor / canada ns 8.3425e+06 8.89562e+06 2.06207e+06 2.11517e+06 4.046 4.206
73 FromBinaryBuffer/cbor / citm_catalog ns 3.68456e+06 3.94234e+06 1.43886e+06 1.45242e+06 2.561 2.714
74 FromBinaryBuffer/cbor / floats ns 2.89541e+07 3.0473e+07 5.43061e+06 5.47969e+06 5.332 5.561
75 FromBinaryBuffer/cbor / jeopardy ns 3.5724e+08 3.73185e+08 1.12871e+08 1.14934e+08 3.165 3.247
76 FromBinaryBuffer/cbor / signed_ints ns 3.56166e+07 3.66673e+07 9.68737e+06 9.88892e+06 3.677 3.708
77 FromBinaryBuffer/cbor / twitter ns 3.03558e+06 3.23196e+06 953772 953415 3.183 3.390
78 FromBinaryBuffer/msgpack / canada ns 8.3272e+06 8.85983e+06 2.06449e+06 2.12215e+06 4.034 4.175
79 FromBinaryBuffer/msgpack / citm_catalog ns 3.68401e+06 3.84901e+06 1.41095e+06 1.4503e+06 2.611 2.654
80 FromBinaryBuffer/msgpack / jeopardy ns 3.54505e+08 3.73143e+08 1.09031e+08 1.11034e+08 3.251 3.361
81 FromBinaryBuffer/msgpack / twitter ns 3.02687e+06 3.2397e+06 934627 954811 3.239 3.393
82 FromBinaryBuffer/ubjson / canada ns 8.23819e+06 8.84059e+06 4.08039e+06 4.20402e+06 2.019 2.103
83 FromBinaryBuffer/ubjson / citm_catalog ns 3.81107e+06 4.0708e+06 1.72436e+06 1.78566e+06 2.210 2.280
84 FromBinaryBuffer/ubjson / jeopardy ns 3.64419e+08 3.79093e+08 1.13389e+08 1.17024e+08 3.214 3.239
85 FromBinaryBuffer/ubjson / twitter ns 3.1103e+06 3.29948e+06 957344 981057 3.249 3.363
86 FromBinaryBuffer/ubjson_optimized / canada ns 8.48001e+06 8.88909e+06 2.36934e+06 2.42788e+06 3.579 3.661
87 FromBinaryBuffer/ubjson_optimized / twitter ns 3.10764e+06 3.29784e+06 952334 974810 3.263 3.383
88 FromBinaryFile/bjdata / twitter ns 1.03821e+07 1.09208e+07 1.90031e+06 1.94678e+06 5.463 5.610
89 FromBinaryFile/bson / twitter ns 1.01272e+07 1.07209e+07 1.80218e+06 1.84971e+06 5.619 5.796
90 FromBinaryFile/cbor / canada ns 1.41591e+07 1.49218e+07 4.41088e+06 4.48832e+06 3.210 3.325
91 FromBinaryFile/cbor / twitter ns 9.81686e+06 1.03718e+07 1.53188e+06 1.57388e+06 6.408 6.590
92 FromBinaryFile/ubjson / canada ns 1.36558e+07 1.43414e+07 6.313e+06 6.42996e+06 2.163 2.230
93 FromBinaryFile/ubjson / twitter ns 1.03653e+07 1.09266e+07 1.90283e+06 1.97275e+06 5.447 5.539
94 FromBinaryShape/containers / bjdata ns 1.41661e+07 1.46977e+07 7.16958e+06 7.23447e+06 1.976 2.032
95 FromBinaryShape/containers / bson ns 1.69957e+07 1.75596e+07 7.73162e+06 7.88867e+06 2.198 2.226
96 FromBinaryShape/containers / cbor ns 1.37448e+07 1.46488e+07 3.88944e+06 4.15792e+06 3.534 3.523
97 FromBinaryShape/containers / msgpack ns 1.36707e+07 1.45853e+07 3.84073e+06 3.89266e+06 3.559 3.747
98 FromBinaryShape/containers / ubjson ns 1.41846e+07 1.49773e+07 7.17314e+06 7.23987e+06 1.977 2.069
99 FromBinaryShape/containers / ubjson_optimized ns 1.47508e+07 1.54989e+07 4.4236e+06 4.55976e+06 3.335 3.399
100 FromBinaryShape/nested / bjdata ns 93440.7 96825.9 37989.3 38335.1 2.460 2.526
101 FromBinaryShape/nested / bson ns 99835.8 101356 42028.7 42620.2 2.375 2.378
102 FromBinaryShape/nested / cbor ns 92913.6 94929.8 35141.4 35845.6 2.644 2.648
103 FromBinaryShape/nested / msgpack ns 90678.9 92610.2 34607.5 35078.3 2.620 2.640
104 FromBinaryShape/nested / ubjson ns 93863.6 96090.6 38056.3 38285.6 2.466 2.510
105 FromBinaryShape/scalars / bjdata ns 2.44312e+07 2.52616e+07 1.13593e+07 1.15856e+07 2.151 2.180
106 FromBinaryShape/scalars / cbor ns 2.54479e+07 2.62118e+07 5.6307e+06 5.88743e+06 4.519 4.452
107 FromBinaryShape/scalars / msgpack ns 2.42975e+07 2.50706e+07 5.5278e+06 5.65159e+06 4.396 4.436
108 FromBinaryShape/scalars / ubjson ns 2.46773e+07 2.53402e+07 1.14308e+07 1.16191e+07 2.159 2.181
109 FromCborChunkedString/10000 chunks ns 89835.8 91845.9 81350.8 82875.5 1.104 1.108
110 FromMsgpack/canada ns 1.41497e+07 1.48853e+07 4.42303e+06 4.56225e+06 3.199 3.263
111 FromMsgpack/citm_catalog ns 8.88096e+06 9.3559e+06 2.25194e+06 2.26246e+06 3.944 4.135
112 FromMsgpack/floats ns 5.92552e+07 6.12575e+07 2.76614e+07 2.86709e+07 2.142 2.137
113 FromMsgpack/jeopardy ns 1.13309e+09 1.16767e+09 1.82341e+08 1.90153e+08 6.214 6.141
114 FromMsgpack/signed_ints ns 6.22313e+07 6.38812e+07 3.28285e+07 3.28867e+07 1.896 1.942
115 FromMsgpack/small_signed_ints ns 6.26259e+07 6.44688e+07 3.37353e+07 3.44227e+07 1.856 1.873
116 FromMsgpack/twitter ns 9.78102e+06 1.02787e+07 1.47267e+06 1.48541e+06 6.642 6.920
117 FromMsgpack/unsigned_ints ns 5.55099e+07 5.7784e+07 2.76571e+07 2.83078e+07 2.007 2.041
118 GetArray<std::array<int, 1000>> ns 2231.77 2274.63 639.734 654.431 3.489 3.476
119 GetArray<std::deque<int>> ns 8132.06 8288.3 1161.87 1175.75 6.999 7.049
120 GetArray<std::set<int>> ns 58400.5 60017.4 41782.2 42504.9 1.398 1.412
121 GetArray<std::vector<int>> ns 6658.53 6785.73 666.403 681.915 9.992 9.951
122 GetMap/citm_catalog ns 3.41376e+06 3.60313e+06 2.3993e+06 2.48546e+06 1.423 1.450
123 GetVectorDouble/floats ns 6.68224e+06 6.83612e+06 642457 656162 10.401 10.418
124 GetVectorInt/signed_ints ns 8.0387e+06 8.22365e+06 3.34843e+06 3.46495e+06 2.401 2.373
125 Iterate/canada ns 868241 897083 320718 328035 2.707 2.735
126 Iterate/citm_catalog ns 298022 305421 167702 171245 1.777 1.784
127 Iterate/twitter ns 87014.5 89996.6 62127.2 61975.8 1.401 1.452
128 JsonPointerAt/citm_catalog ns 1.82891e+06 1.89898e+06 1.14298e+06 1.17751e+06 1.600 1.613
129 JsonPointerAt/twitter ns 787985 817946 594251 611519 1.326 1.338
130 JsonPointerContains/citm_catalog ns 2.71277e+06 2.8177e+06 1.23364e+06 1.26796e+06 2.199 2.222
131 JsonPointerContains/twitter ns 1.29352e+06 1.33508e+06 608656 628630 2.125 2.124
132 JsonPointerParse/citm_catalog ns 5.67308e+06 5.81355e+06 2.17151e+06 2.24831e+06 2.613 2.586
133 JsonPointerParse/twitter ns 2.41421e+06 2.47971e+06 1.00071e+06 1.02159e+06 2.413 2.427
134 JsonPointerToString/citm_catalog ns 6.62468e+06 6.7858e+06 1.87578e+06 1.93924e+06 3.532 3.499
135 JsonPointerToString/twitter ns 2.1792e+06 2.23096e+06 806356 834416 2.703 2.674
136 ParseFILE/canada ns 5.23333e+07 5.41907e+07 1.38865e+07 1.46942e+07 3.769 3.688
137 ParseFILE/citm_catalog ns 3.4642e+07 3.59542e+07 7.34915e+06 7.58092e+06 4.714 4.743
138 ParseFILE/twitter ns 1.35777e+07 1.4087e+07 3.3065e+06 3.44991e+06 4.106 4.083
139 ParseFile/canada ns 1.74258e+07 1.82792e+07 6.136e+06 6.46954e+06 2.840 2.825
140 ParseFile/citm_catalog ns 7.66744e+06 8.12979e+06 2.424e+06 2.52336e+06 3.163 3.222
141 ParseFile/floats ns 1.275e+08 1.31229e+08 4.72331e+07 4.81407e+07 2.699 2.726
142 ParseFile/jeopardy ns 3.27525e+08 3.38017e+08 1.54786e+08 1.62098e+08 2.116 2.085
143 ParseFile/signed_ints ns 1.2488e+08 1.28749e+08 4.54429e+07 4.62304e+07 2.748 2.785
144 ParseFile/small_signed_ints ns 6.29991e+07 6.47398e+07 3.26251e+07 3.34103e+07 1.931 1.938
145 ParseFile/twitter ns 3.32202e+06 3.43041e+06 1.35873e+06 1.37495e+06 2.445 2.495
146 ParseFile/unsigned_ints ns 1.20673e+08 1.24001e+08 4.65984e+07 4.74365e+07 2.590 2.614
147 ParseIndented/canada / 4 ns 3.39369e+07 3.4977e+07 5.15262e+06 5.37149e+06 6.586 6.512
148 ParseIndented/citm_catalog / 4 ns 7.23096e+06 7.52423e+06 1.78365e+06 1.81376e+06 4.054 4.148
149 ParseIndented/jeopardy / 4 ns 3.35238e+08 3.45046e+08 1.31409e+08 1.33383e+08 2.551 2.587
150 ParseIndented/twitter / 4 ns 3.59342e+06 3.72283e+06 1.1224e+06 1.12645e+06 3.202 3.305
151 ParseStreamValues/ndjson ns 7.01242e+06 7.15876e+06 3.71441e+06 3.76965e+06 1.888 1.899
152 ParseStreamValues/numbers ns 1.89341e+06 1.92619e+06 380502 383138 4.976 5.027
153 ParseString/canada ns 1.50855e+07 1.55213e+07 4.42155e+06 4.62776e+06 3.412 3.354
154 ParseString/citm_catalog ns 7.3013e+06 7.56417e+06 1.77547e+06 1.77967e+06 4.112 4.250
155 ParseString/floats ns 1.18738e+08 1.21779e+08 2.7604e+07 2.83035e+07 4.301 4.303
156 ParseString/jeopardy ns 3.03339e+08 3.16817e+08 1.28463e+08 1.30897e+08 2.361 2.420
157 ParseString/signed_ints ns 1.20073e+08 1.22931e+08 3.12419e+07 3.19852e+07 3.843
158 ParseString/small_signed_ints ns 6.0595e+07 6.2685e+07 2.40917e+07 2.49764e+07 2.515 2.510
159 ParseString/twitter ns 3.17558e+06 3.2961e+06 1.05133e+06 1.04867e+06 3.021 3.143
160 ParseString/unsigned_ints ns 1.18614e+08 1.21229e+08 3.21863e+07 3.29241e+07 3.685 3.682
161 ParseStringOrdered/canada ns 1.50775e+07 1.5388e+07 4.37102e+06 4.5275e+06 3.449 3.399
162 ParseStringOrdered/citm_catalog ns 1.08507e+07 1.15204e+07 1.61676e+06 1.68115e+06 6.711 6.853
163 ParseStringOrdered/jeopardy ns 3.60997e+08 3.73533e+08 1.09757e+08 1.13397e+08 3.289 3.294
164 ParseStringOrdered/twitter ns 4.35833e+06 4.5979e+06 906250 948606 4.809 4.847
165 Patch/canada ns 9.97854e+06 1.03684e+07 3.36623e+06 3.47719e+06 2.964 2.982
166 Patch/citm_catalog ns 2.52632e+06 2.74522e+06 1.61385e+06 1.74191e+06 1.565 1.576
167 Patch/twitter ns 1.45777e+06 1.57928e+06 850736 888657 1.714 1.777
168 SaxParse/canada ns 1.27867e+07 1.31023e+07 3.22211e+06 3.26697e+06 3.968 4.011
169 SaxParse/citm_catalog ns 6.40874e+06 6.54642e+06 983039 966806 6.519 6.771
170 SaxParse/twitter ns 2.47756e+06 2.53102e+06 477699 483052 5.186 5.240
171 ToCbor/canada ns 1.37097e+06 1.41339e+06 545183 556912 2.515 2.538
172 ToCbor/citm_catalog ns 1.02285e+06 1.04743e+06 256578 259178 3.986 4.041
173 ToCbor/floats ns 8.91388e+06 9.04677e+06 1.89274e+06 1.90094e+06 4.710 4.759
174 ToCbor/jeopardy ns 7.19583e+07 7.39339e+07 2.13225e+07 2.20678e+07 3.375 3.350
175 ToCbor/signed_ints ns 1.13095e+07 1.15333e+07 2.75682e+06 2.827e+06 4.102 4.080
176 ToCbor/small_signed_ints ns 1.0181e+07 1.0394e+07 2.39796e+06 2.47974e+06 4.246 4.192
177 ToCbor/twitter ns 633945 658566 141532 143397 4.479 4.593
178 ToCbor/unsigned_ints ns 7.99728e+06 8.17966e+06 2.79118e+06 2.81588e+06 2.865 2.905
179 ToJsonStrings/copy ns 5.82015e+06 6.12e+06 5.54332e+06 5.65303e+06 1.050 1.083
180 ToJsonStrings/move ns 5.81645e+06 6.13061e+06 3.0241e+06 3.13303e+06 1.923 1.957
181 Unflatten/canada ns 4.1091e+07 4.25276e+07 1.08224e+07 1.10995e+07 3.797 3.831
182 Unflatten/citm_catalog ns 9.69933e+06 1.01866e+07 3.46205e+06 3.62185e+06 2.802 2.813
183 Unflatten/twitter ns 4.51774e+06 4.74536e+06 2.10929e+06 2.21103e+06 2.142 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
1 index commit date pr subject parse_twitter parse_citm parse_canada parse_citm_compact parse_twitter_ifstream accept_twitter dump_twitter dump_citm dump_canada dump4_citm from_cbor_twitter to_cbor_twitter copy_destroy_citm equal_citm view_parse_twitter view_parse_citm view_parse_canada
315 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
316 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
317 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
318 316 candidate 091c10d4a5 2026-10-28 5936 develop + open pull requests Fix self-aliasing in json_pointer::operator/= and patch_inplace (#5936) 1372.590 1389.195 2427.358 2462.409 6109.560 6052.125 2302.737 2321.091 1710.146 1722.944 479.478 473.064 211.001 214.421 288.697 290.952 2298.316 2279.997 416.541 416.589 1311.621 1315.370 139.627 138.531 1439.814 1437.996 1711.536 1683.844 177.113 176.596 365.393 363.105 979.186 952.473
319 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
320 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
321 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
322 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
323 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
324 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
325 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
326 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
327 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
328 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
329 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
330 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
331 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
332 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
333 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
334 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
335 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
336 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
337 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
338 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
339 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
340 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
341 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
342 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
343 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
344 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
345 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
346 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
347 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
348 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
349 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
350 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
351 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
352 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
353 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
354 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
+56 -44
View File
@@ -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)))