docs: measure the 3.13.0 post against develop with all open pull requests

The baseline is now develop 9c349b1d7c with every open non-draft pull
request merged, including #5968, #5970, #5971, #5975, #5976, #5978,
#5979, #5980, #5981 and #5982. The suite was rerun on 11-01 with every
step repeated when the load rose above 5 while it ran; the comparison
with other libraries and the held-out files were rerun on 10-31.

- suite: 3.0x geometric mean (median 2.9x); Appendix B, the overview
  and the distribution regenerated
- timeline endpoint, Appendix D and the cliffs figure updated
- the held-out figure compares json_document with the fastest other
  library
- new paragraphs for the pull requests listed above

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
Niels Lohmann committed 2026-11-01 13:48:18 +01:00
1 parent 0c74ad29ba
commit c321ee0d2a
25 files changed
+12641 -12593

No files matched your search

File diff suppressed because it is too large. Load diff
+29 -29
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 []: 4102 ms to 9.98 ms; diff() 20k objects vs half: 119 ms to 3.85 ms; parse() callback, 32k objects: 1334 ms to 11.5 ms; operator&lt; nested 24 deep: 62.6 ms to 0.002 ms; operator&lt; citm, 10x: 274 ms to 3.81 ms; flatten() citm, ordered_json: 253 ms to 1.37 ms; to_bson() 200 deep, 100x: 19.5 ms to 0.566 ms; push_back() 100k, diagnostics: 1514 ms to 4.98 ms; at(i) 10k, diagnostics: 43.2 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 []: 4101 ms to 10.1 ms; diff() 20k objects vs half: 119 ms to 3.83 ms; parse() callback, 32k objects: 1348 ms to 11.5 ms; operator&lt; nested 24 deep: 63.6 ms to 0.002 ms; operator&lt; citm, 10x: 273 ms to 3.8 ms; flatten() citm, ordered_json: 253 ms to 1.37 ms; to_bson() 200 deep, 100x: 19.5 ms to 0.357 ms; push_back() 100k, diagnostics: 1525 ms to 5.14 ms; at(i) 10k, diagnostics: 43.9 ms to 0.08 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.479" y1="48" x2="448.387" y2="48" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="566.479" cy="48" r="5"><title>diff() 64k numbers vs [], 3.12.0: 4102 ms</title></circle>
<circle class="nj-charts-json-dot" cx="441.387" cy="48" r="5"><title>diff() 64k numbers vs [], 3.13.0: 9.98 ms</title></circle>
<text class="nj-charts-factor" x="503.933" y="41">411&#215;</text>
<line class="nj-charts-axis" x1="560.474" y1="48" x2="448.635" y2="48" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="566.474" cy="48" r="5"><title>diff() 64k numbers vs [], 3.12.0: 4101 ms</title></circle>
<circle class="nj-charts-json-dot" cx="441.635" cy="48" r="5"><title>diff() 64k numbers vs [], 3.13.0: 10.1 ms</title></circle>
<text class="nj-charts-factor" x="504.055" y="41">406&#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="428.59" y2="82" marker-end="url(#nj-blog-cliffs-head)"/>
<line class="nj-charts-axis" x1="486.901" y1="82" x2="428.482" 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="421.59" cy="82" r="5"><title>diff() 20k objects vs half, 3.13.0: 3.85 ms</title></circle>
<text class="nj-charts-factor" x="457.246" y="75">31&#215;</text>
<circle class="nj-charts-json-dot" cx="421.482" cy="82" r="5"><title>diff() 20k objects vs half, 3.13.0: 3.83 ms</title></circle>
<text class="nj-charts-factor" x="457.191" y="75">31&#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.132" y1="116" x2="451.333" y2="116" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="543.132" cy="116" r="5"><title>parse() callback, 32k objects, 3.12.0: 1334 ms</title></circle>
<line class="nj-charts-axis" x1="537.349" y1="116" x2="451.333" y2="116" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="543.349" cy="116" r="5"><title>parse() callback, 32k objects, 3.12.0: 1348 ms</title></circle>
<circle class="nj-charts-json-dot" cx="444.333" cy="116" r="5"><title>parse() callback, 32k objects, 3.13.0: 11.5 ms</title></circle>
<text class="nj-charts-factor" x="493.733" y="109">116&#215;</text>
<text class="nj-charts-factor" x="493.841" y="109">117&#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="473.55" y1="150" x2="271.406" y2="150" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="479.55" cy="150" r="5"><title>operator&lt; nested 24 deep, 3.12.0: 62.6 ms</title></circle>
<line class="nj-charts-axis" x1="473.88" y1="150" x2="271.406" y2="150" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="479.88" cy="150" r="5"><title>operator&lt; nested 24 deep, 3.12.0: 63.6 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="371.978" y="143">31300&#215;</text>
<text class="nj-charts-factor" x="372.143" y="143">31800&#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.235" y1="184" x2="428.373" y2="184" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="510.235" cy="184" r="5"><title>operator&lt; citm, 10x, 3.12.0: 274 ms</title></circle>
<circle class="nj-charts-json-dot" cx="421.373" cy="184" r="5"><title>operator&lt; citm, 10x, 3.13.0: 3.81 ms</title></circle>
<text class="nj-charts-factor" x="465.804" y="177">72&#215;</text>
<line class="nj-charts-axis" x1="504.159" y1="184" x2="428.318" y2="184" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="510.159" cy="184" r="5"><title>operator&lt; citm, 10x, 3.12.0: 273 ms</title></circle>
<circle class="nj-charts-json-dot" cx="421.318" cy="184" r="5"><title>operator&lt; citm, 10x, 3.13.0: 3.8 ms</title></circle>
<text class="nj-charts-factor" x="465.739" 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.578" y1="218" x2="407.114" y2="218" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="508.578" cy="218" r="5"><title>flatten() citm, ordered_json, 3.12.0: 253 ms</title></circle>
<circle class="nj-charts-json-dot" cx="400.114" cy="218" r="5"><title>flatten() citm, ordered_json, 3.13.0: 1.37 ms</title></circle>
<text class="nj-charts-factor" x="454.346" y="211">185&#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.309" y1="252" x2="388.742" y2="252" marker-end="url(#nj-blog-cliffs-head)"/>
<line class="nj-charts-axis" x1="449.309" y1="252" x2="379.163" y2="252" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="455.309" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.12.0: 19.5 ms</title></circle>
<circle class="nj-charts-json-dot" cx="381.742" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.13.0: 0.566 ms</title></circle>
<text class="nj-charts-factor" x="418.525" y="245">34&#215;</text>
<circle class="nj-charts-json-dot" cx="372.163" cy="252" r="5"><title>to_bson() 200 deep, 100x, 3.13.0: 0.357 ms</title></circle>
<text class="nj-charts-factor" x="413.736" y="245">55&#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="539.763" y1="286" x2="433.939" y2="286" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="545.763" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.12.0: 1514 ms</title></circle>
<circle class="nj-charts-json-dot" cx="426.939" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.13.0: 4.98 ms</title></circle>
<text class="nj-charts-factor" x="486.351" y="279">304&#215;</text>
<line class="nj-charts-axis" x1="539.914" y1="286" x2="434.596" y2="286" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="545.914" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.12.0: 1525 ms</title></circle>
<circle class="nj-charts-json-dot" cx="427.596" cy="286" r="5"><title>push_back() 100k, diagnostics, 3.13.0: 5.14 ms</title></circle>
<text class="nj-charts-factor" x="486.755" y="279">297&#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="465.841" y1="320" x2="348.335" y2="320" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="471.841" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.12.0: 43.2 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.588" y="313">533&#215;</text>
<line class="nj-charts-axis" x1="466.175" y1="320" x2="348.076" y2="320" marker-end="url(#nj-blog-cliffs-head)"/>
<circle class="nj-charts-ojson-dot" cx="472.175" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.12.0: 43.9 ms</title></circle>
<circle class="nj-charts-json-dot" cx="341.076" cy="320" r="5"><title>at(i) 10k, diagnostics, 3.13.0: 0.08 ms</title></circle>
<text class="nj-charts-factor" x="406.626" y="313">549&#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: 1; 1 to 1.5x: 22; 1.5 to 2x: 17; 2 to 3x: 58; 3 to 5x: 55; 5 to 10x: 25; 10x or more: 4. Median 2.9x, geometric mean 2.9x.</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: 15; 2 to 3x: 57; 3 to 5x: 57; 5 to 10x: 25; 10x or more: 5. 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"/>
@@ -15,20 +15,20 @@
<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="152.3" width="54.9" height="43.7" rx="3"><title>1.5 to 2&#215;: 17</title></rect>
<text class="nj-charts-val" x="229.1" y="147.3" text-anchor="middle">17</text>
<rect class="nj-charts-c1" x="201.7" y="157.4" width="54.9" height="38.6" rx="3"><title>1.5 to 2&#215;: 15</title></rect>
<text class="nj-charts-val" x="229.1" y="152.4" text-anchor="middle">15</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="49.4" width="54.9" height="146.6" rx="3"><title>2 to 3&#215;: 57</title></rect>
<text class="nj-charts-val" x="300.0" y="44.4" text-anchor="middle">57</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="54.6" width="54.9" height="141.4" rx="3"><title>3 to 5&#215;: 55</title></rect>
<text class="nj-charts-val" x="370.9" y="49.6" text-anchor="middle">55</text>
<rect class="nj-charts-c1" x="343.4" y="49.4" width="54.9" height="146.6" rx="3"><title>3 to 5&#215;: 57</title></rect>
<text class="nj-charts-val" x="370.9" y="44.4" text-anchor="middle">57</text>
<text class="nj-charts-tick" x="370.9" y="212.0">3 to 5&#215;</text>
<rect class="nj-charts-c1" x="414.3" y="131.7" width="54.9" height="64.3" rx="3"><title>5 to 10&#215;: 25</title></rect>
<text class="nj-charts-val" x="441.7" y="126.7" text-anchor="middle">25</text>
<text class="nj-charts-tick" x="441.7" y="212.0">5 to 10&#215;</text>
<rect class="nj-charts-c1" x="485.1" y="185.7" width="54.9" height="10.3" rx="3"><title>10&#215; or more: 4</title></rect>
<text class="nj-charts-val" x="512.6" y="180.7" text-anchor="middle">4</text>
<rect class="nj-charts-c1" x="485.1" y="183.1" width="54.9" height="12.9" rx="3"><title>10&#215; or more: 5</title></rect>
<text class="nj-charts-val" x="512.6" y="178.1" text-anchor="middle">5</text>
<text class="nj-charts-tick" x="512.6" y="212.0">10&#215; or more</text>
<line class="nj-charts-axis" x1="52" y1="196" x2="548" y2="196"/>
<text class="nj-charts-tick" x="300" y="240">speedup over 3.12.0, more is better</text>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

+97 -93
View File
@@ -1,98 +1,102 @@
<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 library per file</title>
<desc id="nj-blog-heldout-d">Dot plot per file, less is better; 1.0 means json_document is the fastest fully validating library. github_events: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); mesh: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); semanticscholar-corpus: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); twitter_api_compact_response: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); twitter_api_response: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); update-center: Mac 1.00, x86-64 1.00 (nlohmann/json json_document); apache_builds: Mac 1.15, x86-64 1.00 (nlohmann/json json_document); twitter_timeline: Mac 1.04, x86-64 1.02 (yyjson); twitterescaped: Mac 1.10, x86-64 1.08 (simdjson); gsoc-2018: Mac 1.00, x86-64 1.10 (Boost.J&#8203;SON); google_maps_api_compact_response: Mac 1.03, x86-64 1.12 (yyjson); tree-pretty: Mac 1.01, x86-64 1.14 (simdjson); repeat: Mac 1.00, x86-64 1.14 (simdjson); random: Mac 1.00, x86-64 1.17 (simdjson); instruments: Mac 1.00, x86-64 1.18 (simdjson); google_maps_api_response: Mac 1.01, x86-64 1.19 (simdjson); marine_ik: Mac 1.00, x86-64 1.23 (Boost.J&#8203;SON); numbers: Mac 1.00, x86-64 1.32 (Boost.J&#8203;SON); mesh.pretty: Mac 1.00, x86-64 1.49 (Boost.J&#8203;SON).</desc>
<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>
<line class="nj-charts-grid" x1="262" y1="50" x2="262" y2="438"/>
<text class="nj-charts-tick" x="262" y="454">1.0&#215;</text>
<line class="nj-charts-grid" x1="302.727" y1="50" x2="302.727" y2="438"/>
<text class="nj-charts-tick" x="302.727" y="454">1.1&#215;</text>
<line class="nj-charts-grid" x1="343.455" y1="50" x2="343.455" y2="438"/>
<text class="nj-charts-tick" x="343.455" y="454">1.2&#215;</text>
<line class="nj-charts-grid" x1="384.182" y1="50" x2="384.182" y2="438"/>
<text class="nj-charts-tick" x="384.182" y="454">1.3&#215;</text>
<line class="nj-charts-grid" x1="424.909" y1="50" x2="424.909" y2="438"/>
<text class="nj-charts-tick" x="424.909" y="454">1.4&#215;</text>
<line class="nj-charts-grid" x1="465.636" y1="50" x2="465.636" y2="438"/>
<text class="nj-charts-tick" x="465.636" y="454">1.5&#215;</text>
<text class="nj-charts-tick" x="374" y="472">json&#95;document&#8217;s time / the fastest library&#8217;s, less is better</text>
<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"/>
<text class="nj-charts-tick" x="291.867" y="454">0.5&#215;</text>
<line class="nj-charts-grid" x1="321.733" y1="50" x2="321.733" y2="438"/>
<text class="nj-charts-tick" x="321.733" y="454">0.6&#215;</text>
<line class="nj-charts-grid" x1="351.6" y1="50" x2="351.6" y2="438"/>
<text class="nj-charts-tick" x="351.6" y="454">0.7&#215;</text>
<line class="nj-charts-grid" x1="381.467" y1="50" x2="381.467" y2="438"/>
<text class="nj-charts-tick" x="381.467" y="454">0.8&#215;</text>
<line class="nj-charts-grid" x1="411.333" y1="50" x2="411.333" y2="438"/>
<text class="nj-charts-tick" x="411.333" y="454">0.9&#215;</text>
<line class="nj-charts-grid" x1="441.2" y1="50" x2="441.2" y2="438"/>
<text class="nj-charts-tick" x="441.2" y="454">1.0&#215;</text>
<line class="nj-charts-grid" x1="471.067" y1="50" x2="471.067" y2="438"/>
<text class="nj-charts-tick" x="471.067" y="454">1.1&#215;</text>
<text class="nj-charts-tick" x="374" y="472">json&#95;document&#8217;s time / the fastest other library&#8217;s, less is better</text>
<circle class="nj-charts-json-dot" cx="13" cy="14" r="5"/><text class="nj-charts-leg" x="23" y="18.5">Apple M1 Max</text>
<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">fastest on x86-64</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="68" text-anchor="end">github&#95;events</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="60.5" r="4.5"><title>github&#95;events, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="67.5" r="4.5"><title>github&#95;events, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="68">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="88" text-anchor="end">mesh</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="80.5" r="4.5"><title>mesh, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="87.5" r="4.5"><title>mesh, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="88">json&#95;document</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="262.0" cy="100.5" r="4.5"><title>semanticscholar-corpus, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="107.5" r="4.5"><title>semanticscholar-corpus, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="108">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="128" text-anchor="end">twitter&#95;api&#95;compact&#95;response</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="120.5" r="4.5"><title>twitter&#95;api&#95;compact&#95;response, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="127.5" r="4.5"><title>twitter&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="128">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="148" text-anchor="end">twitter&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="140.5" r="4.5"><title>twitter&#95;api&#95;response, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="147.5" r="4.5"><title>twitter&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="148">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="168" text-anchor="end">update-center</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="160.5" r="4.5"><title>update-center, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="167.5" r="4.5"><title>update-center, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="168">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="188" text-anchor="end">apache&#95;builds</text>
<circle class="nj-charts-json-dot" cx="323.8" cy="180.5" r="4.5"><title>apache&#95;builds, Apple M1 Max: 1.15&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="262.0" cy="187.5" r="4.5"><title>apache&#95;builds, x86-64, G&#8203;CC 16.2: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="188">json&#95;document</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="208" text-anchor="end">twitter&#95;timeline</text>
<circle class="nj-charts-json-dot" cx="277.6" cy="200.5" r="4.5"><title>twitter&#95;timeline, Apple M1 Max: 1.04&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="270.8" cy="207.5" r="4.5"><title>twitter&#95;timeline, x86-64, G&#8203;CC 16.2: 1.02&#215; the time of yyjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="208">yyjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="228" text-anchor="end">twitterescaped</text>
<circle class="nj-charts-json-dot" cx="303.1" cy="220.5" r="4.5"><title>twitterescaped, Apple M1 Max: 1.10&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="293.5" cy="227.5" r="4.5"><title>twitterescaped, x86-64, G&#8203;CC 16.2: 1.08&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="228">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="248" text-anchor="end">gsoc-2018</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="240.5" r="4.5"><title>gsoc-2018, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="303.9" cy="247.5" r="4.5"><title>gsoc-2018, x86-64, G&#8203;CC 16.2: 1.10&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="248">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="268" text-anchor="end">google&#95;maps&#95;api&#95;compact&#95;response</text>
<circle class="nj-charts-json-dot" cx="274.9" cy="260.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, Apple M1 Max: 1.03&#215; the time of yyjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="310.6" cy="267.5" r="4.5"><title>google&#95;maps&#95;api&#95;compact&#95;response, x86-64, G&#8203;CC 16.2: 1.12&#215; the time of yyjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="268">yyjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="288" text-anchor="end">tree-pretty</text>
<circle class="nj-charts-json-dot" cx="265.6" cy="280.5" r="4.5"><title>tree-pretty, Apple M1 Max: 1.01&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="317.7" cy="287.5" r="4.5"><title>tree-pretty, x86-64, G&#8203;CC 16.2: 1.14&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="288">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="308" text-anchor="end">repeat</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="300.5" r="4.5"><title>repeat, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="319.3" cy="307.5" r="4.5"><title>repeat, x86-64, G&#8203;CC 16.2: 1.14&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="308">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="328" text-anchor="end">random</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="320.5" r="4.5"><title>random, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="333.3" cy="327.5" r="4.5"><title>random, x86-64, G&#8203;CC 16.2: 1.17&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="328">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="348" text-anchor="end">instruments</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="340.5" r="4.5"><title>instruments, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="334.2" cy="347.5" r="4.5"><title>instruments, x86-64, G&#8203;CC 16.2: 1.18&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="348">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="368" text-anchor="end">google&#95;maps&#95;api&#95;response</text>
<circle class="nj-charts-json-dot" cx="266.3" cy="360.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, Apple M1 Max: 1.01&#215; the time of simdjson</title></circle>
<circle class="nj-charts-ojson-dot" cx="341.1" cy="367.5" r="4.5"><title>google&#95;maps&#95;api&#95;response, x86-64, G&#8203;CC 16.2: 1.19&#215; the time of simdjson</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="368">simdjson</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="388" text-anchor="end">marine&#95;ik</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="380.5" r="4.5"><title>marine&#95;ik, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="356.9" cy="387.5" r="4.5"><title>marine&#95;ik, x86-64, G&#8203;CC 16.2: 1.23&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="388">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="408" text-anchor="end">numbers</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="400.5" r="4.5"><title>numbers, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="393.4" cy="407.5" r="4.5"><title>numbers, x86-64, G&#8203;CC 16.2: 1.32&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="408">Boost.J&#8203;SON</text>
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="428" text-anchor="end">mesh.pretty</text>
<circle class="nj-charts-json-dot" cx="262.0" cy="420.5" r="4.5"><title>mesh.pretty, Apple M1 Max: 1.00&#215; the time of the fastest (it is the fastest)</title></circle>
<circle class="nj-charts-ojson-dot" cx="461.4" cy="427.5" r="4.5"><title>mesh.pretty, x86-64, G&#8203;CC 16.2: 1.49&#215; the time of Boost.J&#8203;SON</title></circle>
<text class="nj-charts-tick nj-charts-tick--l nj-charts-best" x="500" y="428">Boost.J&#8203;SON</text>
<line class="nj-charts-ref" x1="262" y1="50" x2="262" y2="438"/>
<text class="nj-charts-tick" x="262" y="44">fastest</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>
<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-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>
<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-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-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>
<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-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="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>
<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-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-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-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>
<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>
<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-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-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>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

+27 -27
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.1x; citm_catalog.json 4.2x; canada.json 3.4x; canada.json, indented 6.7x; citm, ordered_json 6.8x; twitter, std::ifstream 2.4x; citm, FILE* 4.7x; citm, accept() 6.9x; dump() twitter 6.7x; dump() canada 2.9x; dump(4) citm 4.7x; to_cbor() twitter 4.5x; twitter, memory 3.2x; twitter, FILE* 6.4x; diff() canada 10x; iterate canada 2.8x; copy + destroy citm 1.11x; == citm 1.07x.</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.5x; canada.json, indented 6.6x; citm, ordered_json 6.7x; twitter, std::ifstream 2.4x; citm, FILE* 4.7x; citm, accept() 7.6x; 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.5x; diff() canada 10x; iterate canada 2.7x; copy + destroy citm 1.11x; == citm 1.07x.</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,53 +28,53 @@
<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 H278.4 Q282.4 30 282.4 34 V41 Q282.4 45 278.4 45 H190 Z"><title>twitter.json: 3.1&#215;</title></path>
<text class="nj-charts-val" x="287.4" y="42">3.1&#215;</text>
<path class="nj-charts-c1" d="M190 30 H279 Q283 30 283 34 V41 Q283 45 279 45 H190 Z"><title>twitter.json: 3.1&#215;</title></path>
<text class="nj-charts-val" x="288" 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 H311.7 Q315.7 54 315.7 58 V65 Q315.7 69 311.7 69 H190 Z"><title>citm_catalog.json: 4.2&#215;</title></path>
<text class="nj-charts-val" x="320.7" 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 H287.4 Q291.4 78 291.4 82 V89 Q291.4 93 287.4 93 H190 Z"><title>canada.json: 3.4&#215;</title></path>
<text class="nj-charts-val" x="296.4" y="90">3.4&#215;</text>
<path class="nj-charts-c1" d="M190 78 H289.5 Q293.5 78 293.5 82 V89 Q293.5 93 289.5 93 H190 Z"><title>canada.json: 3.5&#215;</title></path>
<text class="nj-charts-val" x="298.5" y="90">3.5&#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 H386.1 Q390.1 102 390.1 106 V113 Q390.1 117 386.1 117 H190 Z"><title>canada.json, indented: 6.7&#215;</title></path>
<text class="nj-charts-val" x="395.1" y="114">6.7&#215;</text>
<path class="nj-charts-c1" d="M190 102 H383.1 Q387.1 102 387.1 106 V113 Q387.1 117 383.1 117 H190 Z"><title>canada.json, indented: 6.6&#215;</title></path>
<text class="nj-charts-val" x="392.1" y="114">6.6&#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 H388.8 Q392.8 126 392.8 130 V137 Q392.8 141 388.8 141 H190 Z"><title>citm, ordered_json: 6.8&#215;</title></path>
<text class="nj-charts-val" x="397.8" y="138">6.8&#215;</text>
<path class="nj-charts-c1" d="M190 126 H386.1 Q390.1 126 390.1 130 V137 Q390.1 141 386.1 141 H190 Z"><title>citm, ordered_json: 6.7&#215;</title></path>
<text class="nj-charts-val" x="395.1" y="138">6.7&#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>
<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 H326.7 Q330.7 174 330.7 178 V185 Q330.7 189 326.7 189 H190 Z"><title>citm, FILE*: 4.7&#215;</title></path>
<text class="nj-charts-val" x="335.7" y="186">4.7&#215;</text>
<path class="nj-charts-c1" d="M190 174 H327.6 Q331.6 174 331.6 178 V185 Q331.6 189 327.6 189 H190 Z"><title>citm, FILE*: 4.7&#215;</title></path>
<text class="nj-charts-val" x="336.6" 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 H393.6 Q397.6 198 397.6 202 V209 Q397.6 213 393.6 213 H190 Z"><title>citm, accept(): 6.9&#215;</title></path>
<text class="nj-charts-val" x="402.6" y="210">6.9&#215;</text>
<path class="nj-charts-c1" d="M190 198 H414.9 Q418.9 198 418.9 202 V209 Q418.9 213 414.9 213 H190 Z"><title>citm, accept(): 7.6&#215;</title></path>
<text class="nj-charts-val" x="423.9" y="210">7.6&#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 H387.9 Q391.9 254 391.9 258 V265 Q391.9 269 387.9 269 H190 Z"><title>dump() twitter: 6.7&#215;</title></path>
<text class="nj-charts-val" x="396.9" y="266">6.7&#215;</text>
<path class="nj-charts-c1" d="M190 254 H386.4 Q390.4 254 390.4 258 V265 Q390.4 269 386.4 269 H190 Z"><title>dump() twitter: 6.7&#215;</title></path>
<text class="nj-charts-val" x="395.4" 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.6 Q277.6 278 277.6 282 V289 Q277.6 293 273.6 293 H190 Z"><title>dump() canada: 2.9&#215;</title></path>
<text class="nj-charts-val" x="282.6" y="290">2.9&#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 H326.1 Q330.1 302 330.1 306 V313 Q330.1 317 326.1 317 H190 Z"><title>dump(4) citm: 4.7&#215;</title></path>
<text class="nj-charts-val" x="335.1" y="314">4.7&#215;</text>
<path class="nj-charts-c1" d="M190 302 H323.7 Q327.7 302 327.7 306 V313 Q327.7 317 323.7 317 H190 Z"><title>dump(4) citm: 4.6&#215;</title></path>
<text class="nj-charts-val" x="332.7" y="314">4.6&#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 H319.5 Q323.5 326 323.5 330 V337 Q323.5 341 319.5 341 H190 Z"><title>to_cbor() twitter: 4.5&#215;</title></path>
<text class="nj-charts-val" x="328.5" y="338">4.5&#215;</text>
<path class="nj-charts-c1" d="M190 326 H320.1 Q324.1 326 324.1 330 V337 Q324.1 341 320.1 341 H190 Z"><title>to_cbor() twitter: 4.5&#215;</title></path>
<text class="nj-charts-val" x="329.1" y="338">4.5&#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 H282.3 Q286.3 382 286.3 386 V393 Q286.3 397 282.3 397 H190 Z"><title>twitter, memory: 3.2&#215;</title></path>
<text class="nj-charts-val" x="291.3" y="394">3.2&#215;</text>
<path class="nj-charts-c1" d="M190 382 H282.9 Q286.9 382 286.9 386 V393 Q286.9 397 282.9 397 H190 Z"><title>twitter, memory: 3.2&#215;</title></path>
<text class="nj-charts-val" x="291.9" y="394">3.2&#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 H377.4 Q381.4 406 381.4 410 V417 Q381.4 421 377.4 421 H190 Z"><title>twitter, FILE*: 6.4&#215;</title></path>
<text class="nj-charts-val" x="386.4" y="418">6.4&#215;</text>
<path class="nj-charts-c1" d="M190 406 H381 Q385 406 385 410 V417 Q385 421 381 421 H190 Z"><title>twitter, FILE*: 6.5&#215;</title></path>
<text class="nj-charts-val" x="390" y="418">6.5&#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 H500.4 Q504.4 462 504.4 466 V473 Q504.4 477 500.4 477 H190 Z"><title>diff() canada: 10&#215;</title></path>
<text class="nj-charts-val" x="509.4" y="474">10&#215;</text>
<path class="nj-charts-c1" d="M190 462 H498.9 Q502.9 462 502.9 466 V473 Q502.9 477 498.9 477 H190 Z"><title>diff() canada: 10&#215;</title></path>
<text class="nj-charts-val" x="507.9" 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 H270.6 Q274.6 486 274.6 490 V497 Q274.6 501 270.6 501 H190 Z"><title>iterate canada: 2.8&#215;</title></path>
<text class="nj-charts-val" x="279.6" y="498">2.8&#215;</text>
<path class="nj-charts-c1" d="M190 486 H267 Q271 486 271 490 V497 Q271 501 267 501 H190 Z"><title>iterate canada: 2.7&#215;</title></path>
<text class="nj-charts-val" x="276" 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>

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.1 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 4.9x. 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 317 commits, ending at 5.0x. 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>
@@ -16,7 +16,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -16,7 +16,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 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.9x. 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 317 commits, ending at 6.7x. 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>
@@ -18,7 +18,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

@@ -14,7 +14,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 10 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-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 317 commits, ending at 2.9x. 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>
@@ -14,7 +14,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -16,7 +16,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -14,7 +14,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 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.1x. 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 317 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>
@@ -16,7 +16,7 @@
<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
<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"/>

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

+156 -156
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.29; yyjson sum: 1.14; yyjson select: 1.29; yyjson edit: 1.48; yyjson minify: 1.25; yyjson write: 1.25; simdjson validate: 1.36; simdjson sum: 1.18; simdjson select: 1.34 (0.75 checking less, partial); simdjson edit: n/a; simdjson minify: 2.06 (0.18 checking less, partial); simdjson write: 3.26; sonic-rs (Rust) validate: 1.77; sonic-rs (Rust) sum: 1.54; sonic-rs (Rust) select: 1.85; sonic-rs (Rust) edit: 2.11; sonic-rs (Rust) minify: 1.95; sonic-rs (Rust) write: 2.41; sonic-cpp validate: no fully validating way (2.31 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.85 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.70 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (2.04 checking less, no U&#8203;TF-8); sonic-cpp write: 1.62; simd-json (Rust) validate: 1.90; simd-json (Rust) sum: 1.63; simd-json (Rust) select: 2.40; simd-json (Rust) edit: 2.87; simd-json (Rust) minify: 3.43; simd-json (Rust) write: 3.14; Glaze validate: 1.86; Glaze sum: 3.85; Glaze select: 1.79 (0.82 checking less, partial); Glaze edit: 4.42; Glaze minify: 5.21 (1.03 checking less, partial); Glaze write: 2.24; Boost.J&#8203;SON validate: 2.34; Boost.J&#8203;SON sum: 1.98; Boost.J&#8203;SON select: 3.29; Boost.J&#8203;SON edit: 3.24; Boost.J&#8203;SON minify: 3.87; Boost.J&#8203;SON write: 3.75; serde_json (Rust) validate: 2.26 (2.05 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.60; serde_json (Rust) select: 2.42 (2.27 checking less, no U&#8203;TF-8); serde_json (Rust) edit: 5.06; serde_json (Rust) minify: 5.92; serde_json (Rust) write: 2.99; nlohmann/json json validate: 2.64; nlohmann/json json sum: 1.96; nlohmann/json json select: 6.94; nlohmann/json json edit: 3.61; nlohmann/json json minify: 4.95; nlohmann/json json write: 2.09; RapidJSON validate: 6.13 (3.96 checking less, no U&#8203;TF-8); RapidJSON sum: 4.41 (2.99 checking less, no U&#8203;TF-8); RapidJSON select: 6.00 (3.90 checking less, no U&#8203;TF-8); RapidJSON edit: 4.86 (3.82 checking less, no U&#8203;TF-8); RapidJSON minify: 4.90 (4.55 checking less, no U&#8203;TF-8); RapidJSON write: 5.86.</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; 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>
<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,94 +8,94 @@
<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: parse&#10;twitter.json: 176 µs&#10;citm_catalog.json: 360 µs&#10;canada.json: 959 µs&#10;jeopardy.json: 22,553 µ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: 170 µs&#10;citm_catalog.json: 313 µs&#10;canada.json: 881 µ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: 225 µs&#10;citm_catalog.json: 482 µs&#10;canada.json: 1,818 µs&#10;jeopardy.json: 28,721 µ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: 226 µs&#10;citm_catalog.json: 482 µs&#10;canada.json: 1,818 µs&#10;jeopardy.json: 28,732 µ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: 181 µs&#10;citm_catalog.json: 363 µs&#10;canada.json: 959 µs&#10;jeopardy.json: 24,308 µ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: 180 µs&#10;citm_catalog.json: 363 µs&#10;canada.json: 959 µs&#10;jeopardy.json: 24,367 µ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: 283 µs&#10;citm_catalog.json: 557 µs&#10;canada.json: 2,747 µs&#10;jeopardy.json: 57,355 µs">
<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>
<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: 254 µs&#10;citm_catalog.json: 492 µs&#10;canada.json: 2,578 µs&#10;jeopardy.json: 37,096 µs">
<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>
<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.6 µs&#10;citm_catalog.json: 133 µs&#10;canada.json: 1,617 µs&#10;jeopardy.json: 14,444 µs">
<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>
<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.29× the time of the fastest library (fully validating)&#10;twitter.json: 178 µs · read&#10;citm_catalog.json: 471 µs · read&#10;canada.json: 1,486 µs · insitu (copy)&#10;jeopardy.json: 30,278 µ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 · 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">
<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.29</text>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.41</text>
</g>
<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: 230 µs · insitu (copy)&#10;citm_catalog.json: 570 µs · read&#10;canada.json: 1,931 µs · insitu (copy)&#10;jeopardy.json: 37,534 µ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.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">
<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.14</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.12</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 · read&#10;citm_catalog.json: 476 µs · read&#10;canada.json: 1,488 µs · insitu (copy)&#10;jeopardy.json: 32,182 µ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.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">
<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>
</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: 438 µs · mut copy&#10;citm_catalog.json: 897 µs · insitu (copy) + mut copy&#10;canada.json: 3,681 µs · insitu (copy) + mut copy&#10;jeopardy.json: 83,160 µ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.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">
<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>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.50</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: 289 µs · insitu (copy) + write&#10;citm_catalog.json: 635 µs · insitu (copy) + write&#10;canada.json: 3,209 µs · read + write&#10;jeopardy.json: 50,039 µs · insitu (copy) + write&#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 · 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>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.25× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 100 µs&#10;citm_catalog.json: 164 µs&#10;canada.json: 1,714 µs&#10;jeopardy.json: 19,665 µs">
<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">
<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.25</text>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.23</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.36× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 199 µs&#10;citm_catalog.json: 448 µs&#10;canada.json: 1,885 µs&#10;jeopardy.json: 28,368 µs">
<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.36</text>
<text class="nj-charts-cell" x="270" y="138" text-anchor="middle">1.49</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: 570 µs · On-Demand&#10;canada.json: 2,372 µs · On-Demand&#10;jeopardy.json: 34,562 µs · D&#8203;OM">
<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">
<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>
</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: 197 µs&#10;citm_catalog.json: 447 µs&#10;canada.json: 1,882 µs&#10;jeopardy.json: 30,173 µs">
<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">
<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>
</g>
<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: 126 µs · On-Demand structs&#10;citm_catalog.json: 352 µs · On-Demand&#10;canada.json: 564 µs · On-Demand (key selectors)&#10;jeopardy.json: 19,313 µ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.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">
<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.75</text>
<text class="nj-charts-cell" x="476.5" y="132" text-anchor="middle">0.74</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.06× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 567 µs&#10;citm_catalog.json: 920 µs&#10;canada.json: 5,026 µs&#10;jeopardy.json: 81,800 µs">
<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">
<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.06</text>
<text class="nj-charts-cell" x="615.5" y="138" text-anchor="middle">2.03</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,682 µ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.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">
<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.26× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 342 µs&#10;citm_catalog.json: 450 µs&#10;canada.json: 3,141 µs&#10;jeopardy.json: 52,878 µs">
<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">
<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.26</text>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">3.21</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.77× 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.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">
<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.77</text>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.93</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">
<rect class="nj-heat-2" x="317" y="153" width="90" height="34" rx="3"/>
@@ -105,242 +105,242 @@
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;2.11× 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">
<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"/>
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">2.11</text>
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">2.10</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.95× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 535 µs&#10;citm_catalog.json: 1,134 µs&#10;canada.json: 4,377 µs&#10;jeopardy.json: 64,832 µs">
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.93× the time of the fastest library (fully validating)&#10;way: Value&#10;twitter.json: 535 µs&#10;citm_catalog.json: 1,134 µs&#10;canada.json: 4,377 µs&#10;jeopardy.json: 64,832 µ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.95</text>
<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.41× 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.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">
<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.41</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.37</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.31× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 379 µs&#10;citm_catalog.json: 982 µs&#10;canada.json: 2,575 µs&#10;jeopardy.json: 40,691 µ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="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="204" text-anchor="middle">2.31</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">
<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 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.85× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 428 µs&#10;citm_catalog.json: 1,083 µs&#10;canada.json: 2,956 µs&#10;jeopardy.json: 48,064 µ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.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">
<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.85</text>
<text class="nj-charts-cell" x="362" y="204" text-anchor="middle">1.84</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: 989 µs&#10;canada.json: 2,580 µs&#10;jeopardy.json: 45,320 µ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.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">
<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 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.70× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 481 µs&#10;citm_catalog.json: 1,220 µs&#10;canada.json: 5,623 µs&#10;jeopardy.json: 62,390 µ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.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">
<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.70</text>
<text class="nj-charts-cell" x="546" y="204" text-anchor="middle">1.68</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.04× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 495 µs&#10;citm_catalog.json: 1,218 µs&#10;canada.json: 5,628 µs&#10;jeopardy.json: 60,548 µ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.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">
<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.04</text>
<text class="nj-charts-cell" x="638" y="204" text-anchor="middle">2.01</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.62× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 110 µs&#10;citm_catalog.json: 232 µs&#10;canada.json: 3,038 µs&#10;jeopardy.json: 20,165 µs">
<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">
<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.62</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.54</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;1.90× 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.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">
<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.90</text>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">2.07</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.63× 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">
<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.63</text>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.87× 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.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">
<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.87</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.86</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.43× 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.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">
<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.43</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">3.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;3.14× 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.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">
<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.14</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">3.08</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;1.86× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 329 µs&#10;citm_catalog.json: 854 µs&#10;canada.json: 1,302 µs&#10;jeopardy.json: 44,972 µs">
<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">
<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">1.86</text>
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">2.03</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;3.85× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 977 µs&#10;citm_catalog.json: 2,068 µs&#10;canada.json: 6,254 µs&#10;jeopardy.json: 98,851 µs">
<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">
<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.85</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">3.84</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: 311 µs&#10;citm_catalog.json: 848 µs&#10;canada.json: 1,302 µs&#10;jeopardy.json: 45,909 µs">
<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">
<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>
</g>
<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: 253 µs&#10;canada.json: 310 µs&#10;jeopardy.json: 36,348 µ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.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)">
<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.82</text>
<text class="nj-charts-cell" x="476.5" y="276" text-anchor="middle">0.81</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.42× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,526 µs&#10;citm_catalog.json: 3,206 µs&#10;canada.json: 10,930 µs&#10;jeopardy.json: 177,272 µs">
<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">
<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.42</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">4.43</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;5.21× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 1,501 µs&#10;citm_catalog.json: 3,179 µs&#10;canada.json: 10,937 µs&#10;jeopardy.json: 168,733 µs">
<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">
<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.21</text>
<text class="nj-charts-cell" x="615.5" y="282" text-anchor="middle">5.18</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: 279 µs&#10;citm_catalog.json: 726 µs&#10;canada.json: 1,705 µs&#10;jeopardy.json: 39,268 µ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.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">
<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 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.24× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 210 µs&#10;citm_catalog.json: 469 µs&#10;canada.json: 1,696 µs&#10;jeopardy.json: 33,710 µs">
<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">
<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.24</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.19</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.34× the time of the fastest library (fully validating)&#10;way: S&#8203;AX (numbers: none)&#10;twitter.json: 530 µs&#10;citm_catalog.json: 991 µs&#10;canada.json: 1,466 µs&#10;jeopardy.json: 53,807 µs">
<rect class="nj-heat-2" x="225" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="318" text-anchor="middle">2.34</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">
<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>
</g>
<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: 533 µs&#10;citm_catalog.json: 1,005 µs&#10;canada.json: 3,029 µs&#10;jeopardy.json: 53,595 µs">
<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">
<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.98</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">1.97</text>
</g>
<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,206 µs · parse_into structs&#10;canada.json: 3,619 µs · parse&#10;jeopardy.json: 66,538 µs · parse_into structs">
<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">
<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.29</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">3.30</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;3.24× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,363 µs&#10;citm_catalog.json: 1,995 µs&#10;canada.json: 6,500 µs&#10;jeopardy.json: 154,406 µs">
<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">
<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.24</text>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">3.22</text>
</g>
<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,378 µs&#10;citm_catalog.json: 1,984 µs&#10;canada.json: 6,505 µs&#10;jeopardy.json: 151,127 µs">
<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">
<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.87</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">3.84</text>
</g>
<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: 498 µs&#10;citm_catalog.json: 501 µs&#10;canada.json: 2,876 µs&#10;jeopardy.json: 62,385 µs">
<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">
<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.75</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">3.68</text>
</g>
<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.26× 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.26</text>
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;2.05× 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.05</text>
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="361" text-anchor="middle">U</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum&#10;2.60× 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.60</text>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">2.42</text>
<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>
<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="333" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">2.27</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">U</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.06× 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.06</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.92× 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.92</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.99× 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.99</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.64× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 471 µs&#10;citm_catalog.json: 907 µs&#10;canada.json: 2,510 µs&#10;jeopardy.json: 62,074 µ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.64</text>
</g>
<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: 461 µs&#10;citm_catalog.json: 930 µs&#10;canada.json: 3,127 µs&#10;jeopardy.json: 62,756 µ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="nlohmann/json json · select&#10;6.94× the time of the fastest library (fully validating)&#10;twitter.json: 1,368 µs · structs (from_json)&#10;citm_catalog.json: 2,435 µs · parse&#10;canada.json: 5,915 µs · structs (from_json)&#10;jeopardy.json: 180,551 µ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.94</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;3.61× the time of the fastest library (fully validating)&#10;twitter.json: 1,270 µs · ordered_json&#10;citm_catalog.json: 2,337 µs · ordered_json&#10;canada.json: 8,183 µs · parse&#10;jeopardy.json: 173,044 µ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.61</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.95× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 1,599 µs&#10;citm_catalog.json: 2,716 µs&#10;canada.json: 8,185 µs&#10;jeopardy.json: 201,407 µ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.95</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;2.09× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 216 µs&#10;citm_catalog.json: 287 µs&#10;canada.json: 2,235 µs&#10;jeopardy.json: 31,197 µ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.09</text>
<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>
<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.13× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,311 µs&#10;citm_catalog.json: 1,568 µs&#10;canada.json: 6,787 µs&#10;jeopardy.json: 139,323 µ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.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">
<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.13</text>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">6.68</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;3.96× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 695 µs&#10;citm_catalog.json: 1,145 µs&#10;canada.json: 6,742 µs&#10;jeopardy.json: 63,152 µ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 · 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">
<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">3.96</text>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.32</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.41× the time of the fastest library (fully validating)&#10;twitter.json: 1,311 µs · S&#8203;AX&#10;citm_catalog.json: 1,623 µs · S&#8203;AX&#10;canada.json: 6,913 µs · S&#8203;AX&#10;jeopardy.json: 145,744 µ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.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">
<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.41</text>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">4.43</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.99× the time of the fastest fully validating library&#10;twitter.json: 742 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,256 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,913 µs · S&#8203;AX (validates fully)&#10;jeopardy.json: 70,079 µ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.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">
<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.99</text>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.98</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;6.00× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,314 µs&#10;citm_catalog.json: 1,574 µs&#10;canada.json: 6,750 µs&#10;jeopardy.json: 141,640 µ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;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">
<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">6.00</text>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">5.99</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: 697 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,148 µs · insitu (copy) (no encoding check)&#10;canada.json: 6,750 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 65,799 µ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.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">
<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 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.86× the time of the fastest library (fully validating)&#10;twitter.json: 1,914 µs · Document&#10;citm_catalog.json: 2,399 µs · insitu (copy)&#10;canada.json: 13,711 µs · insitu (copy)&#10;jeopardy.json: 220,629 µ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.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">
<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.86</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">4.85</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;3.82× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,350 µs&#10;citm_catalog.json: 1,974 µs&#10;canada.json: 13,706 µs&#10;jeopardy.json: 144,275 µ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.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">
<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.82</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">3.80</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.90× the time of the fastest library (fully validating)&#10;twitter.json: 1,499 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 1,797 µs · S&#8203;AX to Writer&#10;canada.json: 14,205 µs · Document + Writer&#10;jeopardy.json: 180,015 µs · S&#8203;AX to Writer">
<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">
<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.90</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">4.85</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;4.55× 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,697 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 14,205 µs · Document + Writer (validates fully)&#10;jeopardy.json: 164,086 µ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.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)">
<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.55</text>
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;5.86× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 593 µs&#10;citm_catalog.json: 818 µs&#10;canada.json: 6,872 µs&#10;jeopardy.json: 79,758 µs">
<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">
<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.86</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">5.74</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: 43 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: 1.32; yyjson sum: 1.16; yyjson select: 1.31; yyjson edit: 1.48; yyjson minify: 1.26; yyjson write: 1.17; sonic-cpp validate: no fully validating way (1.42 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.20 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.46 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.22 checking less, no U&#8203;TF-8); sonic-cpp minify: no fully validating way (1.35 checking less, no U&#8203;TF-8); sonic-cpp write: 1.37; simdjson validate: 1.28; simdjson sum: 1.11; simdjson select: 1.27 (0.53 checking less, partial); simdjson edit: n/a; simdjson minify: 1.65 (0.19 checking less, partial); simdjson write: 2.29; sonic-rs (Rust) validate: 1.15; sonic-rs (Rust) sum: 1.04; sonic-rs (Rust) select: 1.31; sonic-rs (Rust) edit: 1.98; sonic-rs (Rust) minify: 1.75; sonic-rs (Rust) write: 2.01; Boost.J&#8203;SON validate: 1.11; Boost.J&#8203;SON sum: 1.11; Boost.J&#8203;SON select: 2.17; Boost.J&#8203;SON edit: 2.38; Boost.J&#8203;SON minify: 2.58; Boost.J&#8203;SON write: 2.37; simd-json (Rust) validate: 2.15; simd-json (Rust) sum: 1.78; simd-json (Rust) select: 2.56; simd-json (Rust) edit: 3.13; simd-json (Rust) minify: 3.50; simd-json (Rust) write: 2.23; serde_json (Rust) validate: 1.43 (1.29 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.17; serde_json (Rust) select: 1.70; serde_json (Rust) edit: 5.10; serde_json (Rust) minify: 5.33; serde_json (Rust) write: 2.19; Glaze validate: 1.39; Glaze sum: 4.30 (3.92 checking less, partial); Glaze select: 1.31 (0.58 checking less, partial); Glaze edit: 6.15; Glaze minify: 6.27 (0.68 checking less, partial); Glaze write: 1.97; nlohmann/json json validate: 1.88; nlohmann/json json sum: 1.47; nlohmann/json json select: 7.96; nlohmann/json json edit: 4.27; nlohmann/json json minify: 5.24; nlohmann/json json write: 1.91; RapidJSON validate: 4.14 (3.17 checking less, no U&#8203;TF-8); RapidJSON sum: 3.24 (2.50 checking less, no U&#8203;TF-8); RapidJSON select: 4.27 (3.38 checking less, no U&#8203;TF-8); RapidJSON edit: 3.24 (2.73 checking less, no U&#8203;TF-8); RapidJSON minify: 3.45 (2.85 checking less, no U&#8203;TF-8); RapidJSON write: 2.94.</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; 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>
<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,339 @@
<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;twitter.json: 305 µs · parse&#10;citm_catalog.json: 715 µs · accept&#10;canada.json: 2,019 µs · accept&#10;jeopardy.json: 83,361 µs · parse">
<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">
<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: 373 µs&#10;citm_catalog.json: 893 µs&#10;canada.json: 4,353 µs&#10;jeopardy.json: 89,554 µ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: 375 µs&#10;citm_catalog.json: 898 µs&#10;canada.json: 3,822 µs&#10;jeopardy.json: 94,039 µ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: 324 µs&#10;citm_catalog.json: 729 µs&#10;canada.json: 1,795 µs&#10;jeopardy.json: 94,289 µ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: 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">
<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: 523 µs&#10;citm_catalog.json: 1,093 µs&#10;canada.json: 6,109 µs&#10;jeopardy.json: 179,999 µs">
<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>
<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: 472 µs&#10;citm_catalog.json: 993 µs&#10;canada.json: 5,467 µs&#10;jeopardy.json: 152,456 µs">
<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>
<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,724 µs&#10;jeopardy.json: 69,602 µs">
<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>
<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.32× the time of the fastest library (fully validating)&#10;twitter.json: 380 µs · read&#10;citm_catalog.json: 918 µs · insitu (copy)&#10;canada.json: 2,533 µs · read (raw numbers)&#10;jeopardy.json: 126,565 µ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.32</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">
<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>
</g>
<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: 437 µs · read&#10;citm_catalog.json: 1,091 µs · insitu (copy)&#10;canada.json: 3,587 µs · insitu (copy)&#10;jeopardy.json: 135,079 µ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.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">
<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.16</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.17</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select&#10;1.31× the time of the fastest library (fully validating)&#10;twitter.json: 395 µs · insitu (copy)&#10;citm_catalog.json: 934 µs · insitu (copy)&#10;canada.json: 2,374 µs · read (raw numbers)&#10;jeopardy.json: 135,642 µ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.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">
<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.31</text>
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.37</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: 816 µs · mut copy&#10;citm_catalog.json: 1,710 µs · insitu (copy) + mut copy&#10;canada.json: 7,258 µs · mut copy&#10;jeopardy.json: 296,347 µ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: 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">
<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.26× the time of the fastest library (fully validating)&#10;twitter.json: 626 µs · read + write&#10;citm_catalog.json: 1,290 µs · read + write&#10;canada.json: 6,113 µs · insitu (copy) + write&#10;jeopardy.json: 196,773 µs · insitu (copy) + write&#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 · 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.26</text>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write&#10;1.17× the time of the fastest library (fully validating)&#10;way: write&#10;twitter.json: 215 µs&#10;citm_catalog.json: 350 µs&#10;canada.json: 3,419 µs&#10;jeopardy.json: 78,246 µs">
<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">
<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.17</text>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.18</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;1.42× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 450 µs&#10;citm_catalog.json: 1,007 µs&#10;canada.json: 3,351 µs&#10;jeopardy.json: 99,056 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">1.42</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">
<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 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.20× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 506 µs&#10;citm_catalog.json: 1,208 µs&#10;canada.json: 4,034 µs&#10;jeopardy.json: 107,937 µ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.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">
<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.20</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.22</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.46× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 486 µs&#10;citm_catalog.json: 1,024 µs&#10;canada.json: 3,201 µs&#10;jeopardy.json: 113,041 µ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.46</text>
<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">
<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 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.22× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 645 µs&#10;citm_catalog.json: 1,481 µs&#10;canada.json: 7,924 µs&#10;jeopardy.json: 185,114 µ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.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">
<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.22</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.23</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.35× the time of the fastest fully validating library&#10;way: Document + Serialize&#10;twitter.json: 653 µs&#10;citm_catalog.json: 1,491 µs&#10;canada.json: 7,777 µs&#10;jeopardy.json: 172,744 µ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.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">
<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.35</text>
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.38</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.37× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 232 µs&#10;citm_catalog.json: 480 µs&#10;canada.json: 4,857 µs&#10;jeopardy.json: 70,286 µs">
<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">
<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.37</text>
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.38</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;1.28× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 306 µs&#10;citm_catalog.json: 713 µs&#10;canada.json: 3,652 µs&#10;jeopardy.json: 121,820 µs">
<rect class="nj-heat-1" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.28</text>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum&#10;1.11× the time of the fastest library (fully validating)&#10;twitter.json: 396 µs · D&#8203;OM&#10;citm_catalog.json: 969 µs · D&#8203;OM&#10;canada.json: 4,454 µs · D&#8203;OM&#10;jeopardy.json: 115,048 µs · On-Demand">
<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">
<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.11</text>
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.06</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select&#10;1.27× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 341 µs&#10;citm_catalog.json: 723 µs&#10;canada.json: 3,231 µs&#10;jeopardy.json: 128,975 µ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.27</text>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.53× the time of the fastest fully validating library&#10;way: On-Demand&#10;twitter.json: 186 µs&#10;citm_catalog.json: 487 µs&#10;canada.json: 703 µs&#10;jeopardy.json: 49,244 µs&#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.53</text>
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="181" text-anchor="middle">P</text>
<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">
<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>
</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">
<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>
</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">
<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>
</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">
<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>
</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">
<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>
</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">
<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>
</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">
<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>
</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>
<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.65× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 824 µs&#10;citm_catalog.json: 1,419 µs&#10;canada.json: 8,134 µs&#10;jeopardy.json: 305,008 µ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.65</text>
<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">
<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>
</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: 103 µs&#10;citm_catalog.json: 256 µs&#10;canada.json: 373 µs&#10;jeopardy.json: 47,751 µ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.19</text>
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="181" text-anchor="middle">P</text>
<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">
<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 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.29× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 492 µs&#10;citm_catalog.json: 680 µs&#10;canada.json: 4,787 µs&#10;jeopardy.json: 183,334 µ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.29</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.15× 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">
<rect class="nj-heat-1" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.15</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.04× 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">
<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.04</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.31× 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">
<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.31</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.98× 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">
<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.98</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.75× 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">
<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.75</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.01× 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="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">
<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.01</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.30</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.11× the time of the fastest library (fully validating)&#10;twitter.json: 568 µs · S&#8203;AX (numbers: none)&#10;citm_catalog.json: 903 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,896 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 56,244 µs · S&#8203;AX">
<rect class="nj-heat-0" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.11</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.11× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 582 µs&#10;citm_catalog.json: 927 µs&#10;canada.json: 6,356 µs&#10;jeopardy.json: 57,388 µs">
<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">
<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.11</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.13</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.17× the time of the fastest library (fully validating)&#10;twitter.json: 850 µs · parse_into structs&#10;citm_catalog.json: 1,400 µs · parse_into structs&#10;canada.json: 7,389 µs · parse&#10;jeopardy.json: 100,054 µs · parse_into structs">
<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">
<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.17</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.23</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.38× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,725 µs&#10;citm_catalog.json: 2,594 µs&#10;canada.json: 13,178 µs&#10;jeopardy.json: 343,065 µs">
<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">
<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.38</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.37</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.58× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,738 µs&#10;citm_catalog.json: 2,558 µs&#10;canada.json: 12,553 µs&#10;jeopardy.json: 308,079 µs">
<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">
<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.58</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.66</text>
</g>
<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: 488 µs&#10;citm_catalog.json: 903 µs&#10;canada.json: 5,752 µs&#10;jeopardy.json: 132,633 µs">
<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">
<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.37</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.33</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;2.15× 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">
<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.15</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.78× 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.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">
<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.78</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.81</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.56× 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.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">
<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.56</text>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.65</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;3.13× 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;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">
<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.13</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">3.04</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.50× 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.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">
<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.50</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.52</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.23× 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.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">
<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.23</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.17</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;1.43× 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">
<rect class="nj-heat-1" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">1.43</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;1.29× 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">
<rect class="nj-heat-1" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">1.29</text>
<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">
<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 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.17× 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.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">
<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.17</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.21</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.70× 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: 722 µs&#10;citm_catalog.json: 1,559 µs&#10;canada.json: 2,585 µs&#10;jeopardy.json: 114,701 µ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.70</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.10× 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.10</text>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.33× 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.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.33</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.37</text>
</g>
<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: 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.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">
<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.19</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.12</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;1.39× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 617 µs&#10;citm_catalog.json: 1,370 µs&#10;canada.json: 1,990 µs&#10;jeopardy.json: 81,604 µs">
<rect class="nj-heat-1" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">1.39</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.30× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,516 µs&#10;citm_catalog.json: 4,350 µs&#10;canada.json: 13,015 µs&#10;jeopardy.json: 311,560 µs">
<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">
<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.30</text>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.39</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;3.92× the time of the fastest fully validating library&#10;twitter.json: 2,516 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,321 µs · generic (double)&#10;canada.json: 13,015 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 215,314 µ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;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">
<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.92</text>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">3.96</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.31× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 563 µs&#10;citm_catalog.json: 1,270 µs&#10;canada.json: 1,790 µs&#10;jeopardy.json: 91,224 µs">
<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">
<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.31</text>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.42</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.58× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 340 µs&#10;citm_catalog.json: 412 µs&#10;canada.json: 460 µs&#10;jeopardy.json: 70,238 µ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.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)">
<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.58</text>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.62</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.15× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 4,192 µs&#10;citm_catalog.json: 8,087 µs&#10;canada.json: 30,621 µs&#10;jeopardy.json: 868,944 µs">
<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">
<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.15</text>
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">6.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;6.27× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 4,058 µs&#10;citm_catalog.json: 8,169 µs&#10;canada.json: 29,542 µs&#10;jeopardy.json: 615,992 µs">
<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">
<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.27</text>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">6.49</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.68× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 413 µs&#10;citm_catalog.json: 1,055 µs&#10;canada.json: 2,139 µs&#10;jeopardy.json: 88,989 µ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,024 µs&#10;canada.json: 2,463 µs&#10;jeopardy.json: 93,661 µ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.68</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.97× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 388 µs&#10;citm_catalog.json: 717 µs&#10;canada.json: 4,140 µs&#10;jeopardy.json: 138,931 µs">
<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">
<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>
</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;1.88× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 736 µs&#10;citm_catalog.json: 1,417 µs&#10;canada.json: 4,605 µs&#10;jeopardy.json: 95,644 µs">
<rect class="nj-heat-2" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">1.88</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.47× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 750 µs&#10;citm_catalog.json: 1,488 µs&#10;canada.json: 5,684 µs&#10;jeopardy.json: 95,696 µ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.47</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.96× the time of the fastest library (fully validating)&#10;way: structs (from_json)&#10;twitter.json: 3,825 µs&#10;citm_catalog.json: 5,475 µs&#10;canada.json: 12,002 µs&#10;jeopardy.json: 639,061 µs">
<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)">
<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.96</text>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">8.63</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.27× the time of the fastest library (fully validating)&#10;twitter.json: 2,810 µs · ordered_json&#10;citm_catalog.json: 5,096 µs · ordered_json&#10;canada.json: 16,935 µs · parse&#10;jeopardy.json: 864,150 µs · ordered_json">
<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">
<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.27</text>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">4.31</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;5.24× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,903 µs&#10;citm_catalog.json: 6,251 µs&#10;canada.json: 16,164 µs&#10;jeopardy.json: 744,934 µs">
<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.24</text>
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">5.41</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write&#10;1.91× the time of the fastest library (fully validating)&#10;way: dump&#10;twitter.json: 438 µs&#10;citm_catalog.json: 597 µs&#10;canada.json: 4,571 µs&#10;jeopardy.json: 119,233 µs">
<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">
<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.91</text>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.92</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;4.14× the time of the fastest library (fully validating)&#10;twitter.json: 1,815 µs · insitu (copy)&#10;citm_catalog.json: 2,123 µs · S&#8203;AX&#10;canada.json: 11,775 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 237,714 µ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="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">4.14</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;3.17× the time of the fastest fully validating library&#10;twitter.json: 1,174 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,663 µs · S&#8203;AX (no encoding check)&#10;canada.json: 11,740 µs · S&#8203;AX (raw numbers) (no encoding check)&#10;jeopardy.json: 161,724 µ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="271" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">3.17</text>
<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">
<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 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.24× the time of the fastest library (fully validating)&#10;twitter.json: 1,866 µs · insitu (copy)&#10;citm_catalog.json: 2,308 µs · S&#8203;AX&#10;canada.json: 13,209 µs · S&#8203;AX&#10;jeopardy.json: 251,431 µ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.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">
<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.24</text>
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">3.32</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.50× the time of the fastest fully validating library&#10;twitter.json: 1,233 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,863 µs · S&#8203;AX (no encoding check)&#10;canada.json: 12,976 µs · S&#8203;AX (no encoding check)&#10;jeopardy.json: 169,921 µ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.50</text>
<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>
<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.27× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,893 µs&#10;citm_catalog.json: 2,322 µs&#10;canada.json: 11,855 µs&#10;jeopardy.json: 255,774 µ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,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">
<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.27</text>
<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.38× the time of the fastest fully validating library&#10;twitter.json: 1,189 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,944 µs · insitu (copy) (no encoding check)&#10;canada.json: 11,855 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 189,496 µ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.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">
<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.38</text>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.59</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.24× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 2,486 µs&#10;citm_catalog.json: 3,253 µs&#10;canada.json: 21,592 µs&#10;jeopardy.json: 397,189 µ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.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">
<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.24</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.27</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.73× the time of the fastest fully validating library&#10;twitter.json: 1,852 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 2,889 µs · insitu (copy) (no encoding check)&#10;canada.json: 21,592 µs · insitu (copy) (validates fully)&#10;jeopardy.json: 301,007 µ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.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">
<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.73</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.79</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.45× the time of the fastest library (fully validating)&#10;twitter.json: 2,403 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 2,933 µs · S&#8203;AX to Writer&#10;canada.json: 21,919 µs · Document + Writer&#10;jeopardy.json: 359,464 µs · S&#8203;AX to Writer">
<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">
<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.45</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.59</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,776 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,429 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 21,919 µs · Document + Writer (validates fully)&#10;jeopardy.json: 273,075 µ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.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.85</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.94× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 639 µs&#10;citm_catalog.json: 961 µs&#10;canada.json: 9,785 µs&#10;jeopardy.json: 132,023 µs">
<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">
<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.94</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.95</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: 43 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.09; 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.37; yyjson sum: 1.34; yyjson select: 1.36; yyjson edit: 1.49; yyjson minify: 1.27; yyjson write: 1.09; sonic-cpp validate: no fully validating way (1.40 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.29 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.38 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.24 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.50; simdjson validate: 1.27; simdjson sum: 1.00; simdjson select: 1.26 (0.53 checking less, partial); simdjson edit: n/a; simdjson minify: 1.61 (0.18 checking less, partial); simdjson write: 2.23; sonic-rs (Rust) validate: 1.20; sonic-rs (Rust) sum: 1.15; sonic-rs (Rust) select: 1.32; sonic-rs (Rust) edit: 2.01; sonic-rs (Rust) minify: 1.74; sonic-rs (Rust) write: 2.04; Boost.J&#8203;SON validate: 1.19; Boost.J&#8203;SON sum: 1.30; Boost.J&#8203;SON select: 2.14; Boost.J&#8203;SON edit: 2.34; Boost.J&#8203;SON minify: 2.56; Boost.J&#8203;SON write: 2.25; simd-json (Rust) validate: 2.24; simd-json (Rust) sum: 1.97; simd-json (Rust) select: 2.60; simd-json (Rust) edit: 3.18; simd-json (Rust) minify: 3.48; simd-json (Rust) write: 2.26; serde_json (Rust) validate: 1.50 (1.35 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.40; serde_json (Rust) select: 1.72; serde_json (Rust) edit: 5.17; serde_json (Rust) minify: 5.30; serde_json (Rust) write: 2.22; Glaze validate: 1.75; Glaze sum: 4.38 (4.19 checking less, partial); Glaze select: 1.68 (0.58 checking less, partial); Glaze edit: 4.91; Glaze minify: 4.87 (0.76 checking less, partial); Glaze write: 1.97; RapidJSON validate: 3.37 (3.08 checking less, no U&#8203;TF-8); RapidJSON sum: 2.74 (2.52 checking less, no U&#8203;TF-8); RapidJSON select: 3.31 (3.09 checking less, no U&#8203;TF-8); RapidJSON edit: 2.78 (2.66 checking less, no U&#8203;TF-8); RapidJSON minify: 3.39 (2.81 checking less, no U&#8203;TF-8); RapidJSON write: 2.93; nlohmann/json json validate: 2.08; nlohmann/json json sum: 1.70; nlohmann/json json select: 7.88; nlohmann/json json edit: 4.26; nlohmann/json json minify: 5.18; nlohmann/json json write: 1.85.</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.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>
<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,339 @@
<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;twitter.json: 310 µs · accept&#10;citm_catalog.json: 732 µs · accept&#10;canada.json: 1,685 µs · parse&#10;jeopardy.json: 80,224 µs · accept">
<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">
<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.09× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 384 µs&#10;citm_catalog.json: 929 µs&#10;canada.json: 3,867 µs&#10;jeopardy.json: 89,000 µs">
<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">
<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.09</text>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.07</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: 327 µs&#10;citm_catalog.json: 752 µs&#10;canada.json: 1,684 µs&#10;jeopardy.json: 91,119 µ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: 333 µs&#10;citm_catalog.json: 812 µs&#10;canada.json: 1,336 µs&#10;jeopardy.json: 92,556 µ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: 531 µs&#10;citm_catalog.json: 1,081 µs&#10;canada.json: 5,914 µs&#10;jeopardy.json: 174,422 µs">
<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>
<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: 480 µs&#10;citm_catalog.json: 995 µs&#10;canada.json: 5,655 µs&#10;jeopardy.json: 147,812 µs">
<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>
<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: 154 µs&#10;citm_catalog.json: 252 µs&#10;canada.json: 3,864 µs&#10;jeopardy.json: 67,299 µs">
<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>
<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.37× the time of the fastest library (fully validating)&#10;twitter.json: 397 µs · insitu (copy)&#10;citm_catalog.json: 935 µs · read (raw numbers)&#10;canada.json: 2,151 µs · read (raw numbers)&#10;jeopardy.json: 135,866 µ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="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.37</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)">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum&#10;1.34× the time of the fastest library (fully validating)&#10;twitter.json: 450 µs · read&#10;citm_catalog.json: 1,101 µs · insitu (copy)&#10;canada.json: 3,944 µs · insitu (copy)&#10;jeopardy.json: 140,178 µ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: 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">
<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.34</text>
<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.36× the time of the fastest library (fully validating)&#10;twitter.json: 445 µs · read&#10;citm_catalog.json: 956 µs · read&#10;canada.json: 2,139 µs · read (raw numbers)&#10;jeopardy.json: 143,238 µ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: 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">
<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.36</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.49× the time of the fastest library (fully validating)&#10;twitter.json: 798 µs · insitu (copy) + mut copy&#10;citm_catalog.json: 1,645 µs · insitu (copy) + mut copy&#10;canada.json: 7,430 µs · insitu (copy) + mut copy&#10;jeopardy.json: 297,562 µ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.49</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.27× the time of the fastest library (fully validating)&#10;twitter.json: 622 µs · insitu (copy) + write&#10;citm_catalog.json: 1,264 µs · insitu (copy) + write&#10;canada.json: 6,624 µs · insitu (copy) + write&#10;jeopardy.json: 198,884 µs · read + write&#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 · 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.27</text>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.28</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: 193 µs&#10;citm_catalog.json: 320 µs&#10;canada.json: 3,391 µs&#10;jeopardy.json: 68,367 µs">
<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">
<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.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;1.40× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 404 µs&#10;citm_catalog.json: 921 µs&#10;canada.json: 3,186 µs&#10;jeopardy.json: 100,732 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">1.40</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">
<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 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.29× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 462 µs&#10;citm_catalog.json: 1,197 µs&#10;canada.json: 3,854 µs&#10;jeopardy.json: 109,985 µ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.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">
<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.29</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.26</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.38× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 409 µs&#10;citm_catalog.json: 944 µs&#10;canada.json: 3,172 µs&#10;jeopardy.json: 112,498 µ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.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">
<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.38</text>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.44</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.24× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 624 µs&#10;citm_catalog.json: 1,445 µs&#10;canada.json: 8,363 µs&#10;jeopardy.json: 188,709 µ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.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">
<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.24</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.28</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: 633 µs&#10;citm_catalog.json: 1,435 µs&#10;canada.json: 8,404 µs&#10;jeopardy.json: 179,298 µ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.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">
<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 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.50× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 260 µs&#10;citm_catalog.json: 508 µs&#10;canada.json: 5,333 µs&#10;jeopardy.json: 73,212 µ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.50</text>
<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">
<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>
</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;1.27× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 302 µs&#10;citm_catalog.json: 676 µs&#10;canada.json: 3,234 µs&#10;jeopardy.json: 121,861 µs">
<rect class="nj-heat-1" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.27</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">
<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>
</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: 348 µs&#10;citm_catalog.json: 804 µs&#10;canada.json: 3,368 µs&#10;jeopardy.json: 90,882 µ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: 349 µs&#10;citm_catalog.json: 846 µs&#10;canada.json: 3,443 µs&#10;jeopardy.json: 98,772 µ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.26× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 337 µs&#10;citm_catalog.json: 686 µs&#10;canada.json: 3,191 µs&#10;jeopardy.json: 128,921 µs">
<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">
<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.26</text>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.53× the time of the fastest fully validating library&#10;twitter.json: 183 µs · On-Demand structs&#10;citm_catalog.json: 483 µs · On-Demand (key selectors)&#10;canada.json: 700 µs · On-Demand (key selectors)&#10;jeopardy.json: 49,265 µ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.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">
<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.53</text>
<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>
</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.61× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 787 µs&#10;citm_catalog.json: 1,300 µs&#10;canada.json: 8,944 µs&#10;jeopardy.json: 295,041 µ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: 797 µs&#10;citm_catalog.json: 1,389 µs&#10;canada.json: 8,834 µs&#10;jeopardy.json: 306,425 µ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: 104 µs&#10;citm_catalog.json: 247 µs&#10;canada.json: 367 µs&#10;jeopardy.json: 46,756 µ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: 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">
<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.23× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 457 µs&#10;citm_catalog.json: 597 µs&#10;canada.json: 5,272 µs&#10;jeopardy.json: 173,760 µs">
<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">
<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.25</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.20× 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">
<rect class="nj-heat-1" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.20</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.15× 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">
<rect class="nj-heat-1" 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>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.32× 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: 538 µs&#10;citm_catalog.json: 1,028 µs&#10;canada.json: 2,283 µs&#10;jeopardy.json: 91,950 µ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.32</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;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">
<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>
</g>
<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,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.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">
<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.74</text>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.69</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write&#10;2.04× 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.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">
<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.04</text>
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.99</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.19× the time of the fastest library (fully validating)&#10;twitter.json: 680 µs · S&#8203;AX (numbers: none)&#10;citm_catalog.json: 909 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,642 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 60,757 µs · S&#8203;AX">
<rect class="nj-heat-1" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.19</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">
<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.30× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 688 µs&#10;citm_catalog.json: 1,020 µs&#10;canada.json: 5,676 µs&#10;jeopardy.json: 61,670 µs">
<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">
<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.30</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.26</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.14× the time of the fastest library (fully validating)&#10;twitter.json: 954 µs · parse_into structs&#10;citm_catalog.json: 1,223 µs · parse_into structs&#10;canada.json: 6,775 µs · parse&#10;jeopardy.json: 99,560 µs · parse_into structs">
<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">
<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.14</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.21</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.34× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 1,755 µs&#10;citm_catalog.json: 2,482 µs&#10;canada.json: 12,291 µs&#10;jeopardy.json: 331,024 µs">
<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">
<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.34</text>
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.37</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · minify&#10;2.56× the time of the fastest library (fully validating)&#10;way: parse + serialize&#10;twitter.json: 1,772 µs&#10;citm_catalog.json: 2,495 µs&#10;canada.json: 12,783 µs&#10;jeopardy.json: 304,037 µs">
<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">
<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.56</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.54</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.25× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 452 µs&#10;citm_catalog.json: 827 µs&#10;canada.json: 5,615 µs&#10;jeopardy.json: 123,767 µs">
<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">
<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.25</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.21</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;2.24× 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">
<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.24</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum&#10;1.97× 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.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">
<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.97</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.90</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.60× 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.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">
<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.60</text>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.68</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.48× 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.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">
<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.48</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.38</text>
</g>
<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: 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.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">
<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.26</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.21</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;1.50× 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">
<rect class="nj-heat-1" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">1.50</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;1.35× 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">
<rect class="nj-heat-1" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">1.35</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: 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">
<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 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.40× 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.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">
<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.40</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.31</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.72× 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.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">
<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.72</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.78</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;5.17× 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;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.17</text>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">5.18</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.30× 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.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.30</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.15</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.22× 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.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">
<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.22</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.16</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;1.75× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 714 µs&#10;citm_catalog.json: 1,975 µs&#10;canada.json: 2,544 µs&#10;jeopardy.json: 79,737 µ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">1.75</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.38× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,410 µs&#10;citm_catalog.json: 4,407 µs&#10;canada.json: 10,384 µs&#10;jeopardy.json: 285,204 µs">
<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">
<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.38</text>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.32</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;4.19× the time of the fastest fully validating library&#10;twitter.json: 2,410 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,407 µs · generic (double, strict) (validates fully)&#10;canada.json: 10,384 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 239,395 µ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;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">
<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.19</text>
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">4.14</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.68× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 679 µs&#10;citm_catalog.json: 1,971 µs&#10;canada.json: 2,518 µs&#10;jeopardy.json: 89,804 µ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: 603 µs&#10;citm_catalog.json: 2,097 µs&#10;canada.json: 2,586 µs&#10;jeopardy.json: 90,324 µ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.68</text>
<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.58× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 355 µs&#10;citm_catalog.json: 400 µs&#10;canada.json: 430 µs&#10;jeopardy.json: 68,491 µ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.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)">
<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.58</text>
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.60</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;4.91× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,451 µs&#10;citm_catalog.json: 6,457 µs&#10;canada.json: 21,021 µs&#10;jeopardy.json: 737,298 µ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.91</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;4.87× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,332 µs&#10;citm_catalog.json: 6,408 µs&#10;canada.json: 21,303 µs&#10;jeopardy.json: 494,208 µs">
<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">
<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.87</text>
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.76× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 416 µs&#10;citm_catalog.json: 1,298 µs&#10;canada.json: 2,661 µs&#10;jeopardy.json: 93,101 µ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: 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">
<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.76</text>
<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.97× the time of the fastest library (fully validating)&#10;twitter.json: 379 µs · generic&#10;citm_catalog.json: 730 µs · generic&#10;canada.json: 4,088 µs · generic (strict)&#10;jeopardy.json: 133,699 µs · generic">
<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">
<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.91</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;3.37× the time of the fastest library (fully validating)&#10;twitter.json: 1,254 µs · insitu (copy)&#10;citm_catalog.json: 1,885 µs · insitu (copy)&#10;canada.json: 10,363 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 161,392 µ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="225" y="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="390" text-anchor="middle">3.37</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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;3.08× the time of the fastest fully validating library&#10;twitter.json: 1,092 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,589 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,238 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 155,425 µ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="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="384" text-anchor="middle">3.08</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum&#10;2.74× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,301 µs&#10;citm_catalog.json: 2,166 µs&#10;canada.json: 10,523 µs&#10;jeopardy.json: 162,402 µ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 · 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.74</text>
<text class="nj-charts-cell" x="339.5" y="390" text-anchor="middle">2.71</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.52× the time of the fastest fully validating library&#10;twitter.json: 1,141 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,832 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,394 µs · insitu (copy) (no encoding check)&#10;jeopardy.json: 159,815 µ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="369" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="384.5" y="384" text-anchor="middle">2.52</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select&#10;3.31× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,405 µs&#10;citm_catalog.json: 1,895 µs&#10;canada.json: 10,256 µs&#10;jeopardy.json: 165,022 µ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;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.31</text>
<text class="nj-charts-cell" x="431.5" y="390" text-anchor="middle">3.43</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.09× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,218 µs&#10;citm_catalog.json: 1,841 µs&#10;canada.json: 9,991 µs&#10;jeopardy.json: 153,824 µ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 · 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.09</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit&#10;2.78× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,981 µs&#10;citm_catalog.json: 2,969 µs&#10;canada.json: 19,675 µs&#10;jeopardy.json: 306,064 µ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;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.78</text>
<text class="nj-charts-cell" x="523.5" y="390" text-anchor="middle">2.79</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.66× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,824 µs&#10;citm_catalog.json: 2,810 µs&#10;canada.json: 19,176 µs&#10;jeopardy.json: 301,160 µ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;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.66</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify&#10;3.39× the time of the fastest library (fully validating)&#10;twitter.json: 2,458 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 2,873 µs · S&#8203;AX to Writer&#10;canada.json: 21,009 µs · Document + Writer&#10;jeopardy.json: 353,444 µs · S&#8203;AX to Writer">
<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.39</text>
<text class="nj-charts-cell" x="615.5" y="390" text-anchor="middle">3.45</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.81× the time of the fastest fully validating library&#10;twitter.json: 1,764 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,494 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 20,766 µs · Document + Writer (no encoding check)&#10;jeopardy.json: 271,282 µ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.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.81</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.93× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 649 µs&#10;citm_catalog.json: 974 µs&#10;canada.json: 9,080 µs&#10;jeopardy.json: 129,698 µs">
<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.93</text>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.92</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;2.08× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 792 µs&#10;citm_catalog.json: 1,585 µs&#10;canada.json: 4,678 µs&#10;jeopardy.json: 98,338 µs">
<rect class="nj-heat-2" x="225" y="405" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="426" text-anchor="middle">2.08</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>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum&#10;1.70× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 801 µs&#10;citm_catalog.json: 1,705 µs&#10;canada.json: 5,532 µs&#10;jeopardy.json: 94,952 µs">
<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.70</text>
<text class="nj-charts-cell" x="362" y="426" text-anchor="middle">1.71</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.88× the time of the fastest library (fully validating)&#10;twitter.json: 3,693 µs · structs (from_json)&#10;citm_catalog.json: 5,596 µs · parse&#10;canada.json: 11,689 µs · parse&#10;jeopardy.json: 601,495 µs · parse">
<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">7.88</text>
<text class="nj-charts-cell" x="454" y="426" text-anchor="middle">8.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.26× the time of the fastest library (fully validating)&#10;way: ordered_json&#10;twitter.json: 2,914 µs&#10;citm_catalog.json: 5,182 µs&#10;canada.json: 15,284 µs&#10;jeopardy.json: 842,581 µs">
<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.26</text>
<text class="nj-charts-cell" x="546" y="426" text-anchor="middle">4.49</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;5.18× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,822 µs&#10;citm_catalog.json: 6,431 µs&#10;canada.json: 15,804 µs&#10;jeopardy.json: 737,629 µs">
<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.18</text>
<text class="nj-charts-cell" x="638" y="426" text-anchor="middle">5.20</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: 431 µs&#10;citm_catalog.json: 605 µs&#10;canada.json: 3,894 µs&#10;jeopardy.json: 116,689 µs">
<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.85</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">1.83</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: 43 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.12; 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.34; yyjson sum: 1.47; yyjson select: 1.29; yyjson edit: 1.52; yyjson minify: 1.34; yyjson write: 1.08; sonic-cpp validate: no fully validating way (1.40 checking less, no U&#8203;TF-8); sonic-cpp sum: no fully validating way (1.33 checking less, no U&#8203;TF-8); sonic-cpp select: no fully validating way (1.42 checking less, no U&#8203;TF-8); sonic-cpp edit: no fully validating way (1.22 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.48; simdjson validate: 1.26; simdjson sum: 1.00; simdjson select: 1.23 (0.53 checking less, partial); simdjson edit: n/a; simdjson minify: 1.54 (0.21 checking less, partial); simdjson write: 2.17; sonic-rs (Rust) validate: 1.16; sonic-rs (Rust) sum: 1.13; sonic-rs (Rust) select: 1.27; sonic-rs (Rust) edit: 1.88; sonic-rs (Rust) minify: 1.68; sonic-rs (Rust) write: 1.98; Boost.J&#8203;SON validate: 1.18; Boost.J&#8203;SON sum: 1.32; Boost.J&#8203;SON select: 2.15; Boost.J&#8203;SON edit: 2.44; Boost.J&#8203;SON minify: 2.64; Boost.J&#8203;SON write: 2.38; simd-json (Rust) validate: 2.17; simd-json (Rust) sum: 1.94; simd-json (Rust) select: 2.50; simd-json (Rust) edit: 2.97; simd-json (Rust) minify: 3.36; simd-json (Rust) write: 2.20; serde_json (Rust) validate: 1.44 (1.30 checking less, no U&#8203;TF-8); serde_json (Rust) sum: 2.36; serde_json (Rust) select: 1.66; serde_json (Rust) edit: 4.84; serde_json (Rust) minify: 5.12; serde_json (Rust) write: 2.15; Glaze validate: 1.33; Glaze sum: 4.42 (4.12 checking less, partial); Glaze select: 1.34 (0.55 checking less, partial); Glaze edit: 4.91; Glaze minify: 4.96 (0.70 checking less, partial); Glaze write: 1.74; nlohmann/json json validate: 2.01; nlohmann/json json sum: 1.75; nlohmann/json json select: 7.62; nlohmann/json json edit: 4.15; nlohmann/json json minify: 4.94; nlohmann/json json write: 1.86; RapidJSON validate: 3.89 (3.04 checking less, no U&#8203;TF-8); RapidJSON sum: 3.27 (2.57 checking less, no U&#8203;TF-8); RapidJSON select: 3.84 (3.14 checking less, no U&#8203;TF-8); RapidJSON edit: 2.99 (2.65 checking less, no U&#8203;TF-8); RapidJSON minify: 3.57 (2.81 checking less, no U&#8203;TF-8); RapidJSON write: 2.97.</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.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>
<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,339 @@
<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;twitter.json: 332 µs · parse&#10;citm_catalog.json: 764 µs · accept&#10;canada.json: 1,691 µs · accept&#10;jeopardy.json: 82,408 µs · accept">
<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">
<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.12× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 410 µs&#10;citm_catalog.json: 960 µs&#10;canada.json: 4,026 µs&#10;jeopardy.json: 91,857 µs">
<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">
<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.12</text>
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.10</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: 361 µs · structs (from_json)&#10;citm_catalog.json: 788 µs · parse&#10;canada.json: 1,693 µs · structs (from_json)&#10;jeopardy.json: 92,200 µ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: 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">
<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: 630 µs&#10;citm_catalog.json: 1,128 µs&#10;canada.json: 5,910 µs&#10;jeopardy.json: 184,135 µs">
<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>
<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: 503 µs&#10;citm_catalog.json: 1,045 µs&#10;canada.json: 5,569 µs&#10;jeopardy.json: 156,948 µs">
<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>
<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: 272 µs&#10;canada.json: 3,979 µs&#10;jeopardy.json: 68,836 µs">
<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>
<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.34× the time of the fastest library (fully validating)&#10;twitter.json: 393 µs · insitu (copy)&#10;citm_catalog.json: 988 µs · read (raw numbers)&#10;canada.json: 2,211 µs · read (raw numbers)&#10;jeopardy.json: 131,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="225" y="81" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.34</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)">
<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>
</g>
<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: 447 µs · insitu (copy)&#10;citm_catalog.json: 1,146 µs · insitu (copy)&#10;canada.json: 6,051 µs · insitu (copy)&#10;jeopardy.json: 137,148 µ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.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">
<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.47</text>
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.43</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: 404 µs · read&#10;citm_catalog.json: 1,000 µs · read&#10;canada.json: 2,214 µs · read (raw numbers)&#10;jeopardy.json: 139,234 µs · read (raw numbers)">
<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">
<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.40</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit&#10;1.52× the time of the fastest library (fully validating)&#10;twitter.json: 824 µs · mut copy&#10;citm_catalog.json: 1,729 µs · insitu (copy) + mut copy&#10;canada.json: 9,727 µs · insitu (copy) + mut copy&#10;jeopardy.json: 299,300 µ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.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">
<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.52</text>
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.58</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify&#10;1.34× the time of the fastest library (fully validating)&#10;twitter.json: 605 µs · read + write&#10;citm_catalog.json: 1,323 µs · read + write&#10;canada.json: 9,272 µs · insitu (copy) + write&#10;jeopardy.json: 200,777 µs · insitu (copy) + write&#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 · 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.34</text>
<text class="nj-charts-cell" x="638" y="102" text-anchor="middle">1.37</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: 180 µs&#10;citm_catalog.json: 330 µs&#10;canada.json: 3,620 µs&#10;jeopardy.json: 70,502 µs">
<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">
<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>
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.09</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;1.40× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 407 µs&#10;citm_catalog.json: 1,022 µs&#10;canada.json: 3,560 µs&#10;jeopardy.json: 90,971 µs&#10;trusts U&#8203;TF-8: sonic-cpp 1.0.2 doesn&#x27;t check it">
<rect class="nj-heat-1" x="225" y="117" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">1.40</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">
<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.33× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 478 µs&#10;citm_catalog.json: 1,234 µs&#10;canada.json: 4,454 µs&#10;jeopardy.json: 109,509 µ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.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">
<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.33</text>
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.31</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.42× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 453 µs&#10;citm_catalog.json: 1,041 µs&#10;canada.json: 3,639 µs&#10;jeopardy.json: 106,529 µ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.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.42</text>
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.49</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.22× the time of the fastest fully validating library&#10;way: Document&#10;twitter.json: 662 µs&#10;citm_catalog.json: 1,560 µs&#10;canada.json: 8,647 µs&#10;jeopardy.json: 191,340 µ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.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">
<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.22</text>
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.28</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: 640 µs&#10;citm_catalog.json: 1,558 µs&#10;canada.json: 8,901 µs&#10;jeopardy.json: 175,992 µ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.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">
<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 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.48× the time of the fastest library (fully validating)&#10;way: Serialize&#10;twitter.json: 262 µs&#10;citm_catalog.json: 532 µs&#10;canada.json: 5,268 µs&#10;jeopardy.json: 74,547 µ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 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>
<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;1.26× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 312 µs&#10;citm_catalog.json: 730 µs&#10;canada.json: 3,166 µs&#10;jeopardy.json: 123,620 µs">
<rect class="nj-heat-1" x="225" y="153" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">1.26</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">
<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>
</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: 819 µs&#10;canada.json: 3,269 µs&#10;jeopardy.json: 95,622 µ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: 360 µs&#10;citm_catalog.json: 869 µs&#10;canada.json: 3,514 µs&#10;jeopardy.json: 97,315 µ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.23× the time of the fastest library (fully validating)&#10;way: D&#8203;OM&#10;twitter.json: 348 µs&#10;citm_catalog.json: 740 µs&#10;canada.json: 3,170 µs&#10;jeopardy.json: 124,766 µs">
<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">
<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.23</text>
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.32</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less&#10;0.53× the time of the fastest fully validating library&#10;twitter.json: 190 µs · On-Demand (key selectors)&#10;citm_catalog.json: 498 µs · On-Demand (key selectors)&#10;canada.json: 726 µs · On-Demand&#10;jeopardy.json: 49,901 µ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.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">
<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.53</text>
<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>
</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.54× the time of the fastest library (fully validating)&#10;way: D&#8203;OM + to_string&#10;twitter.json: 792 µs&#10;citm_catalog.json: 1,348 µs&#10;canada.json: 8,324 µs&#10;jeopardy.json: 290,206 µs">
<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">
<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.54</text>
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.59</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: 128 µs&#10;citm_catalog.json: 331 µs&#10;canada.json: 464 µs&#10;jeopardy.json: 47,486 µ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.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">
<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 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.17× the time of the fastest library (fully validating)&#10;way: to_string&#10;twitter.json: 451 µs&#10;citm_catalog.json: 598 µs&#10;canada.json: 5,334 µs&#10;jeopardy.json: 174,144 µs">
<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">
<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.17</text>
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.23</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.16× 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">
<rect class="nj-heat-1" x="225" y="189" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.16</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum&#10;1.13× 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.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">
<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.13</text>
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.09</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select&#10;1.27× 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.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">
<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.27</text>
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.33</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit&#10;1.88× 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.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">
<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.88</text>
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.97</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify&#10;1.68× 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.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">
<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.68</text>
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.65</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">
<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>
</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.18× the time of the fastest library (fully validating)&#10;twitter.json: 725 µs · S&#8203;AX&#10;citm_catalog.json: 924 µs · S&#8203;AX (numbers: none)&#10;canada.json: 1,637 µs · S&#8203;AX (numbers: none)&#10;jeopardy.json: 62,571 µs · S&#8203;AX">
<rect class="nj-heat-1" x="225" y="225" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.18</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · sum&#10;1.32× the time of the fastest library (fully validating)&#10;way: S&#8203;AX&#10;twitter.json: 748 µs&#10;citm_catalog.json: 1,018 µs&#10;canada.json: 5,668 µs&#10;jeopardy.json: 64,462 µs">
<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">
<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.32</text>
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.35</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · select&#10;2.15× the time of the fastest library (fully validating)&#10;way: parse_into structs&#10;twitter.json: 973 µs&#10;citm_catalog.json: 1,358 µs&#10;canada.json: 6,913 µs&#10;jeopardy.json: 103,145 µs">
<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">
<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.15</text>
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.22</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · edit&#10;2.44× the time of the fastest library (fully validating)&#10;way: parse&#10;twitter.json: 2,086 µs&#10;citm_catalog.json: 2,928 µs&#10;canada.json: 13,189 µs&#10;jeopardy.json: 340,875 µ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.44</text>
<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">
<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>
</g>
<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,911 µs&#10;citm_catalog.json: 2,840 µs&#10;canada.json: 13,417 µs&#10;jeopardy.json: 307,134 µs">
<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">
<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.64</text>
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.70</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J&#8203;SON · write&#10;2.38× the time of the fastest library (fully validating)&#10;way: serialize&#10;twitter.json: 459 µs&#10;citm_catalog.json: 1,012 µs&#10;canada.json: 6,253 µs&#10;jeopardy.json: 126,330 µs">
<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.38</text>
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.40</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;2.17× 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">
<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.17</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">
<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.94× 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.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">
<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.94</text>
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.87</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select&#10;2.50× 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">
<rect class="nj-heat-2" x="409" y="261" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.50</text>
<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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit&#10;2.97× 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;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">
<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">2.97</text>
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">3.10</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify&#10;3.36× 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.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">
<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.36</text>
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.29</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write&#10;2.20× 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.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">
<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.20</text>
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.19</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;1.44× 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">
<rect class="nj-heat-1" x="225" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">1.44</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less&#10;1.30× 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">
<rect class="nj-heat-1" x="271" y="297" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">1.30</text>
<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">
<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 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.36× 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.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">
<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.36</text>
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.28</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select&#10;1.66× 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.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">
<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.66</text>
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.73</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit&#10;4.84× 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-3" x="501" y="297" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.84</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify&#10;5.12× 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.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">
<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.12</text>
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.01</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write&#10;2.15× 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.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">
<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.15</text>
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.14</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;1.33× the time of the fastest library (fully validating)&#10;way: validate_json&#10;twitter.json: 597 µs&#10;citm_catalog.json: 1,407 µs&#10;canada.json: 1,844 µs&#10;jeopardy.json: 71,646 µs">
<rect class="nj-heat-1" x="225" y="333" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">1.33</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum&#10;4.42× the time of the fastest library (fully validating)&#10;way: generic (double, strict)&#10;twitter.json: 2,399 µs&#10;citm_catalog.json: 4,212 µs&#10;canada.json: 11,369 µs&#10;jeopardy.json: 307,211 µs">
<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.42</text>
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.44</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less&#10;4.12× the time of the fastest fully validating library&#10;twitter.json: 2,399 µs · generic (double, strict) (validates fully)&#10;citm_catalog.json: 4,141 µs · generic (double)&#10;canada.json: 11,369 µs · generic (double, strict) (validates fully)&#10;jeopardy.json: 236,277 µ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.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.12</text>
<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.34× the time of the fastest library (fully validating)&#10;way: structs (validate_skipped)&#10;twitter.json: 595 µs&#10;citm_catalog.json: 1,500 µs&#10;canada.json: 1,854 µs&#10;jeopardy.json: 86,510 µs">
<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">
<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.34</text>
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.42</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less&#10;0.55× the time of the fastest fully validating library&#10;way: structs&#10;twitter.json: 340 µs&#10;citm_catalog.json: 403 µs&#10;canada.json: 447 µs&#10;jeopardy.json: 68,532 µ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: 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)">
<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.55</text>
<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;4.91× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 4,023 µs&#10;citm_catalog.json: 6,662 µs&#10;canada.json: 23,242 µs&#10;jeopardy.json: 724,016 µ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.91</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify&#10;4.96× the time of the fastest library (fully validating)&#10;way: generic (strict)&#10;twitter.json: 3,520 µs&#10;citm_catalog.json: 6,525 µs&#10;canada.json: 24,118 µs&#10;jeopardy.json: 500,684 µ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.96</text>
<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>
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less&#10;0.70× the time of the fastest fully validating library&#10;way: minify_json&#10;twitter.json: 425 µs&#10;citm_catalog.json: 1,142 µs&#10;canada.json: 2,391 µs&#10;jeopardy.json: 97,583 µ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.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">
<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.70</text>
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.72</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.74× the time of the fastest library (fully validating)&#10;way: generic&#10;twitter.json: 336 µs&#10;citm_catalog.json: 663 µs&#10;canada.json: 3,685 µs&#10;jeopardy.json: 127,928 µs">
<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">
<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.74</text>
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.76</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.01× the time of the fastest library (fully validating)&#10;way: accept&#10;twitter.json: 783 µs&#10;citm_catalog.json: 1,619 µs&#10;canada.json: 4,621 µs&#10;jeopardy.json: 98,860 µs">
<rect class="nj-heat-2" x="225" y="369" width="90" height="34" rx="3"/>
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.01</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">
<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="nlohmann/json json · sum&#10;1.75× the time of the fastest library (fully validating)&#10;way: sax&#10;twitter.json: 813 µs&#10;citm_catalog.json: 1,676 µs&#10;canada.json: 6,045 µs&#10;jeopardy.json: 104,843 µs">
<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">
<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.75</text>
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.74</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select&#10;7.62× the time of the fastest library (fully validating)&#10;twitter.json: 3,609 µs · structs (from_json)&#10;citm_catalog.json: 5,673 µs · structs (from_json)&#10;canada.json: 12,031 µs · structs (from_json)&#10;jeopardy.json: 607,902 µs · parse">
<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">
<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.62</text>
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.91</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit&#10;4.15× the time of the fastest library (fully validating)&#10;twitter.json: 3,222 µs · ordered_json&#10;citm_catalog.json: 5,204 µs · ordered_json&#10;canada.json: 16,070 µs · parse&#10;jeopardy.json: 855,263 µs · ordered_json">
<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">
<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.15</text>
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">4.46</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify&#10;4.94× the time of the fastest library (fully validating)&#10;way: parse + dump&#10;twitter.json: 3,741 µs&#10;citm_catalog.json: 6,096 µs&#10;canada.json: 16,580 µs&#10;jeopardy.json: 721,380 µ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.94</text>
<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>
<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: 440 µs&#10;citm_catalog.json: 636 µs&#10;canada.json: 4,063 µs&#10;jeopardy.json: 119,266 µs">
<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">
<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>
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.85</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;3.89× the time of the fastest library (fully validating)&#10;twitter.json: 1,651 µs · insitu (copy)&#10;citm_catalog.json: 2,232 µs · S&#8203;AX&#10;canada.json: 10,380 µs · S&#8203;AX (raw numbers)&#10;jeopardy.json: 210,972 µ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="225" y="405" width="44" height="34" rx="3"/>
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">3.89</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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less&#10;3.04× the time of the fastest fully validating library&#10;twitter.json: 1,120 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,660 µs · S&#8203;AX (no encoding check)&#10;canada.json: 10,317 µs · S&#8203;AX (raw numbers) (no encoding check)&#10;jeopardy.json: 157,831 µ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,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">
<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">3.04</text>
<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,679 µs · insitu (copy)&#10;citm_catalog.json: 2,311 µs · S&#8203;AX&#10;canada.json: 11,995 µs · insitu (copy)&#10;jeopardy.json: 226,217 µ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.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">
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less&#10;2.57× the time of the fastest fully validating library&#10;twitter.json: 1,175 µs · insitu (copy) (no encoding check)&#10;citm_catalog.json: 1,740 µs · S&#8203;AX (no encoding check)&#10;canada.json: 11,756 µs · Document (no encoding check)&#10;jeopardy.json: 167,558 µ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.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">
<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.57</text>
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.60</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;3.84× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 1,703 µs&#10;citm_catalog.json: 2,297 µs&#10;canada.json: 11,423 µs&#10;jeopardy.json: 217,155 µ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.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">
<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.84</text>
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.15</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less&#10;3.14× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 1,176 µs&#10;citm_catalog.json: 1,915 µs&#10;canada.json: 11,128 µs&#10;jeopardy.json: 171,258 µ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 · 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">
<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.14</text>
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.42</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;2.99× the time of the fastest library (fully validating)&#10;way: insitu (copy)&#10;twitter.json: 2,588 µs&#10;citm_catalog.json: 3,273 µs&#10;canada.json: 20,202 µs&#10;jeopardy.json: 363,265 µ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.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">
<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.99</text>
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.17</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less&#10;2.65× the time of the fastest fully validating library&#10;way: insitu (copy) (no encoding check)&#10;twitter.json: 2,120 µs&#10;citm_catalog.json: 2,905 µs&#10;canada.json: 20,073 µs&#10;jeopardy.json: 307,430 µ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;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">
<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.65</text>
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.78</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.57× the time of the fastest library (fully validating)&#10;twitter.json: 2,733 µs · S&#8203;AX to Writer&#10;citm_catalog.json: 3,088 µs · S&#8203;AX to Writer&#10;canada.json: 21,466 µs · Document + Writer&#10;jeopardy.json: 410,160 µs · S&#8203;AX to Writer">
<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">
<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.57</text>
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.64</text>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less&#10;2.81× the time of the fastest fully validating library&#10;twitter.json: 1,855 µs · S&#8203;AX to Writer (no encoding check)&#10;citm_catalog.json: 2,516 µs · S&#8203;AX to Writer (no encoding check)&#10;canada.json: 20,678 µs · Document + Writer (no encoding check)&#10;jeopardy.json: 295,852 µ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.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)">
<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.81</text>
<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>
</g>
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write&#10;2.97× the time of the fastest library (fully validating)&#10;way: Writer&#10;twitter.json: 688 µs&#10;citm_catalog.json: 1,020 µs&#10;canada.json: 9,144 µs&#10;jeopardy.json: 138,466 µs">
<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">
<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.97</text>
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.99</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: 43 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
FromBinaryBuffer/bson / twitter,ns,3.20265e+06,1.01993e+06,3.140
ParseStringOrdered/jeopardy,ns,3.70568e+08,1.14254e+08,3.243
JsonPointerToString/twitter,ns,2.23197e+06,820138,2.721
BinaryToCbor/8192,ns,520.964,261.625,1.991
FromMsgpack/unsigned_ints,ns,5.69725e+07,2.80231e+07,2.033
JsonPointerAt/twitter,ns,802316,609192,1.317
CopyOnly/twitter,ns,420973,412550,1.020
FlattenOrdered/citm_catalog,ns,2.56599e+08,1.43012e+06,179.425
FromBinaryFile/ubjson / canada,ns,1.39411e+07,6.49692e+06,2.146
FromBinaryShape/containers / bjdata,ns,1.43419e+07,7.40687e+06,1.936
ParseIndented/jeopardy / 4,ns,3.41862e+08,1.33413e+08,2.562
FromMsgpack/signed_ints,ns,6.35213e+07,3.30421e+07,1.922
FromBinaryShape/containers / bson,ns,1.70519e+07,1.00034e+07,1.705
BinaryToCbor/128,ns,254.611,116.411,2.187
FromBinaryBuffer/cbor / jeopardy,ns,3.69767e+08,1.19253e+08,3.101
ParseFile/jeopardy,ns,3.34742e+08,1.63435e+08,2.048
FromMsgpack/jeopardy,ns,1.149e+09,1.87355e+08,6.133
FromBinaryFile/cbor / twitter,ns,1.01844e+07,1.59657e+06,6.379
ToCbor/floats,ns,8.95826e+06,1.90206e+06,4.710
ParseFile/small_signed_ints,ns,6.45414e+07,3.24039e+07,1.992
FromBinaryBuffer/msgpack / twitter,ns,3.12989e+06,955605,3.275
BinaryToCbor/16384,ns,957.164,409.694,2.336
FromBinaryFile/bson / twitter,ns,1.05564e+07,1.83313e+06,5.759
ParseString/twitter,ns,3.26395e+06,1.06141e+06,3.075
Unflatten/twitter,ns,4.7901e+06,2.16809e+06,2.209
BinaryToCbor/8,ns,250.617,48.9987,5.115
BinaryToCbor/16,ns,247.56,49.275,5.024
Dump/small_signed_ints / 4,ns,2.52497e+07,8.83973e+06,2.856
ParseString/jeopardy,ns,3.075e+08,1.31952e+08,2.330
Dump/signed_ints / 4,ns,3.23205e+07,1.14372e+07,2.826
Flatten/twitter,ns,3.63682e+06,2.08612e+06,1.743
FromBinaryBuffer/cbor / twitter,ns,3.15556e+06,982723,3.211
Dump/jeopardy / 4,ns,2.23755e+08,3.58432e+07,6.243
SaxParse/citm_catalog,ns,6.48562e+06,996471,6.509
JsonPointerAt/citm_catalog,ns,1.86838e+06,1.17763e+06,1.587
DestroyOnly/citm_catalog,ns,896147,687189,1.304
FromBinaryShape/scalars / ubjson,ns,2.51063e+07,1.16857e+07,2.148
Unflatten/canada,ns,4.23131e+07,1.09708e+07,3.857
ParseString/floats,ns,1.20329e+08,3.11796e+07,3.859
ParseIndented/canada / 4,ns,3.44028e+07,5.15746e+06,6.670
ParseString/signed_ints,ns,1.21464e+08,3.24369e+07,3.745
ParseFile/signed_ints,ns,1.26509e+08,4.77756e+07,2.648
JsonPointerContains/twitter,ns,1.32359e+06,626164,2.114
Dump/floats / 4,ns,7.2051e+07,2.47002e+07,2.917
Dump/floats / -,ns,6.40617e+07,2.40284e+07,2.666
ToCbor/canada,ns,1.40569e+06,563628,2.494
FromBinaryBuffer/bson / canada,ns,9.59257e+06,5.45604e+06,1.758
ToCbor/twitter,ns,645140,144838,4.454
ParseIndented/twitter / 4,ns,3.66555e+06,1.1496e+06,3.189
Iterate/citm_catalog,ns,304057,186693,1.629
FromBinaryBuffer/bjdata / canada,ns,8.44949e+06,4.18085e+06,2.021
ParseStreamValues/ndjson,ns,7.13248e+06,3.74646e+06,1.904
Diff/twitter,ns,4.9487e+06,655350,7.551
Dump/citm_catalog / -,ns,1.41491e+06,296958,4.765
FromBinaryShape/nested / bjdata,ns,97444.8,39017.8,2.497
ToJsonStrings/copy,ns,6.02335e+06,5.76289e+06,1.045
Dump/canada / 4,ns,9.0251e+06,3.05796e+06,2.951
CopyRing/twitter,ns,923459,836502,1.104
FromBinaryBuffer/cbor / citm_catalog,ns,3.83804e+06,1.48497e+06,2.585
FromBinaryFile/bjdata / twitter,ns,1.07571e+07,1.97984e+06,5.433
FromBinaryShape/containers / ubjson_optimized,ns,1.51034e+07,4.91673e+06,3.072
FromMsgpack/citm_catalog,ns,9.2234e+06,2.31697e+06,3.981
CopyOnly/canada,ns,1.57914e+06,1.55103e+06,1.018
Equal/canada,ns,469788,342475,1.372
Diff/citm_catalog,ns,7.13383e+06,1.10739e+06,6.442
ParseStringOrdered/canada,ns,1.54143e+07,4.44693e+06,3.466
Flatten/canada,ns,2.92397e+07,1.13461e+07,2.577
Accept/canada,ns,1.28601e+07,2.33328e+06,5.512
CopyAssign/twitter,ns,886807,758771,1.169
BinaryToCbor/4096,ns,408.287,177.133,2.305
ParseFILE/citm_catalog,ns,3.554e+07,7.57816e+06,4.690
ToCbor/signed_ints,ns,1.13842e+07,2.82539e+06,4.029
Patch/canada,ns,1.03856e+07,3.44306e+06,3.016
GetArray<std::vector<int>>,ns,6775.31,675.66,10.028
Dump/canada / -,ns,6.83829e+06,2.34599e+06,2.915
GetVectorDouble/floats,ns,6.79501e+06,976472,6.959
Accept/citm_catalog,ns,6.46161e+06,933820,6.920
ParseFILE/twitter,ns,1.39242e+07,3.37101e+06,4.131
FromBinaryBuffer/msgpack / jeopardy,ns,3.62314e+08,1.12333e+08,3.225
ParseFile/floats,ns,1.29093e+08,5.07947e+07,2.541
Accept/small_signed_ints,ns,5.70115e+07,1.92594e+07,2.960
Accept/jeopardy,ns,2.18621e+08,6.48811e+07,3.370
Accept/signed_ints,ns,1.17114e+08,2.90352e+07,4.034
CopyRing/canada,ns,3.85335e+06,2.97856e+06,1.294
Patch/twitter,ns,1.54075e+06,870596,1.770
Iterate/twitter,ns,87674.1,61938.2,1.416
ParseFile/twitter,ns,3.45242e+06,1.4135e+06,2.442
GetArray<std::deque<int>>,ns,8218.06,1184.36,6.939
FromBinaryBuffer/cbor / canada,ns,8.49597e+06,2.34162e+06,3.628
Equal/twitter,ns,144862,130449,1.110
ParseStreamValues/numbers,ns,1.91254e+06,380019,5.033
Dump/small_signed_ints / -,ns,1.79973e+07,8.03116e+06,2.241
JsonPointerToString/citm_catalog,ns,6.73543e+06,1.94403e+06,3.465
Copy/twitter,ns,817423,747760,1.093
Diff/canada,ns,3.94496e+07,3.76295e+06,10.484
FromBinaryBuffer/ubjson_optimized / twitter,ns,3.21798e+06,976128,3.297
BinaryToCbor/32,ns,257.519,50.0744,5.143
GetArray<std::set<int>>,ns,59334.9,41926.5,1.415
CopyAssign/citm_catalog,ns,1.74826e+06,1.58974e+06,1.100
ToCbor/jeopardy,ns,7.37854e+07,2.23113e+07,3.307
CopyRing/citm_catalog,ns,1.82401e+06,1.5913e+06,1.146
FromBinaryBuffer/ubjson / canada,ns,8.42613e+06,4.2011e+06,2.006
ToCbor/small_signed_ints,ns,1.03308e+07,2.45559e+06,4.207
DestroyOnly/canada,ns,2.19064e+06,1.40424e+06,1.560
FromBinaryBuffer/ubjson / citm_catalog,ns,3.94636e+06,1.77126e+06,2.228
Dump/jeopardy / -,ns,2.0472e+08,3.20386e+07,6.390
FromBinaryBuffer/msgpack / citm_catalog,ns,3.83422e+06,1.44289e+06,2.657
ParseStringOrdered/citm_catalog,ns,1.13087e+07,1.6737e+06,6.757
ParseString/unsigned_ints,ns,1.19395e+08,3.09133e+07,3.862
Patch/citm_catalog,ns,2.64909e+06,1.68738e+06,1.570
SaxParse/canada,ns,1.30153e+07,3.28081e+06,3.967
ParseString/citm_catalog,ns,7.42082e+06,1.77268e+06,4.186
FromBinaryFile/cbor / canada,ns,1.45988e+07,4.52323e+06,3.228
BinaryToCbor/256,ns,271.407,91.5071,2.966
ParseFILE/canada,ns,5.33064e+07,1.43382e+07,3.718
BinaryToCbor/32768,ns,1549.96,819.172,1.892
Accept/floats,ns,1.14306e+08,2.47177e+07,4.624
FromMsgpack/floats,ns,6.06523e+07,2.81624e+07,2.154
ParseString/small_signed_ints,ns,6.20261e+07,2.25358e+07,2.752
JsonPointerParse/citm_catalog,ns,5.82111e+06,2.2258e+06,2.615
Copy/canada,ns,3.76091e+06,2.89932e+06,1.297
Dump/twitter / 4,ns,1.622e+06,252594,6.421
FromBinaryShape/nested / msgpack,ns,94122.7,35186.9,2.675
FromBinaryBuffer/ubjson_optimized / canada,ns,8.64985e+06,2.85754e+06,3.027
JsonPointerContains/citm_catalog,ns,2.77749e+06,1.26131e+06,2.202
FromMsgpack/small_signed_ints,ns,6.40964e+07,3.42736e+07,1.870
DestroyOnly/twitter,ns,415737,326784,1.272
FromBinaryShape/containers / msgpack,ns,1.42568e+07,3.89814e+06,3.657
FromBinaryShape/scalars / msgpack,ns,2.4908e+07,1.05741e+07,2.356
ToCbor/citm_catalog,ns,1.04281e+06,260809,3.998
GetVectorInt/signed_ints,ns,8.20129e+06,3.48162e+06,2.356
Accept/twitter,ns,2.49861e+06,475874,5.251
Iterate/canada,ns,886750,314350,2.821
ToCbor/unsigned_ints,ns,8.05242e+06,2.80275e+06,2.873
FromBinaryShape/scalars / bjdata,ns,2.49885e+07,1.16227e+07,2.150
BinaryToCbor/2048,ns,331.702,126.762,2.617
BinaryToCbor/512,ns,287.238,102.34,2.807
FlattenOrdered/twitter,ns,5.11231e+07,877575,58.255
Copy/citm_catalog,ns,1.66893e+06,1.50237e+06,1.111
FromBinaryShape/containers / ubjson,ns,1.44781e+07,7.34134e+06,1.972
BinaryToCbor/1024,ns,294.38,106.974,2.752
FromBinaryBuffer/ubjson / twitter,ns,3.27965e+06,973396,3.369
Dump/signed_ints / -,ns,2.3995e+07,1.07412e+07,2.234
FromBinaryShape/scalars / cbor,ns,2.59955e+07,9.92397e+06,2.619
FromBinaryBuffer/cbor / signed_ints,ns,3.6394e+07,1.32489e+07,2.747
CopyOnly/citm_catalog,ns,773309,805343,0.960
Dump/unsigned_ints / -,ns,2.37018e+07,8.11504e+06,2.921
Accept/unsigned_ints,ns,1.16121e+08,2.82332e+07,4.113
FromMsgpack/canada,ns,1.45399e+07,4.55571e+06,3.192
ParseStringOrdered/twitter,ns,4.522e+06,920414,4.913
Dump/twitter / -,ns,1.4183e+06,210619,6.734
BinaryToCbor/64,ns,256.225,82.8609,3.092
JsonPointerParse/twitter,ns,2.48884e+06,1.01455e+06,2.453
GetMap/citm_catalog,ns,3.52983e+06,2.42484e+06,1.456
ToJsonStrings/move,ns,6.05077e+06,3.12298e+06,1.938
FromBinaryBuffer/ubjson / jeopardy,ns,3.73253e+08,1.17316e+08,3.182
FromBinaryShape/nested / ubjson,ns,98047.3,38860.2,2.523
FromBinaryBuffer/bjdata / twitter,ns,3.27193e+06,973613,3.361
FromBinaryShape/nested / cbor,ns,94082.1,35427.1,2.656
ParseFile/citm_catalog,ns,7.97956e+06,2.49852e+06,3.194
FromBinaryFile/ubjson / twitter,ns,1.07792e+07,1.96519e+06,5.485
Dump/citm_catalog / 4,ns,1.96876e+06,421277,4.673
CopyAssign/canada,ns,3.82927e+06,3.00436e+06,1.275
Unflatten/citm_catalog,ns,1.00575e+07,3.55051e+06,2.833
FromBinaryBuffer/bjdata_optimized / twitter,ns,3.21663e+06,972271,3.308
FromBinaryBuffer/cbor / floats,ns,2.94008e+07,8.37306e+06,3.511
Equal/citm_catalog,ns,277722,260273,1.067
FromBinaryShape/containers / cbor,ns,1.43595e+07,4.00487e+06,3.585
Flatten/citm_catalog,ns,6.65353e+06,3.02263e+06,2.201
FromMsgpack/twitter,ns,1.01696e+07,1.51935e+06,6.693
FromBinaryBuffer/bson / citm_catalog,ns,4.00639e+06,1.77129e+06,2.262
FromBinaryBuffer/msgpack / canada,ns,8.59297e+06,2.37267e+06,3.622
"GetArray<std::array<int, 1000>>",ns,2267.99,647.261,3.504
SaxParse/twitter,ns,2.51436e+06,478188,5.258
ParseString/canada,ns,1.52394e+07,4.50457e+06,3.383
ParseFile/canada,ns,1.7916e+07,6.38308e+06,2.807
ParseFile/unsigned_ints,ns,1.23238e+08,4.54686e+07,2.710
FromCborChunkedString/10000 chunks,ns,91163.3,82651.6,1.103
FromBinaryShape/nested / bson,ns,103727,47568.2,2.181
ParseIndented/citm_catalog / 4,ns,7.41873e+06,1.78703e+06,4.151
Dump/unsigned_ints / 4,ns,3.1907e+07,8.51588e+06,3.747
FromBinaryBuffer/bjdata_optimized / canada,ns,8.84399e+06,2.9307e+06,3.018
Accept/canada,ns,1.26696e+07,2.2575e+06,5.612
Accept/citm_catalog,ns,6.27254e+06,821823,7.632
Accept/floats,ns,1.13006e+08,2.40221e+07,4.704
Accept/jeopardy,ns,2.17632e+08,5.58138e+07,3.899
Accept/signed_ints,ns,1.12907e+08,2.85756e+07,3.951
Accept/small_signed_ints,ns,5.54714e+07,1.8795e+07,2.951
Accept/twitter,ns,2.43838e+06,473586,5.149
Accept/unsigned_ints,ns,1.1346e+08,2.74621e+07,4.132
BinaryToCbor/1024,ns,297.407,99.5768,2.987
BinaryToCbor/128,ns,248.439,111.657,2.225
BinaryToCbor/16,ns,242.564,47.7818,5.077
BinaryToCbor/16384,ns,973.398,399.499,2.437
BinaryToCbor/2048,ns,319.624,118.272,2.702
BinaryToCbor/256,ns,266.104,87.3165,3.048
BinaryToCbor/32,ns,247.978,48.4634,5.117
BinaryToCbor/32768,ns,1556.18,800.873,1.943
BinaryToCbor/4096,ns,396.295,162.602,2.437
BinaryToCbor/512,ns,285.575,96.0648,2.973
BinaryToCbor/64,ns,250.377,81.925,3.056
BinaryToCbor/8,ns,244.156,47.288,5.163
BinaryToCbor/8192,ns,504.281,243.911,2.067
Copy/canada,ns,3.63446e+06,2.82189e+06,1.288
Copy/citm_catalog,ns,1.60912e+06,1.44486e+06,1.114
Copy/twitter,ns,795454,713137,1.115
CopyAssign/canada,ns,3.67193e+06,2.83735e+06,1.294
CopyAssign/citm_catalog,ns,1.6226e+06,1.46761e+06,1.106
CopyAssign/twitter,ns,796879,723802,1.101
CopyOnly/canada,ns,1.515e+06,1.48013e+06,1.024
CopyOnly/citm_catalog,ns,735909,779064,0.945
CopyOnly/twitter,ns,396091,394148,1.005
CopyRing/canada,ns,3.6601e+06,2.87591e+06,1.273
CopyRing/citm_catalog,ns,1.67396e+06,1.49385e+06,1.121
CopyRing/twitter,ns,852203,758099,1.124
DestroyOnly/canada,ns,2.11222e+06,1.34774e+06,1.567
DestroyOnly/citm_catalog,ns,877627,665344,1.319
DestroyOnly/twitter,ns,401389,318049,1.262
Diff/canada,ns,3.79246e+07,3.63624e+06,10.430
Diff/citm_catalog,ns,6.67077e+06,1.06338e+06,6.273
Diff/twitter,ns,4.77939e+06,625756,7.638
Dump/canada / -,ns,6.59487e+06,2.2613e+06,2.916
Dump/canada / 4,ns,8.74176e+06,2.97842e+06,2.935
Dump/citm_catalog / -,ns,1.3644e+06,288719,4.726
Dump/citm_catalog / 4,ns,1.89619e+06,413366,4.587
Dump/floats / -,ns,6.19828e+07,2.32629e+07,2.664
Dump/floats / 4,ns,6.99509e+07,2.42733e+07,2.882
Dump/jeopardy / -,ns,1.98646e+08,3.00149e+07,6.618
Dump/jeopardy / 4,ns,2.1766e+08,3.41791e+07,6.368
Dump/signed_ints / -,ns,2.34589e+07,1.04283e+07,2.250
Dump/signed_ints / 4,ns,3.14953e+07,1.10449e+07,2.852
Dump/small_signed_ints / -,ns,1.75382e+07,7.78445e+06,2.253
Dump/small_signed_ints / 4,ns,2.45961e+07,8.6025e+06,2.859
Dump/twitter / -,ns,1.37764e+06,206071,6.685
Dump/twitter / 4,ns,1.55081e+06,245319,6.322
Dump/unsigned_ints / -,ns,2.32299e+07,7.88898e+06,2.945
Dump/unsigned_ints / 4,ns,3.13409e+07,8.36799e+06,3.745
Equal/canada,ns,453424,327263,1.386
Equal/citm_catalog,ns,266993,250294,1.067
Equal/twitter,ns,139736,125746,1.111
Flatten/canada,ns,2.82338e+07,1.08847e+07,2.594
Flatten/citm_catalog,ns,6.30735e+06,3.00812e+06,2.097
Flatten/twitter,ns,3.47237e+06,2.01096e+06,1.727
FlattenOrdered/citm_catalog,ns,2.51117e+08,1.37356e+06,182.822
FlattenOrdered/twitter,ns,4.80472e+07,845690,56.814
FromBinaryBuffer/bjdata / canada,ns,8.06626e+06,4.09343e+06,1.971
FromBinaryBuffer/bjdata / twitter,ns,3.10065e+06,945348,3.280
FromBinaryBuffer/bjdata_optimized / canada,ns,8.55835e+06,2.4023e+06,3.563
FromBinaryBuffer/bjdata_optimized / twitter,ns,3.07733e+06,941691,3.268
FromBinaryBuffer/bson / canada,ns,9.21459e+06,4.26414e+06,2.161
FromBinaryBuffer/bson / citm_catalog,ns,3.83754e+06,1.59156e+06,2.411
FromBinaryBuffer/bson / twitter,ns,3.04999e+06,914475,3.335
FromBinaryBuffer/cbor / canada,ns,8.24692e+06,2.10045e+06,3.926
FromBinaryBuffer/cbor / citm_catalog,ns,3.67001e+06,1.40559e+06,2.611
FromBinaryBuffer/cbor / floats,ns,2.88379e+07,5.54206e+06,5.203
FromBinaryBuffer/cbor / jeopardy,ns,3.55185e+08,1.12369e+08,3.161
FromBinaryBuffer/cbor / signed_ints,ns,3.50877e+07,1.06246e+07,3.302
FromBinaryBuffer/cbor / twitter,ns,3.02882e+06,938435,3.228
FromBinaryBuffer/msgpack / canada,ns,8.1874e+06,2.10574e+06,3.888
FromBinaryBuffer/msgpack / citm_catalog,ns,3.69114e+06,1.38675e+06,2.662
FromBinaryBuffer/msgpack / jeopardy,ns,3.48804e+08,1.07752e+08,3.237
FromBinaryBuffer/msgpack / twitter,ns,3.00307e+06,918949,3.268
FromBinaryBuffer/ubjson / canada,ns,8.07635e+06,4.10295e+06,1.968
FromBinaryBuffer/ubjson / citm_catalog,ns,3.81009e+06,1.73556e+06,2.195
FromBinaryBuffer/ubjson / jeopardy,ns,3.68321e+08,1.13364e+08,3.249
FromBinaryBuffer/ubjson / twitter,ns,3.11341e+06,948522,3.282
FromBinaryBuffer/ubjson_optimized / canada,ns,8.35104e+06,2.36581e+06,3.530
FromBinaryBuffer/ubjson_optimized / twitter,ns,3.06434e+06,938610,3.265
FromBinaryFile/bjdata / twitter,ns,1.01717e+07,1.88288e+06,5.402
FromBinaryFile/bson / twitter,ns,1.00323e+07,1.7507e+06,5.730
FromBinaryFile/cbor / canada,ns,1.40561e+07,4.33636e+06,3.241
FromBinaryFile/cbor / twitter,ns,9.76788e+06,1.50363e+06,6.496
FromBinaryFile/ubjson / canada,ns,1.33567e+07,6.24716e+06,2.138
FromBinaryFile/ubjson / twitter,ns,1.02704e+07,1.88515e+06,5.448
FromBinaryShape/containers / bjdata,ns,1.39728e+07,6.97745e+06,2.003
FromBinaryShape/containers / bson,ns,1.66944e+07,7.57557e+06,2.204
FromBinaryShape/containers / cbor,ns,1.37656e+07,3.92529e+06,3.507
FromBinaryShape/containers / msgpack,ns,1.36795e+07,3.873e+06,3.532
FromBinaryShape/containers / ubjson,ns,1.39033e+07,6.94785e+06,2.001
FromBinaryShape/containers / ubjson_optimized,ns,1.45005e+07,4.4374e+06,3.268
FromBinaryShape/nested / bjdata,ns,94734.2,37641.8,2.517
FromBinaryShape/nested / bson,ns,100822,41783.2,2.413
FromBinaryShape/nested / cbor,ns,92458.3,35251.3,2.623
FromBinaryShape/nested / msgpack,ns,91071.5,34781.9,2.618
FromBinaryShape/nested / ubjson,ns,93738.5,37564.7,2.495
FromBinaryShape/scalars / bjdata,ns,2.41928e+07,1.11786e+07,2.164
FromBinaryShape/scalars / cbor,ns,2.53634e+07,5.77218e+06,4.394
FromBinaryShape/scalars / msgpack,ns,2.40515e+07,5.69592e+06,4.223
FromBinaryShape/scalars / ubjson,ns,2.43914e+07,1.12377e+07,2.171
FromCborChunkedString/10000 chunks,ns,89766.6,81082.5,1.107
FromMsgpack/canada,ns,1.39115e+07,4.36091e+06,3.190
FromMsgpack/citm_catalog,ns,8.78364e+06,2.19066e+06,4.010
FromMsgpack/floats,ns,5.88697e+07,2.716e+07,2.168
FromMsgpack/jeopardy,ns,1.1169e+09,1.78518e+08,6.257
FromMsgpack/signed_ints,ns,6.18791e+07,3.19405e+07,1.937
FromMsgpack/small_signed_ints,ns,6.17411e+07,3.32716e+07,1.856
FromMsgpack/twitter,ns,9.71057e+06,1.43151e+06,6.783
FromMsgpack/unsigned_ints,ns,5.46656e+07,2.73563e+07,1.998
"GetArray<std::array<int, 1000>>",ns,2226.89,628.823,3.541
GetArray<std::deque<int>>,ns,7987.51,1154.72,6.917
GetArray<std::set<int>>,ns,58292.1,41015.3,1.421
GetArray<std::vector<int>>,ns,6583.86,654.896,10.053
GetMap/citm_catalog,ns,3.37868e+06,2.38201e+06,1.418
GetVectorDouble/floats,ns,6.55968e+06,638337,10.276
GetVectorInt/signed_ints,ns,7.93082e+06,3.36672e+06,2.356
Iterate/canada,ns,863030,319612,2.700
Iterate/citm_catalog,ns,294667,165042,1.785
Iterate/twitter,ns,86187.1,61998.9,1.390
JsonPointerAt/citm_catalog,ns,1.79511e+06,1.10986e+06,1.617
JsonPointerAt/twitter,ns,783457,577673,1.356
JsonPointerContains/citm_catalog,ns,2.67654e+06,1.2123e+06,2.208
JsonPointerContains/twitter,ns,1.27533e+06,600836,2.123
JsonPointerParse/citm_catalog,ns,5.63099e+06,2.14907e+06,2.620
JsonPointerParse/twitter,ns,2.41845e+06,981978,2.463
JsonPointerToString/citm_catalog,ns,6.61402e+06,1.85736e+06,3.561
JsonPointerToString/twitter,ns,2.16657e+06,789775,2.743
ParseFILE/canada,ns,5.2126e+07,1.38733e+07,3.757
ParseFILE/citm_catalog,ns,3.4268e+07,7.25874e+06,4.721
ParseFILE/twitter,ns,1.33521e+07,3.2647e+06,4.090
ParseFile/canada,ns,1.72435e+07,6.07983e+06,2.836
ParseFile/citm_catalog,ns,7.64894e+06,2.38641e+06,3.205
ParseFile/floats,ns,1.27024e+08,4.70746e+07,2.698
ParseFile/jeopardy,ns,3.24619e+08,1.58029e+08,2.054
ParseFile/signed_ints,ns,1.24305e+08,4.5808e+07,2.714
ParseFile/small_signed_ints,ns,6.28615e+07,3.16401e+07,1.987
ParseFile/twitter,ns,3.2765e+06,1.34371e+06,2.438
ParseFile/unsigned_ints,ns,1.20124e+08,4.40035e+07,2.730
ParseIndented/canada / 4,ns,3.31005e+07,5.04112e+06,6.566
ParseIndented/citm_catalog / 4,ns,7.11787e+06,1.73917e+06,4.093
ParseIndented/jeopardy / 4,ns,3.33132e+08,1.29074e+08,2.581
ParseIndented/twitter / 4,ns,3.57115e+06,1.09089e+06,3.274
ParseStreamValues/ndjson,ns,6.97026e+06,3.70937e+06,1.879
ParseStreamValues/numbers,ns,1.8966e+06,373744,5.075
ParseString/canada,ns,1.50132e+07,4.35565e+06,3.447
ParseString/citm_catalog,ns,7.26397e+06,1.73446e+06,4.188
ParseString/floats,ns,1.1698e+08,3.02859e+07,3.863
ParseString/jeopardy,ns,3.05106e+08,1.28063e+08,2.382
ParseString/signed_ints,ns,1.19046e+08,3.16406e+07,3.762
ParseString/small_signed_ints,ns,5.97047e+07,2.20096e+07,2.713
ParseString/twitter,ns,3.18359e+06,1.02841e+06,3.096
ParseString/unsigned_ints,ns,1.18153e+08,3.03899e+07,3.888
ParseStringOrdered/canada,ns,1.52432e+07,4.31485e+06,3.533
ParseStringOrdered/citm_catalog,ns,1.07738e+07,1.61487e+06,6.672
ParseStringOrdered/jeopardy,ns,3.58314e+08,1.09968e+08,3.258
ParseStringOrdered/twitter,ns,4.34017e+06,897816,4.834
Patch/canada,ns,9.89382e+06,3.30963e+06,2.989
Patch/citm_catalog,ns,2.49909e+06,1.59354e+06,1.568
Patch/twitter,ns,1.4469e+06,840978,1.720
SaxParse/canada,ns,1.27947e+07,3.20901e+06,3.987
SaxParse/citm_catalog,ns,6.33091e+06,947578,6.681
SaxParse/twitter,ns,2.47342e+06,467446,5.291
ToCbor/canada,ns,1.36222e+06,546687,2.492
ToCbor/citm_catalog,ns,1.0175e+06,254725,3.995
ToCbor/floats,ns,8.88418e+06,1.88474e+06,4.714
ToCbor/jeopardy,ns,7.101e+07,2.10445e+07,3.374
ToCbor/signed_ints,ns,1.1155e+07,2.74959e+06,4.057
ToCbor/small_signed_ints,ns,1.01055e+07,2.36336e+06,4.276
ToCbor/twitter,ns,632231,141279,4.475
ToCbor/unsigned_ints,ns,7.99726e+06,2.748e+06,2.910
ToJsonStrings/copy,ns,5.81667e+06,5.47945e+06,1.062
ToJsonStrings/move,ns,5.79569e+06,3.00408e+06,1.929
Unflatten/canada,ns,4.09596e+07,1.06606e+07,3.842
Unflatten/citm_catalog,ns,9.66875e+06,3.44544e+06,2.806
Unflatten/twitter,ns,4.57166e+06,2.08857e+06,2.189
1 benchmark unit 3.12.0 3.13.0 speedup
2 FromBinaryBuffer/bson / twitter Accept/canada ns 3.20265e+06 1.26696e+07 1.01993e+06 2.2575e+06 3.140 5.612
3 ParseStringOrdered/jeopardy Accept/citm_catalog ns 3.70568e+08 6.27254e+06 1.14254e+08 821823 3.243 7.632
4 JsonPointerToString/twitter Accept/floats ns 2.23197e+06 1.13006e+08 820138 2.40221e+07 2.721 4.704
5 BinaryToCbor/8192 Accept/jeopardy ns 520.964 2.17632e+08 261.625 5.58138e+07 1.991 3.899
6 FromMsgpack/unsigned_ints Accept/signed_ints ns 5.69725e+07 1.12907e+08 2.80231e+07 2.85756e+07 2.033 3.951
7 JsonPointerAt/twitter Accept/small_signed_ints ns 802316 5.54714e+07 609192 1.8795e+07 1.317 2.951
8 CopyOnly/twitter Accept/twitter ns 420973 2.43838e+06 412550 473586 1.020 5.149
9 FlattenOrdered/citm_catalog Accept/unsigned_ints ns 2.56599e+08 1.1346e+08 1.43012e+06 2.74621e+07 179.425 4.132
10 FromBinaryFile/ubjson / canada BinaryToCbor/1024 ns 1.39411e+07 297.407 6.49692e+06 99.5768 2.146 2.987
11 FromBinaryShape/containers / bjdata BinaryToCbor/128 ns 1.43419e+07 248.439 7.40687e+06 111.657 1.936 2.225
12 ParseIndented/jeopardy / 4 BinaryToCbor/16 ns 3.41862e+08 242.564 1.33413e+08 47.7818 2.562 5.077
13 FromMsgpack/signed_ints BinaryToCbor/16384 ns 6.35213e+07 973.398 3.30421e+07 399.499 1.922 2.437
14 FromBinaryShape/containers / bson BinaryToCbor/2048 ns 1.70519e+07 319.624 1.00034e+07 118.272 1.705 2.702
15 BinaryToCbor/128 BinaryToCbor/256 ns 254.611 266.104 116.411 87.3165 2.187 3.048
16 FromBinaryBuffer/cbor / jeopardy BinaryToCbor/32 ns 3.69767e+08 247.978 1.19253e+08 48.4634 3.101 5.117
17 ParseFile/jeopardy BinaryToCbor/32768 ns 3.34742e+08 1556.18 1.63435e+08 800.873 2.048 1.943
18 FromMsgpack/jeopardy BinaryToCbor/4096 ns 1.149e+09 396.295 1.87355e+08 162.602 6.133 2.437
19 FromBinaryFile/cbor / twitter BinaryToCbor/512 ns 1.01844e+07 285.575 1.59657e+06 96.0648 6.379 2.973
20 ToCbor/floats BinaryToCbor/64 ns 8.95826e+06 250.377 1.90206e+06 81.925 4.710 3.056
21 ParseFile/small_signed_ints BinaryToCbor/8 ns 6.45414e+07 244.156 3.24039e+07 47.288 1.992 5.163
22 FromBinaryBuffer/msgpack / twitter BinaryToCbor/8192 ns 3.12989e+06 504.281 955605 243.911 3.275 2.067
23 BinaryToCbor/16384 Copy/canada ns 957.164 3.63446e+06 409.694 2.82189e+06 2.336 1.288
24 FromBinaryFile/bson / twitter Copy/citm_catalog ns 1.05564e+07 1.60912e+06 1.83313e+06 1.44486e+06 5.759 1.114
25 ParseString/twitter Copy/twitter ns 3.26395e+06 795454 1.06141e+06 713137 3.075 1.115
26 Unflatten/twitter CopyAssign/canada ns 4.7901e+06 3.67193e+06 2.16809e+06 2.83735e+06 2.209 1.294
27 BinaryToCbor/8 CopyAssign/citm_catalog ns 250.617 1.6226e+06 48.9987 1.46761e+06 5.115 1.106
28 BinaryToCbor/16 CopyAssign/twitter ns 247.56 796879 49.275 723802 5.024 1.101
29 Dump/small_signed_ints / 4 CopyOnly/canada ns 2.52497e+07 1.515e+06 8.83973e+06 1.48013e+06 2.856 1.024
30 ParseString/jeopardy CopyOnly/citm_catalog ns 3.075e+08 735909 1.31952e+08 779064 2.330 0.945
31 Dump/signed_ints / 4 CopyOnly/twitter ns 3.23205e+07 396091 1.14372e+07 394148 2.826 1.005
32 Flatten/twitter CopyRing/canada ns 3.63682e+06 3.6601e+06 2.08612e+06 2.87591e+06 1.743 1.273
33 FromBinaryBuffer/cbor / twitter CopyRing/citm_catalog ns 3.15556e+06 1.67396e+06 982723 1.49385e+06 3.211 1.121
34 Dump/jeopardy / 4 CopyRing/twitter ns 2.23755e+08 852203 3.58432e+07 758099 6.243 1.124
35 SaxParse/citm_catalog DestroyOnly/canada ns 6.48562e+06 2.11222e+06 996471 1.34774e+06 6.509 1.567
36 JsonPointerAt/citm_catalog DestroyOnly/citm_catalog ns 1.86838e+06 877627 1.17763e+06 665344 1.587 1.319
37 DestroyOnly/citm_catalog DestroyOnly/twitter ns 896147 401389 687189 318049 1.304 1.262
38 FromBinaryShape/scalars / ubjson Diff/canada ns 2.51063e+07 3.79246e+07 1.16857e+07 3.63624e+06 2.148 10.430
39 Unflatten/canada Diff/citm_catalog ns 4.23131e+07 6.67077e+06 1.09708e+07 1.06338e+06 3.857 6.273
40 ParseString/floats Diff/twitter ns 1.20329e+08 4.77939e+06 3.11796e+07 625756 3.859 7.638
41 ParseIndented/canada / 4 Dump/canada / - ns 3.44028e+07 6.59487e+06 5.15746e+06 2.2613e+06 6.670 2.916
42 ParseString/signed_ints Dump/canada / 4 ns 1.21464e+08 8.74176e+06 3.24369e+07 2.97842e+06 3.745 2.935
43 ParseFile/signed_ints Dump/citm_catalog / - ns 1.26509e+08 1.3644e+06 4.77756e+07 288719 2.648 4.726
44 JsonPointerContains/twitter Dump/citm_catalog / 4 ns 1.32359e+06 1.89619e+06 626164 413366 2.114 4.587
45 Dump/floats / 4 Dump/floats / - ns 7.2051e+07 6.19828e+07 2.47002e+07 2.32629e+07 2.917 2.664
46 Dump/floats / - Dump/floats / 4 ns 6.40617e+07 6.99509e+07 2.40284e+07 2.42733e+07 2.666 2.882
47 ToCbor/canada Dump/jeopardy / - ns 1.40569e+06 1.98646e+08 563628 3.00149e+07 2.494 6.618
48 FromBinaryBuffer/bson / canada Dump/jeopardy / 4 ns 9.59257e+06 2.1766e+08 5.45604e+06 3.41791e+07 1.758 6.368
49 ToCbor/twitter Dump/signed_ints / - ns 645140 2.34589e+07 144838 1.04283e+07 4.454 2.250
50 ParseIndented/twitter / 4 Dump/signed_ints / 4 ns 3.66555e+06 3.14953e+07 1.1496e+06 1.10449e+07 3.189 2.852
51 Iterate/citm_catalog Dump/small_signed_ints / - ns 304057 1.75382e+07 186693 7.78445e+06 1.629 2.253
52 FromBinaryBuffer/bjdata / canada Dump/small_signed_ints / 4 ns 8.44949e+06 2.45961e+07 4.18085e+06 8.6025e+06 2.021 2.859
53 ParseStreamValues/ndjson Dump/twitter / - ns 7.13248e+06 1.37764e+06 3.74646e+06 206071 1.904 6.685
54 Diff/twitter Dump/twitter / 4 ns 4.9487e+06 1.55081e+06 655350 245319 7.551 6.322
55 Dump/citm_catalog / - Dump/unsigned_ints / - ns 1.41491e+06 2.32299e+07 296958 7.88898e+06 4.765 2.945
56 FromBinaryShape/nested / bjdata Dump/unsigned_ints / 4 ns 97444.8 3.13409e+07 39017.8 8.36799e+06 2.497 3.745
57 ToJsonStrings/copy Equal/canada ns 6.02335e+06 453424 5.76289e+06 327263 1.045 1.386
58 Dump/canada / 4 Equal/citm_catalog ns 9.0251e+06 266993 3.05796e+06 250294 2.951 1.067
59 CopyRing/twitter Equal/twitter ns 923459 139736 836502 125746 1.104 1.111
60 FromBinaryBuffer/cbor / citm_catalog Flatten/canada ns 3.83804e+06 2.82338e+07 1.48497e+06 1.08847e+07 2.585 2.594
61 FromBinaryFile/bjdata / twitter Flatten/citm_catalog ns 1.07571e+07 6.30735e+06 1.97984e+06 3.00812e+06 5.433 2.097
62 FromBinaryShape/containers / ubjson_optimized Flatten/twitter ns 1.51034e+07 3.47237e+06 4.91673e+06 2.01096e+06 3.072 1.727
63 FromMsgpack/citm_catalog FlattenOrdered/citm_catalog ns 9.2234e+06 2.51117e+08 2.31697e+06 1.37356e+06 3.981 182.822
64 CopyOnly/canada FlattenOrdered/twitter ns 1.57914e+06 4.80472e+07 1.55103e+06 845690 1.018 56.814
65 Equal/canada FromBinaryBuffer/bjdata / canada ns 469788 8.06626e+06 342475 4.09343e+06 1.372 1.971
66 Diff/citm_catalog FromBinaryBuffer/bjdata / twitter ns 7.13383e+06 3.10065e+06 1.10739e+06 945348 6.442 3.280
67 ParseStringOrdered/canada FromBinaryBuffer/bjdata_optimized / canada ns 1.54143e+07 8.55835e+06 4.44693e+06 2.4023e+06 3.466 3.563
68 Flatten/canada FromBinaryBuffer/bjdata_optimized / twitter ns 2.92397e+07 3.07733e+06 1.13461e+07 941691 2.577 3.268
69 Accept/canada FromBinaryBuffer/bson / canada ns 1.28601e+07 9.21459e+06 2.33328e+06 4.26414e+06 5.512 2.161
70 CopyAssign/twitter FromBinaryBuffer/bson / citm_catalog ns 886807 3.83754e+06 758771 1.59156e+06 1.169 2.411
71 BinaryToCbor/4096 FromBinaryBuffer/bson / twitter ns 408.287 3.04999e+06 177.133 914475 2.305 3.335
72 ParseFILE/citm_catalog FromBinaryBuffer/cbor / canada ns 3.554e+07 8.24692e+06 7.57816e+06 2.10045e+06 4.690 3.926
73 ToCbor/signed_ints FromBinaryBuffer/cbor / citm_catalog ns 1.13842e+07 3.67001e+06 2.82539e+06 1.40559e+06 4.029 2.611
74 Patch/canada FromBinaryBuffer/cbor / floats ns 1.03856e+07 2.88379e+07 3.44306e+06 5.54206e+06 3.016 5.203
75 GetArray<std::vector<int>> FromBinaryBuffer/cbor / jeopardy ns 6775.31 3.55185e+08 675.66 1.12369e+08 10.028 3.161
76 Dump/canada / - FromBinaryBuffer/cbor / signed_ints ns 6.83829e+06 3.50877e+07 2.34599e+06 1.06246e+07 2.915 3.302
77 GetVectorDouble/floats FromBinaryBuffer/cbor / twitter ns 6.79501e+06 3.02882e+06 976472 938435 6.959 3.228
78 Accept/citm_catalog FromBinaryBuffer/msgpack / canada ns 6.46161e+06 8.1874e+06 933820 2.10574e+06 6.920 3.888
79 ParseFILE/twitter FromBinaryBuffer/msgpack / citm_catalog ns 1.39242e+07 3.69114e+06 3.37101e+06 1.38675e+06 4.131 2.662
80 FromBinaryBuffer/msgpack / jeopardy ns 3.62314e+08 3.48804e+08 1.12333e+08 1.07752e+08 3.225 3.237
81 ParseFile/floats FromBinaryBuffer/msgpack / twitter ns 1.29093e+08 3.00307e+06 5.07947e+07 918949 2.541 3.268
82 Accept/small_signed_ints FromBinaryBuffer/ubjson / canada ns 5.70115e+07 8.07635e+06 1.92594e+07 4.10295e+06 2.960 1.968
83 Accept/jeopardy FromBinaryBuffer/ubjson / citm_catalog ns 2.18621e+08 3.81009e+06 6.48811e+07 1.73556e+06 3.370 2.195
84 Accept/signed_ints FromBinaryBuffer/ubjson / jeopardy ns 1.17114e+08 3.68321e+08 2.90352e+07 1.13364e+08 4.034 3.249
85 CopyRing/canada FromBinaryBuffer/ubjson / twitter ns 3.85335e+06 3.11341e+06 2.97856e+06 948522 1.294 3.282
86 Patch/twitter FromBinaryBuffer/ubjson_optimized / canada ns 1.54075e+06 8.35104e+06 870596 2.36581e+06 1.770 3.530
87 Iterate/twitter FromBinaryBuffer/ubjson_optimized / twitter ns 87674.1 3.06434e+06 61938.2 938610 1.416 3.265
88 ParseFile/twitter FromBinaryFile/bjdata / twitter ns 3.45242e+06 1.01717e+07 1.4135e+06 1.88288e+06 2.442 5.402
89 GetArray<std::deque<int>> FromBinaryFile/bson / twitter ns 8218.06 1.00323e+07 1184.36 1.7507e+06 6.939 5.730
90 FromBinaryBuffer/cbor / canada FromBinaryFile/cbor / canada ns 8.49597e+06 1.40561e+07 2.34162e+06 4.33636e+06 3.628 3.241
91 Equal/twitter FromBinaryFile/cbor / twitter ns 144862 9.76788e+06 130449 1.50363e+06 1.110 6.496
92 ParseStreamValues/numbers FromBinaryFile/ubjson / canada ns 1.91254e+06 1.33567e+07 380019 6.24716e+06 5.033 2.138
93 Dump/small_signed_ints / - FromBinaryFile/ubjson / twitter ns 1.79973e+07 1.02704e+07 8.03116e+06 1.88515e+06 2.241 5.448
94 JsonPointerToString/citm_catalog FromBinaryShape/containers / bjdata ns 6.73543e+06 1.39728e+07 1.94403e+06 6.97745e+06 3.465 2.003
95 Copy/twitter FromBinaryShape/containers / bson ns 817423 1.66944e+07 747760 7.57557e+06 1.093 2.204
96 Diff/canada FromBinaryShape/containers / cbor ns 3.94496e+07 1.37656e+07 3.76295e+06 3.92529e+06 10.484 3.507
97 FromBinaryBuffer/ubjson_optimized / twitter FromBinaryShape/containers / msgpack ns 3.21798e+06 1.36795e+07 976128 3.873e+06 3.297 3.532
98 BinaryToCbor/32 FromBinaryShape/containers / ubjson ns 257.519 1.39033e+07 50.0744 6.94785e+06 5.143 2.001
99 GetArray<std::set<int>> FromBinaryShape/containers / ubjson_optimized ns 59334.9 1.45005e+07 41926.5 4.4374e+06 1.415 3.268
100 CopyAssign/citm_catalog FromBinaryShape/nested / bjdata ns 1.74826e+06 94734.2 1.58974e+06 37641.8 1.100 2.517
101 ToCbor/jeopardy FromBinaryShape/nested / bson ns 7.37854e+07 100822 2.23113e+07 41783.2 3.307 2.413
102 CopyRing/citm_catalog FromBinaryShape/nested / cbor ns 1.82401e+06 92458.3 1.5913e+06 35251.3 1.146 2.623
103 FromBinaryBuffer/ubjson / canada FromBinaryShape/nested / msgpack ns 8.42613e+06 91071.5 4.2011e+06 34781.9 2.006 2.618
104 ToCbor/small_signed_ints FromBinaryShape/nested / ubjson ns 1.03308e+07 93738.5 2.45559e+06 37564.7 4.207 2.495
105 DestroyOnly/canada FromBinaryShape/scalars / bjdata ns 2.19064e+06 2.41928e+07 1.40424e+06 1.11786e+07 1.560 2.164
106 FromBinaryBuffer/ubjson / citm_catalog FromBinaryShape/scalars / cbor ns 3.94636e+06 2.53634e+07 1.77126e+06 5.77218e+06 2.228 4.394
107 Dump/jeopardy / - FromBinaryShape/scalars / msgpack ns 2.0472e+08 2.40515e+07 3.20386e+07 5.69592e+06 6.390 4.223
108 FromBinaryBuffer/msgpack / citm_catalog FromBinaryShape/scalars / ubjson ns 3.83422e+06 2.43914e+07 1.44289e+06 1.12377e+07 2.657 2.171
109 ParseStringOrdered/citm_catalog FromCborChunkedString/10000 chunks ns 1.13087e+07 89766.6 1.6737e+06 81082.5 6.757 1.107
110 ParseString/unsigned_ints FromMsgpack/canada ns 1.19395e+08 1.39115e+07 3.09133e+07 4.36091e+06 3.862 3.190
111 Patch/citm_catalog FromMsgpack/citm_catalog ns 2.64909e+06 8.78364e+06 1.68738e+06 2.19066e+06 1.570 4.010
112 SaxParse/canada FromMsgpack/floats ns 1.30153e+07 5.88697e+07 3.28081e+06 2.716e+07 3.967 2.168
113 ParseString/citm_catalog FromMsgpack/jeopardy ns 7.42082e+06 1.1169e+09 1.77268e+06 1.78518e+08 4.186 6.257
114 FromBinaryFile/cbor / canada FromMsgpack/signed_ints ns 1.45988e+07 6.18791e+07 4.52323e+06 3.19405e+07 3.228 1.937
115 BinaryToCbor/256 FromMsgpack/small_signed_ints ns 271.407 6.17411e+07 91.5071 3.32716e+07 2.966 1.856
116 ParseFILE/canada FromMsgpack/twitter ns 5.33064e+07 9.71057e+06 1.43382e+07 1.43151e+06 3.718 6.783
117 BinaryToCbor/32768 FromMsgpack/unsigned_ints ns 1549.96 5.46656e+07 819.172 2.73563e+07 1.892 1.998
118 Accept/floats GetArray<std::array<int, 1000>> ns 1.14306e+08 2226.89 2.47177e+07 628.823 4.624 3.541
119 FromMsgpack/floats GetArray<std::deque<int>> ns 6.06523e+07 7987.51 2.81624e+07 1154.72 2.154 6.917
120 ParseString/small_signed_ints GetArray<std::set<int>> ns 6.20261e+07 58292.1 2.25358e+07 41015.3 2.752 1.421
121 JsonPointerParse/citm_catalog GetArray<std::vector<int>> ns 5.82111e+06 6583.86 2.2258e+06 654.896 2.615 10.053
122 Copy/canada GetMap/citm_catalog ns 3.76091e+06 3.37868e+06 2.89932e+06 2.38201e+06 1.297 1.418
123 Dump/twitter / 4 GetVectorDouble/floats ns 1.622e+06 6.55968e+06 252594 638337 6.421 10.276
124 FromBinaryShape/nested / msgpack GetVectorInt/signed_ints ns 94122.7 7.93082e+06 35186.9 3.36672e+06 2.675 2.356
125 FromBinaryBuffer/ubjson_optimized / canada Iterate/canada ns 8.64985e+06 863030 2.85754e+06 319612 3.027 2.700
126 JsonPointerContains/citm_catalog Iterate/citm_catalog ns 2.77749e+06 294667 1.26131e+06 165042 2.202 1.785
127 FromMsgpack/small_signed_ints Iterate/twitter ns 6.40964e+07 86187.1 3.42736e+07 61998.9 1.870 1.390
128 DestroyOnly/twitter JsonPointerAt/citm_catalog ns 415737 1.79511e+06 326784 1.10986e+06 1.272 1.617
129 FromBinaryShape/containers / msgpack JsonPointerAt/twitter ns 1.42568e+07 783457 3.89814e+06 577673 3.657 1.356
130 FromBinaryShape/scalars / msgpack JsonPointerContains/citm_catalog ns 2.4908e+07 2.67654e+06 1.05741e+07 1.2123e+06 2.356 2.208
131 ToCbor/citm_catalog JsonPointerContains/twitter ns 1.04281e+06 1.27533e+06 260809 600836 3.998 2.123
132 GetVectorInt/signed_ints JsonPointerParse/citm_catalog ns 8.20129e+06 5.63099e+06 3.48162e+06 2.14907e+06 2.356 2.620
133 Accept/twitter JsonPointerParse/twitter ns 2.49861e+06 2.41845e+06 475874 981978 5.251 2.463
134 Iterate/canada JsonPointerToString/citm_catalog ns 886750 6.61402e+06 314350 1.85736e+06 2.821 3.561
135 ToCbor/unsigned_ints JsonPointerToString/twitter ns 8.05242e+06 2.16657e+06 2.80275e+06 789775 2.873 2.743
136 FromBinaryShape/scalars / bjdata ParseFILE/canada ns 2.49885e+07 5.2126e+07 1.16227e+07 1.38733e+07 2.150 3.757
137 BinaryToCbor/2048 ParseFILE/citm_catalog ns 331.702 3.4268e+07 126.762 7.25874e+06 2.617 4.721
138 BinaryToCbor/512 ParseFILE/twitter ns 287.238 1.33521e+07 102.34 3.2647e+06 2.807 4.090
139 FlattenOrdered/twitter ParseFile/canada ns 5.11231e+07 1.72435e+07 877575 6.07983e+06 58.255 2.836
140 Copy/citm_catalog ParseFile/citm_catalog ns 1.66893e+06 7.64894e+06 1.50237e+06 2.38641e+06 1.111 3.205
141 FromBinaryShape/containers / ubjson ParseFile/floats ns 1.44781e+07 1.27024e+08 7.34134e+06 4.70746e+07 1.972 2.698
142 BinaryToCbor/1024 ParseFile/jeopardy ns 294.38 3.24619e+08 106.974 1.58029e+08 2.752 2.054
143 FromBinaryBuffer/ubjson / twitter ParseFile/signed_ints ns 3.27965e+06 1.24305e+08 973396 4.5808e+07 3.369 2.714
144 Dump/signed_ints / - ParseFile/small_signed_ints ns 2.3995e+07 6.28615e+07 1.07412e+07 3.16401e+07 2.234 1.987
145 FromBinaryShape/scalars / cbor ParseFile/twitter ns 2.59955e+07 3.2765e+06 9.92397e+06 1.34371e+06 2.619 2.438
146 FromBinaryBuffer/cbor / signed_ints ParseFile/unsigned_ints ns 3.6394e+07 1.20124e+08 1.32489e+07 4.40035e+07 2.747 2.730
147 CopyOnly/citm_catalog ParseIndented/canada / 4 ns 773309 3.31005e+07 805343 5.04112e+06 0.960 6.566
148 Dump/unsigned_ints / - ParseIndented/citm_catalog / 4 ns 2.37018e+07 7.11787e+06 8.11504e+06 1.73917e+06 2.921 4.093
149 Accept/unsigned_ints ParseIndented/jeopardy / 4 ns 1.16121e+08 3.33132e+08 2.82332e+07 1.29074e+08 4.113 2.581
150 FromMsgpack/canada ParseIndented/twitter / 4 ns 1.45399e+07 3.57115e+06 4.55571e+06 1.09089e+06 3.192 3.274
151 ParseStringOrdered/twitter ParseStreamValues/ndjson ns 4.522e+06 6.97026e+06 920414 3.70937e+06 4.913 1.879
152 Dump/twitter / - ParseStreamValues/numbers ns 1.4183e+06 1.8966e+06 210619 373744 6.734 5.075
153 BinaryToCbor/64 ParseString/canada ns 256.225 1.50132e+07 82.8609 4.35565e+06 3.092 3.447
154 JsonPointerParse/twitter ParseString/citm_catalog ns 2.48884e+06 7.26397e+06 1.01455e+06 1.73446e+06 2.453 4.188
155 GetMap/citm_catalog ParseString/floats ns 3.52983e+06 1.1698e+08 2.42484e+06 3.02859e+07 1.456 3.863
156 ToJsonStrings/move ParseString/jeopardy ns 6.05077e+06 3.05106e+08 3.12298e+06 1.28063e+08 1.938 2.382
157 FromBinaryBuffer/ubjson / jeopardy ParseString/signed_ints ns 3.73253e+08 1.19046e+08 1.17316e+08 3.16406e+07 3.182 3.762
158 FromBinaryShape/nested / ubjson ParseString/small_signed_ints ns 98047.3 5.97047e+07 38860.2 2.20096e+07 2.523 2.713
159 FromBinaryBuffer/bjdata / twitter ParseString/twitter ns 3.27193e+06 3.18359e+06 973613 1.02841e+06 3.361 3.096
160 FromBinaryShape/nested / cbor ParseString/unsigned_ints ns 94082.1 1.18153e+08 35427.1 3.03899e+07 2.656 3.888
161 ParseFile/citm_catalog ParseStringOrdered/canada ns 7.97956e+06 1.52432e+07 2.49852e+06 4.31485e+06 3.194 3.533
162 FromBinaryFile/ubjson / twitter ParseStringOrdered/citm_catalog ns 1.07792e+07 1.07738e+07 1.96519e+06 1.61487e+06 5.485 6.672
163 Dump/citm_catalog / 4 ParseStringOrdered/jeopardy ns 1.96876e+06 3.58314e+08 421277 1.09968e+08 4.673 3.258
164 CopyAssign/canada ParseStringOrdered/twitter ns 3.82927e+06 4.34017e+06 3.00436e+06 897816 1.275 4.834
165 Unflatten/citm_catalog Patch/canada ns 1.00575e+07 9.89382e+06 3.55051e+06 3.30963e+06 2.833 2.989
166 FromBinaryBuffer/bjdata_optimized / twitter Patch/citm_catalog ns 3.21663e+06 2.49909e+06 972271 1.59354e+06 3.308 1.568
167 FromBinaryBuffer/cbor / floats Patch/twitter ns 2.94008e+07 1.4469e+06 8.37306e+06 840978 3.511 1.720
168 Equal/citm_catalog SaxParse/canada ns 277722 1.27947e+07 260273 3.20901e+06 1.067 3.987
169 FromBinaryShape/containers / cbor SaxParse/citm_catalog ns 1.43595e+07 6.33091e+06 4.00487e+06 947578 3.585 6.681
170 Flatten/citm_catalog SaxParse/twitter ns 6.65353e+06 2.47342e+06 3.02263e+06 467446 2.201 5.291
171 FromMsgpack/twitter ToCbor/canada ns 1.01696e+07 1.36222e+06 1.51935e+06 546687 6.693 2.492
172 FromBinaryBuffer/bson / citm_catalog ToCbor/citm_catalog ns 4.00639e+06 1.0175e+06 1.77129e+06 254725 2.262 3.995
173 FromBinaryBuffer/msgpack / canada ToCbor/floats ns 8.59297e+06 8.88418e+06 2.37267e+06 1.88474e+06 3.622 4.714
174 GetArray<std::array<int, 1000>> ToCbor/jeopardy ns 2267.99 7.101e+07 647.261 2.10445e+07 3.504 3.374
175 SaxParse/twitter ToCbor/signed_ints ns 2.51436e+06 1.1155e+07 478188 2.74959e+06 5.258 4.057
176 ParseString/canada ToCbor/small_signed_ints ns 1.52394e+07 1.01055e+07 4.50457e+06 2.36336e+06 3.383 4.276
177 ParseFile/canada ToCbor/twitter ns 1.7916e+07 632231 6.38308e+06 141279 2.807 4.475
178 ParseFile/unsigned_ints ToCbor/unsigned_ints ns 1.23238e+08 7.99726e+06 4.54686e+07 2.748e+06 2.710 2.910
179 FromCborChunkedString/10000 chunks ToJsonStrings/copy ns 91163.3 5.81667e+06 82651.6 5.47945e+06 1.103 1.062
180 FromBinaryShape/nested / bson ToJsonStrings/move ns 103727 5.79569e+06 47568.2 3.00408e+06 2.181 1.929
181 ParseIndented/citm_catalog / 4 Unflatten/canada ns 7.41873e+06 4.09596e+07 1.78703e+06 1.06606e+07 4.151 3.842
182 Dump/unsigned_ints / 4 Unflatten/citm_catalog ns 3.1907e+07 9.66875e+06 8.51588e+06 3.44544e+06 3.747 2.806
183 FromBinaryBuffer/bjdata_optimized / canada Unflatten/twitter ns 8.84399e+06 4.57166e+06 2.9307e+06 2.08857e+06 3.018 2.189
@@ -315,4 +315,4 @@ 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,1402.914,2466.859,6056.321,2327.213,1716.548,486.579,209.924,290.378,2287.966,417.106,1309.461,135.437,1437.370,1702.301,177.011,363.994,991.766
316,candidate,,,develop + open pull requests,1404.881,2459.645,5976.210,2313.583,1739.023,477.276,214.858,289.366,2301.972,415.963,1307.406,137.828,1440.710,1714.002,176.462,364.414,971.829
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 develop + open pull requests 1402.914 1404.881 2466.859 2459.645 6056.321 5976.210 2327.213 2313.583 1716.548 1739.023 486.579 477.276 209.924 214.858 290.378 289.366 2287.966 2301.972 417.106 415.963 1309.461 1307.406 135.437 137.828 1437.370 1440.710 1702.301 1714.002 177.011 176.462 363.994 364.414 991.766 971.829
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
+33 -32
View File
@@ -201,22 +201,22 @@ 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.08),
("Parsing", "twitter.json", 3.10),
("Parsing", "citm_catalog.json", 4.19),
("Parsing", "canada.json", 3.38),
("Parsing", "canada.json, indented", 6.67),
("Parsing", "citm, ordered_json", 6.76),
("Parsing", "canada.json", 3.45),
("Parsing", "canada.json, indented", 6.57),
("Parsing", "citm, ordered_json", 6.67),
("Parsing", "twitter, std::ifstream", 2.44),
("Parsing", "citm, FILE*", 4.69),
("Parsing", "citm, accept()", 6.92),
("Writing", "dump() twitter", 6.73),
("Parsing", "citm, FILE*", 4.72),
("Parsing", "citm, accept()", 7.63),
("Writing", "dump() twitter", 6.68),
("Writing", "dump() canada", 2.92),
("Writing", "dump(4) citm", 4.67),
("Writing", "to_cbor() twitter", 4.45),
("Reading CBOR", "twitter, memory", 3.21),
("Reading CBOR", "twitter, FILE*", 6.38),
("Values", "diff() canada", 10.48),
("Values", "iterate canada", 2.82),
("Writing", "dump(4) citm", 4.59),
("Writing", "to_cbor() twitter", 4.47),
("Reading CBOR", "twitter, memory", 3.23),
("Reading CBOR", "twitter, FILE*", 6.50),
("Values", "diff() canada", 10.43),
("Values", "iterate canada", 2.70),
("Values", "copy + destroy citm", 1.11),
("Values", "== citm", 1.07),
]
@@ -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 []", 4102, 9.98),
("diff() 20k objects vs half", 119, 3.85),
("parse() callback, 32k objects", 1334, 11.5),
("operator< nested 24 deep", 62.6, 0.002),
("operator< citm, 10x", 274, 3.81),
("diff() 64k numbers vs []", 4101, 10.1),
("diff() 20k objects vs half", 119, 3.83),
("parse() callback, 32k objects", 1348, 11.5),
("operator< nested 24 deep", 63.6, 0.002),
("operator< citm, 10x", 273, 3.80),
("flatten() citm, ordered_json", 253, 1.37),
("to_bson() 200 deep, 100x", 19.5, 0.566),
("push_back() 100k, diagnostics", 1514, 4.98),
("at(i) 10k, diagnostics", 43.2, 0.081),
("to_bson() 200 deep, 100x", 19.5, 0.357),
("push_back() 100k, diagnostics", 1525, 5.14),
("at(i) 10k, diagnostics", 43.9, 0.080),
]
@@ -453,43 +453,44 @@ def heldout():
for plat, _, _ in HELDOUT:
for f in files:
libs = data[plat][f]
best = min(libs, key=lambda l: libs[l]["us"])
# the fastest other library: below 1 json_document is the fastest, and the distance shows by how much
best = min((l for l in libs if l != "nlohmann json_document"), key=lambda l: libs[l]["us"])
rel[plat, f] = libs["nlohmann json_document"]["us"] / libs[best]["us"]
winner[plat, f] = UC_LIBS.get(best, best)
files.sort(key=lambda f: (rel["x86-gcc", f], rel["mac", f]))
W, L, R = 620, 262, 486
lo, hi = 1.0, 1.55
lo, hi = 0.4, 1.15
X = lambda r: L + (r - lo) / (hi - lo) * (R - L)
top, pitch = 58, 20
axis_y = top + pitch * len(files)
b, desc = [], []
for t in (1.0, 1.1, 1.2, 1.3, 1.4, 1.5):
for t in (0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1):
b.append('<line class="nj-charts-grid" x1="%g" y1="%g" x2="%g" y2="%g"/>' % (X(t), top - 8, X(t), axis_y))
b.append('<text class="nj-charts-tick" x="%g" y="%g">%.1f%s</text>' % (X(t), axis_y + 16, t, TIMES))
b.append('<text class="nj-charts-tick" x="%g" y="%g">json&#95;document&#8217;s time / the fastest library&#8217;s, less is better</text>' % ((L + R) / 2, axis_y + 34))
b.append('<text class="nj-charts-tick" x="%g" y="%g">json&#95;document&#8217;s time / the fastest other library&#8217;s, less is better</text>' % ((L + R) / 2, axis_y + 34))
x = 8
for plat, name, cls in HELDOUT:
b.append('<circle class="%s" cx="%g" cy="14" r="5"/><text class="nj-charts-leg" x="%g" y="18.5">%s</text>' % (cls, x + 5, x + 15, esc_md(name)))
x += 30 + 7.6 * len(name)
b.append('<text class="nj-charts-tick nj-charts-tick--l" x="%g" y="%g">fastest on x86-64</text>' % (R + 14, top - 10))
b.append('<text class="nj-charts-tick nj-charts-tick--l" x="%g" y="%g">next on x86-64</text>' % (R + 14, top - 10))
for i, f in enumerate(files):
y = top + i * pitch + 6
b.append('<text class="nj-charts-rowlabel nj-charts-code" x="%g" y="%g" text-anchor="end">%s</text>' % (L - 10, y + 4, esc_md(f)))
for k, (plat, name, cls) in enumerate(HELDOUT):
r = rel[plat, f]
b.append('<circle class="%s" cx="%.1f" cy="%g" r="4.5"><title>%s, %s: %.2f%s the time of %s</title></circle>'
% (cls, X(min(r, hi)), y - 3.5 + 7 * k, esc_md(f), esc_md(name), r, TIMES, esc_md(winner[plat, f]) if r > 1.0005 else "the fastest (it is the fastest)"))
% (cls, X(max(lo, min(r, hi))), y - 3.5 + 7 * k, esc_md(f), esc_md(name), r, TIMES, esc_md(winner[plat, f])))
w = winner["x86-gcc", f]
b.append('<text class="nj-charts-tick nj-charts-tick--l%s" x="%g" y="%g">%s</text>'
% ("" if w.startswith("nlohmann") else " nj-charts-best", R + 14, y + 4, esc_md("json_document" if w.startswith("nlohmann") else w)))
% (" nj-charts-best" if rel["x86-gcc", f] > 1.0005 else "", R + 14, y + 4, esc_md(w)))
desc.append("%s: Mac %.2f, x86-64 %.2f (%s)" % (f, rel["mac", f], rel["x86-gcc", f], w))
b.append('<line class="nj-charts-ref" x1="%g" y1="%g" x2="%g" y2="%g"/>' % (X(1), top - 8, X(1), axis_y))
b.append('<text class="nj-charts-tick" x="%g" y="%g">fastest</text>' % (X(1), top - 14))
wins = {p: sum(rel[p, f] < 1.0005 for f in files) for p, _, _ in HELDOUT}
b.append('<text class="nj-charts-tick" x="%g" y="%g">as fast as the next</text>' % (X(1), top - 14))
wins = {p: sum(rel[p, f] < 1 for f in files) for p, _, _ in HELDOUT}
print("heldout: json_document fastest on %s" % wins)
write("perf_blog_heldout.svg", W, axis_y + 44, "nj-charts--blog", "nj-blog-heldout",
"Validating 19 files 3.13.0 was not tuned on: json_document's time relative to the fastest library per file",
"Dot plot per file, less is better; 1.0 means json_document is the fastest fully validating library. "
"Validating 19 files 3.13.0 was not tuned on: json_document's time relative to the fastest other library per file",
"Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. "
+ "; ".join(desc) + ".", b)