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