docs: make the comparison of the 3.13.0 post fairer
Three reviews of "How it compares" (a maintainer audit of the harness, a
methodology review, a reader's red team) led to a full rerun on the Mac and
x86-64 with simdjson 5.1.1 and new ways in the harness:
- in-place parses with the copy made before the timer ("(copy untimed)",
never chosen as a library's best) and json_document::parse_copy();
- RapidJSON through StringStream, and with default precision in validate,
which reads no number;
- BENCH_ONLY takes several prefixes.
The post now gives the copy's real cost (11-14 us for twitter.json on the
Mac, not 30), what yyjson gains without it, the run-to-run noise, the LTO
check, the single-file losses that were missing, and qualifies the headline
claim. Every number in the section and Appendix E is recomputed; the
NUL-byte remark moved out of the body.
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
No files matched your search
@@ -1,6 +1,6 @@
|
||||
<svg class="nj-fig nj-charts nj-charts--blog" viewBox="0 0 620 482" role="img" aria-labelledby="nj-blog-heldout nj-blog-heldout-d" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="nj-blog-heldout">Validating 19 files 3.13.0 was not tuned on: json_document'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.67, x86-64 0.44 (serde_json (Rust)); marine_ik: Mac 0.59, x86-64 0.62 (Boost.J​SON); semanticscholar-corpus: Mac 0.79, x86-64 0.65 (sonic-rs (Rust)); gsoc-2018: Mac 0.61, x86-64 0.65 (Boost.J​SON); twitter_api_compact_response: Mac 0.91, x86-64 0.70 (simdjson); twitterescaped: Mac 0.94, x86-64 0.77 (simdjson); github_events: Mac 0.82, x86-64 0.77 (simdjson); numbers: Mac 0.69, x86-64 0.77 (Boost.J​SON); twitter_api_response: Mac 0.95, x86-64 0.81 (simdjson); google_maps_api_compact_response: Mac 0.84, x86-64 0.81 (yyjson); twitter_timeline: Mac 0.97, x86-64 0.82 (yyjson); update-center: Mac 0.89, x86-64 0.83 (simdjson); random: Mac 0.82, x86-64 0.88 (simdjson); instruments: Mac 0.94, x86-64 0.90 (simdjson); apache_builds: Mac 1.11, x86-64 0.90 (simdjson); repeat: Mac 0.65, x86-64 0.91 (simdjson); mesh.pretty: Mac 0.85, x86-64 0.92 (Boost.J​SON); tree-pretty: Mac 0.95, x86-64 0.94 (simdjson); google_maps_api_response: Mac 0.91, x86-64 0.99 (simdjson).</desc>
|
||||
<desc id="nj-blog-heldout-d">Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. mesh: Mac 0.68, x86-64 0.44 (serde_json (Rust)); marine_ik: Mac 0.59, x86-64 0.64 (Boost.J​SON); semanticscholar-corpus: Mac 0.79, x86-64 0.65 (sonic-rs (Rust)); gsoc-2018: Mac 0.60, x86-64 0.66 (Boost.J​SON); twitter_api_compact_response: Mac 0.91, x86-64 0.70 (simdjson); twitterescaped: Mac 0.93, x86-64 0.76 (simdjson); numbers: Mac 0.67, x86-64 0.77 (Boost.J​SON); github_events: Mac 0.79, x86-64 0.77 (simdjson); update-center: Mac 0.88, x86-64 0.79 (simdjson); twitter_timeline: Mac 0.97, x86-64 0.80 (yyjson); twitter_api_response: Mac 0.93, x86-64 0.81 (simdjson); google_maps_api_compact_response: Mac 0.86, x86-64 0.81 (yyjson); repeat: Mac 0.65, x86-64 0.82 (simdjson); random: Mac 0.81, x86-64 0.88 (simdjson); apache_builds: Mac 1.08, x86-64 0.90 (simdjson); instruments: Mac 0.90, x86-64 0.92 (simdjson); mesh.pretty: Mac 0.86, x86-64 0.92 (Boost.J​SON); tree-pretty: Mac 0.93, x86-64 0.96 (simdjson); google_maps_api_response: Mac 0.93, x86-64 0.99 (simdjson).</desc>
|
||||
<line class="nj-charts-grid" x1="262" y1="50" x2="262" y2="438"/>
|
||||
<text class="nj-charts-tick" x="262" y="454">0.4×</text>
|
||||
<line class="nj-charts-grid" x1="291.867" y1="50" x2="291.867" y2="438"/>
|
||||
@@ -22,80 +22,80 @@
|
||||
<circle class="nj-charts-ojson-dot" cx="134.2" cy="14" r="5"/><text class="nj-charts-leg" x="144.2" y="18.5">x86-64, G​CC 16.2</text>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="48">next on x86-64</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="68" text-anchor="end">mesh</text>
|
||||
<circle class="nj-charts-json-dot" cx="342.4" cy="60.5" r="4.5"><title>mesh, Apple M1 Max: 0.67× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="273.4" cy="67.5" r="4.5"><title>mesh, x86-64, G​CC 16.2: 0.44× the time of serde_json (Rust)</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="344.8" cy="60.5" r="4.5"><title>mesh, Apple M1 Max: 0.68× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="273.6" cy="67.5" r="4.5"><title>mesh, x86-64, G​CC 16.2: 0.44× the time of serde_json (Rust)</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="68">serde_json (Rust)</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="88" text-anchor="end">marine_ik</text>
|
||||
<circle class="nj-charts-json-dot" cx="319.7" cy="80.5" r="4.5"><title>marine_ik, Apple M1 Max: 0.59× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="327.8" cy="87.5" r="4.5"><title>marine_ik, x86-64, G​CC 16.2: 0.62× the time of Boost.J​SON</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="319.5" cy="80.5" r="4.5"><title>marine_ik, Apple M1 Max: 0.59× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="334.2" cy="87.5" r="4.5"><title>marine_ik, x86-64, G​CC 16.2: 0.64× the time of Boost.J​SON</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="88">Boost.J​SON</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="108" text-anchor="end">semanticscholar-corpus</text>
|
||||
<circle class="nj-charts-json-dot" cx="377.8" cy="100.5" r="4.5"><title>semanticscholar-corpus, Apple M1 Max: 0.79× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="336.7" cy="107.5" r="4.5"><title>semanticscholar-corpus, x86-64, G​CC 16.2: 0.65× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="377.9" cy="100.5" r="4.5"><title>semanticscholar-corpus, Apple M1 Max: 0.79× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="336.0" cy="107.5" r="4.5"><title>semanticscholar-corpus, x86-64, G​CC 16.2: 0.65× the time of sonic-rs (Rust)</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="108">sonic-rs (Rust)</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="128" text-anchor="end">gsoc-2018</text>
|
||||
<circle class="nj-charts-json-dot" cx="326.1" cy="120.5" r="4.5"><title>gsoc-2018, Apple M1 Max: 0.61× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="337.2" cy="127.5" r="4.5"><title>gsoc-2018, x86-64, G​CC 16.2: 0.65× the time of Boost.J​SON</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="322.9" cy="120.5" r="4.5"><title>gsoc-2018, Apple M1 Max: 0.60× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="338.8" cy="127.5" r="4.5"><title>gsoc-2018, x86-64, G​CC 16.2: 0.66× the time of Boost.J​SON</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="128">Boost.J​SON</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="148" text-anchor="end">twitter_api_compact_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="414.0" cy="140.5" r="4.5"><title>twitter_api_compact_response, Apple M1 Max: 0.91× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="352.1" cy="147.5" r="4.5"><title>twitter_api_compact_response, x86-64, G​CC 16.2: 0.70× 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">twitterescaped</text>
|
||||
<circle class="nj-charts-json-dot" cx="424.5" cy="160.5" r="4.5"><title>twitterescaped, Apple M1 Max: 0.94× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="371.3" cy="167.5" r="4.5"><title>twitterescaped, x86-64, G​CC 16.2: 0.77× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="419.5" cy="160.5" r="4.5"><title>twitterescaped, Apple M1 Max: 0.93× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="370.8" cy="167.5" r="4.5"><title>twitterescaped, x86-64, G​CC 16.2: 0.76× 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">github_events</text>
|
||||
<circle class="nj-charts-json-dot" cx="386.9" cy="180.5" r="4.5"><title>github_events, Apple M1 Max: 0.82× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="371.9" cy="187.5" r="4.5"><title>github_events, x86-64, G​CC 16.2: 0.77× 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="348.0" cy="200.5" r="4.5"><title>numbers, Apple M1 Max: 0.69× the time of Boost.J​SON</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="373.1" cy="207.5" r="4.5"><title>numbers, x86-64, G​CC 16.2: 0.77× the time of Boost.J​SON</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="208">Boost.J​SON</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="228" text-anchor="end">twitter_api_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="427.0" cy="220.5" r="4.5"><title>twitter_api_response, Apple M1 Max: 0.95× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="384.1" cy="227.5" r="4.5"><title>twitter_api_response, x86-64, G​CC 16.2: 0.81× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="188" text-anchor="end">numbers</text>
|
||||
<circle class="nj-charts-json-dot" cx="343.3" cy="180.5" r="4.5"><title>numbers, Apple M1 Max: 0.67× the time of Boost.J​SON</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="373.1" cy="187.5" r="4.5"><title>numbers, x86-64, G​CC 16.2: 0.77× the time of Boost.J​SON</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="188">Boost.J​SON</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="208" text-anchor="end">github_events</text>
|
||||
<circle class="nj-charts-json-dot" cx="379.5" cy="200.5" r="4.5"><title>github_events, Apple M1 Max: 0.79× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="373.4" cy="207.5" r="4.5"><title>github_events, x86-64, G​CC 16.2: 0.77× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="208">simdjson</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="405.1" cy="220.5" r="4.5"><title>update-center, Apple M1 Max: 0.88× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="377.7" cy="227.5" r="4.5"><title>update-center, x86-64, G​CC 16.2: 0.79× 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">google_maps_api_compact_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="394.5" cy="240.5" r="4.5"><title>google_maps_api_compact_response, Apple M1 Max: 0.84× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="384.2" cy="247.5" r="4.5"><title>google_maps_api_compact_response, x86-64, G​CC 16.2: 0.81× the time of yyjson</title></circle>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="248" text-anchor="end">twitter_timeline</text>
|
||||
<circle class="nj-charts-json-dot" cx="431.6" cy="240.5" r="4.5"><title>twitter_timeline, Apple M1 Max: 0.97× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="381.3" cy="247.5" r="4.5"><title>twitter_timeline, x86-64, G​CC 16.2: 0.80× the time of yyjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="248">yyjson</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="268" text-anchor="end">twitter_timeline</text>
|
||||
<circle class="nj-charts-json-dot" cx="431.6" cy="260.5" r="4.5"><title>twitter_timeline, Apple M1 Max: 0.97× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="388.4" cy="267.5" r="4.5"><title>twitter_timeline, x86-64, G​CC 16.2: 0.82× 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">update-center</text>
|
||||
<circle class="nj-charts-json-dot" cx="409.1" cy="280.5" r="4.5"><title>update-center, Apple M1 Max: 0.89× the time of sonic-rs (Rust)</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="391.0" cy="287.5" r="4.5"><title>update-center, x86-64, G​CC 16.2: 0.83× 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">random</text>
|
||||
<circle class="nj-charts-json-dot" cx="387.2" cy="300.5" r="4.5"><title>random, Apple M1 Max: 0.82× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="404.0" cy="307.5" r="4.5"><title>random, x86-64, G​CC 16.2: 0.88× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="268" text-anchor="end">twitter_api_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="420.4" cy="260.5" r="4.5"><title>twitter_api_response, Apple M1 Max: 0.93× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="384.1" cy="267.5" r="4.5"><title>twitter_api_response, x86-64, G​CC 16.2: 0.81× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="268">simdjson</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="288" text-anchor="end">google_maps_api_compact_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="399.2" cy="280.5" r="4.5"><title>google_maps_api_compact_response, Apple M1 Max: 0.86× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="384.2" cy="287.5" r="4.5"><title>google_maps_api_compact_response, x86-64, G​CC 16.2: 0.81× the time of yyjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="288">yyjson</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="336.7" cy="300.5" r="4.5"><title>repeat, Apple M1 Max: 0.65× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="388.2" cy="307.5" r="4.5"><title>repeat, x86-64, G​CC 16.2: 0.82× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="308">simdjson</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="328" text-anchor="end">instruments</text>
|
||||
<circle class="nj-charts-json-dot" cx="422.0" cy="320.5" r="4.5"><title>instruments, Apple M1 Max: 0.94× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="410.8" cy="327.5" r="4.5"><title>instruments, x86-64, G​CC 16.2: 0.90× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="328" text-anchor="end">random</text>
|
||||
<circle class="nj-charts-json-dot" cx="383.7" cy="320.5" r="4.5"><title>random, Apple M1 Max: 0.81× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="404.9" cy="327.5" r="4.5"><title>random, x86-64, G​CC 16.2: 0.88× 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">apache_builds</text>
|
||||
<circle class="nj-charts-json-dot" cx="474.6" cy="340.5" r="4.5"><title>apache_builds, Apple M1 Max: 1.11× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="412.3" cy="347.5" r="4.5"><title>apache_builds, x86-64, G​CC 16.2: 0.90× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="463.6" cy="340.5" r="4.5"><title>apache_builds, Apple M1 Max: 1.08× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="412.4" cy="347.5" r="4.5"><title>apache_builds, x86-64, G​CC 16.2: 0.90× 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× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="414.5" cy="367.5" r="4.5"><title>repeat, x86-64, G​CC 16.2: 0.91× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="368" text-anchor="end">instruments</text>
|
||||
<circle class="nj-charts-json-dot" cx="412.5" cy="360.5" r="4.5"><title>instruments, Apple M1 Max: 0.90× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="416.2" cy="367.5" r="4.5"><title>instruments, x86-64, G​CC 16.2: 0.92× 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="396.5" cy="380.5" r="4.5"><title>mesh.pretty, Apple M1 Max: 0.85× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="417.8" cy="387.5" r="4.5"><title>mesh.pretty, x86-64, G​CC 16.2: 0.92× the time of Boost.J​SON</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="398.9" cy="380.5" r="4.5"><title>mesh.pretty, Apple M1 Max: 0.86× the time of Glaze</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="418.6" cy="387.5" r="4.5"><title>mesh.pretty, x86-64, G​CC 16.2: 0.92× the time of Boost.J​SON</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="388">Boost.J​SON</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-code" x="252" y="408" text-anchor="end">tree-pretty</text>
|
||||
<circle class="nj-charts-json-dot" cx="425.2" cy="400.5" r="4.5"><title>tree-pretty, Apple M1 Max: 0.95× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="424.2" cy="407.5" r="4.5"><title>tree-pretty, x86-64, G​CC 16.2: 0.94× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="420.1" cy="400.5" r="4.5"><title>tree-pretty, Apple M1 Max: 0.93× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="429.3" cy="407.5" r="4.5"><title>tree-pretty, x86-64, G​CC 16.2: 0.96× 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">google_maps_api_response</text>
|
||||
<circle class="nj-charts-json-dot" cx="415.8" cy="420.5" r="4.5"><title>google_maps_api_response, Apple M1 Max: 0.91× the time of yyjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="436.9" cy="427.5" r="4.5"><title>google_maps_api_response, x86-64, G​CC 16.2: 0.99× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-json-dot" cx="419.0" cy="420.5" r="4.5"><title>google_maps_api_response, Apple M1 Max: 0.93× the time of simdjson</title></circle>
|
||||
<circle class="nj-charts-ojson-dot" cx="439.0" cy="427.5" r="4.5"><title>google_maps_api_response, x86-64, G​CC 16.2: 0.99× the time of simdjson</title></circle>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="500" y="428">simdjson</text>
|
||||
<line class="nj-charts-ref" x1="441.2" y1="50" x2="441.2" y2="438"/>
|
||||
<text class="nj-charts-tick" x="441.2" y="44">as fast as the next</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@@ -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 (0.85 doing less, N); nlohmann/json json_document minify: 1.00 (0.85 doing less, N); nlohmann/json json_document write: 1.00 (0.70 doing less, N); yyjson validate: 1.42; yyjson sum: 1.14; yyjson select: 1.30; yyjson edit: 1.49; yyjson minify: 1.26 (1.19 doing less, N); yyjson write: 1.26; simdjson validate: 1.52; simdjson sum: 1.20; simdjson select: 1.36 (0.75 doing less, P); simdjson edit: n/a; simdjson minify: 2.06 (0.18 doing less, P); simdjson write: 3.27; sonic-rs (Rust) validate: 1.94; sonic-rs (Rust) sum: 1.53; sonic-rs (Rust) select: 1.84; sonic-rs (Rust) edit: 2.10; sonic-rs (Rust) minify: 1.93; sonic-rs (Rust) write: 2.39; sonic-cpp validate: no fully validating way (2.55 doing less, U); sonic-cpp sum: no fully validating way (1.85 doing less, U); sonic-cpp select: no fully validating way (2.33 doing less, U); sonic-cpp edit: no fully validating way (1.71 doing less, U); sonic-cpp minify: no fully validating way (2.04 doing less, U); sonic-cpp write: 1.63; simd-json (Rust) validate: 2.08; simd-json (Rust) sum: 1.62; simd-json (Rust) select: 2.39; simd-json (Rust) edit: 2.85; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 3.12; Glaze validate: 2.05; Glaze sum: 3.86; Glaze select: 1.80 (0.82 doing less, P); Glaze edit: 4.42; Glaze minify: 5.19 (1.06 doing less, P); Glaze write: 2.24; Boost.J​SON validate: 2.59; Boost.J​SON sum: 1.98; Boost.J​SON select: 3.29; Boost.J​SON edit: 3.25; Boost.J​SON minify: 3.87; Boost.J​SON write: 3.75; serde_json (Rust) validate: 2.48 (2.24 doing less, U); serde_json (Rust) sum: 2.58; serde_json (Rust) select: 2.41 (2.25 doing less, U); serde_json (Rust) edit: 5.02; serde_json (Rust) minify: 5.86; serde_json (Rust) write: 2.97; nlohmann/json json validate: 2.74; nlohmann/json json sum: 1.96; nlohmann/json json select: 6.91; nlohmann/json json edit: 3.72; nlohmann/json json minify: 4.91; nlohmann/json json write: 2.08; RapidJSON validate: 6.78 (4.40 doing less, U); RapidJSON sum: 4.46 (3.01 doing less, U); RapidJSON select: 6.01 (3.95 doing less, U); RapidJSON edit: 4.88 (3.84 doing less, U); RapidJSON minify: 4.89 (4.28 doing less, U N); RapidJSON write: 5.87.</desc>
|
||||
<desc id="nj-blog-uc-mac-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.85 doing less, N); nlohmann/json json_document minify: 1.00 (0.85 doing less, N); nlohmann/json json_document write: 1.00 (0.71 doing less, N); yyjson validate: 1.37; yyjson sum: 1.11; yyjson select: 1.25; yyjson edit: 1.45; yyjson minify: 1.23 (1.16 doing less, N); yyjson write: 1.26; simdjson validate: 1.52; simdjson sum: 1.20; simdjson select: 1.33 (0.75 doing less, P); simdjson edit: n/a; simdjson minify: 1.73 (0.18 doing less, P); simdjson write: 2.41; sonic-rs (Rust) validate: 1.93; sonic-rs (Rust) sum: 1.53; sonic-rs (Rust) select: 1.83; sonic-rs (Rust) edit: 2.08; sonic-rs (Rust) minify: 1.93; sonic-rs (Rust) write: 2.38; sonic-cpp validate: no fully validating way (2.53 doing less, U); sonic-cpp sum: no fully validating way (1.86 doing less, U); sonic-cpp select: no fully validating way (2.31 doing less, U); sonic-cpp edit: no fully validating way (1.68 doing less, U); sonic-cpp minify: no fully validating way (2.03 doing less, U); sonic-cpp write: 1.59; simd-json (Rust) validate: 2.07; simd-json (Rust) sum: 1.62; simd-json (Rust) select: 2.38; simd-json (Rust) edit: 2.84; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 3.10; Glaze validate: 2.04; Glaze sum: 3.85; Glaze select: 1.79 (0.82 doing less, P); Glaze edit: 4.41; Glaze minify: 5.19 (1.03 doing less, P); Glaze write: 2.23; Boost.J​SON validate: 2.56; Boost.J​SON sum: 1.99; Boost.J​SON select: 3.27; Boost.J​SON edit: 3.21; Boost.J​SON minify: 3.87; Boost.J​SON write: 3.75; serde_json (Rust) validate: 2.46 (2.23 doing less, U); serde_json (Rust) sum: 2.59; serde_json (Rust) select: 2.39 (2.24 doing less, U); serde_json (Rust) edit: 4.99; serde_json (Rust) minify: 5.85; serde_json (Rust) write: 2.95; nlohmann/json json validate: 2.71; nlohmann/json json sum: 1.96; nlohmann/json json select: 6.87; nlohmann/json json edit: 3.73; nlohmann/json json minify: 4.89; nlohmann/json json write: 2.10; RapidJSON validate: 4.72 (3.09 doing less, U); RapidJSON sum: 4.15 (2.85 doing less, U); RapidJSON select: 5.91 (3.82 doing less, U); RapidJSON edit: 4.82 (3.77 doing less, U); RapidJSON minify: 4.86 (3.60 doing less, U N); RapidJSON write: 5.88.</desc>
|
||||
<text class="nj-charts-tick" x="270" y="34">validate</text>
|
||||
<text class="nj-charts-tick" x="362" y="34">sum</text>
|
||||
<text class="nj-charts-tick" x="454" y="34">select</text>
|
||||
@@ -8,89 +8,89 @@
|
||||
<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 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 169 µs citm_catalog.json: 313 µs canada.json: 868 µs jeopardy.json: 20,764 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 170 µs citm_catalog.json: 313 µs canada.json: 886 µs jeopardy.json: 20,873 µ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 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 227 µs citm_catalog.json: 482 µs canada.json: 1,790 µs jeopardy.json: 29,450 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 224 µs citm_catalog.json: 485 µs canada.json: 1,816 µs jeopardy.json: 28,987 µ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 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 186 µs citm_catalog.json: 363 µs canada.json: 928 µs jeopardy.json: 25,032 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 184 µs citm_catalog.json: 363 µs canada.json: 956 µs jeopardy.json: 24,991 µ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 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 283 µs citm_catalog.json: 563 µs canada.json: 2,741 µs jeopardy.json: 58,470 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 291 µs citm_catalog.json: 560 µs canada.json: 2,765 µs jeopardy.json: 58,057 µs">
|
||||
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.85× the time of the fastest fully validating library twitter.json: 283 µs · editable (validates fully) citm_catalog.json: 560 µs · editable (source numbers) (validates fully) canada.json: 1,448 µs · editable (source numbers) (validates fully) jeopardy.json: 58,344 µs · editable (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.85× the time of the fastest fully validating library twitter.json: 283 µs · editable (source numbers) (validates fully) citm_catalog.json: 560 µs · editable (validates fully) canada.json: 1,484 µs · editable (source numbers) (validates fully) jeopardy.json: 57,635 µs · editable (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.85</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 261 µs citm_catalog.json: 493 µs canada.json: 2,550 µs jeopardy.json: 37,888 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 259 µs citm_catalog.json: 493 µs canada.json: 2,582 µs jeopardy.json: 37,882 µs">
|
||||
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.85× the time of the fastest fully validating library twitter.json: 259 µs · parse + dump (source numbers) (validates fully) citm_catalog.json: 493 µs · parse + dump (source numbers) (validates fully) canada.json: 1,328 µs · parse + dump (source numbers) (validates fully) jeopardy.json: 37,888 µs · parse + dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.85× the time of the fastest fully validating library twitter.json: 252 µs · parse + dump (source numbers) (validates fully) citm_catalog.json: 493 µs · parse + dump (validates fully) canada.json: 1,360 µs · parse + dump (source numbers) (validates fully) jeopardy.json: 37,817 µs · parse + dump (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.85</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 72.9 µs citm_catalog.json: 133 µs canada.json: 1,622 µs jeopardy.json: 14,735 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 74.3 µs citm_catalog.json: 134 µs canada.json: 1,621 µs jeopardy.json: 14,757 µs">
|
||||
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.70× the time of the fastest fully validating library twitter.json: 72.9 µs · dump (validates fully) citm_catalog.json: 133 µs · dump (validates fully) canada.json: 400 µs · dump (source numbers) (validates fully) jeopardy.json: 14,732 µs · dump (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.71× the time of the fastest fully validating library twitter.json: 74.3 µs · dump (validates fully) citm_catalog.json: 134 µs · dump (validates fully) canada.json: 401 µs · dump (source numbers) (validates fully) jeopardy.json: 14,757 µs · dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.70</text>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.71</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate 1.42× the time of the fastest library (fully validating) twitter.json: 178 µs · read citm_catalog.json: 475 µs · read canada.json: 1,496 µs · insitu (copy) jeopardy.json: 30,679 µs · read (raw numbers) (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 1.37× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 172 µs citm_catalog.json: 451 µs canada.json: 1,457 µs jeopardy.json: 30,240 µs">
|
||||
<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.42</text>
|
||||
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.37</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.14× the time of the fastest library (fully validating) twitter.json: 229 µs · insitu (copy) citm_catalog.json: 576 µs · read canada.json: 1,941 µs · read jeopardy.json: 37,855 µs · read (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 1.11× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 219 µs citm_catalog.json: 551 µs canada.json: 1,906 µs jeopardy.json: 37,512 µs">
|
||||
<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.11</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select 1.30× the time of the fastest library (fully validating) twitter.json: 191 µs · insitu (copy) citm_catalog.json: 476 µs · read canada.json: 1,490 µs · insitu (copy) jeopardy.json: 33,078 µs · read (raw numbers) (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 1.25× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 178 µs citm_catalog.json: 456 µs canada.json: 1,461 µs jeopardy.json: 32,514 µs">
|
||||
<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.30</text>
|
||||
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.25</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit 1.49× the time of the fastest library (fully validating) twitter.json: 441 µs · mut copy citm_catalog.json: 904 µs · insitu (copy) + mut copy canada.json: 3,700 µs · mut copy jeopardy.json: 85,478 µs · insitu (copy) + mut copy (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 1.45× the time of the fastest library (fully validating) way: insitu (copy untimed) + mut copy twitter.json: 427 µs citm_catalog.json: 882 µs canada.json: 3,642 µs jeopardy.json: 84,239 µs">
|
||||
<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>
|
||||
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.45</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify 1.26× the time of the fastest library (fully validating) twitter.json: 298 µs · read + write citm_catalog.json: 641 µs · insitu (copy) + write canada.json: 3,219 µs · insitu (copy) + write jeopardy.json: 51,099 µs · read + write (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 1.23× the time of the fastest library (fully validating) way: insitu (copy untimed) + write twitter.json: 279 µs citm_catalog.json: 625 µs canada.json: 3,196 µs jeopardy.json: 50,821 µs">
|
||||
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.26</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.23</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less 1.19× the time of the fastest fully validating library twitter.json: 298 µs · read + write (validates fully) citm_catalog.json: 641 µs · insitu (copy) + write (validates fully) canada.json: 2,527 µs · read (raw numbers) + write (validates fully) jeopardy.json: 51,099 µs · read + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW) (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, checking less 1.16× the time of the fastest fully validating library twitter.json: 279 µs · insitu (copy untimed) + write (validates fully) citm_catalog.json: 625 µs · insitu (copy untimed) + write (validates fully) canada.json: 2,550 µs · read (raw numbers) + write (validates fully) jeopardy.json: 50,821 µs · insitu (copy untimed) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)">
|
||||
<rect class="nj-heat-1" x="639" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.19</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.16</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.26× the time of the fastest library (fully validating) way: write twitter.json: 103 µs citm_catalog.json: 165 µs canada.json: 1,719 µs jeopardy.json: 19,993 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.26× the time of the fastest library (fully validating) way: write twitter.json: 103 µs citm_catalog.json: 169 µs canada.json: 1,731 µs jeopardy.json: 20,087 µ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.26</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">simdjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate 1.52× the time of the fastest library (fully validating) way: D​OM twitter.json: 205 µs citm_catalog.json: 459 µs canada.json: 1,890 µs jeopardy.json: 28,911 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate 1.52× the time of the fastest library (fully validating) way: D​OM twitter.json: 212 µs citm_catalog.json: 452 µs canada.json: 1,888 µs jeopardy.json: 28,843 µs">
|
||||
<rect class="nj-heat-2" x="225" y="117" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="138" text-anchor="middle">1.52</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.20× the time of the fastest library (fully validating) twitter.json: 244 µs · D​OM citm_catalog.json: 588 µs · On-Demand canada.json: 2,387 µs · On-Demand jeopardy.json: 35,389 µs · D​OM">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.20× the time of the fastest library (fully validating) twitter.json: 249 µs · D​OM citm_catalog.json: 571 µs · On-Demand canada.json: 2,374 µs · On-Demand jeopardy.json: 35,111 µs · D​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.20</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.36× the time of the fastest library (fully validating) way: D​OM twitter.json: 202 µs citm_catalog.json: 454 µs canada.json: 1,886 µs jeopardy.json: 30,892 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.33× the time of the fastest library (fully validating) way: D​OM twitter.json: 196 µs citm_catalog.json: 450 µs canada.json: 1,886 µs jeopardy.json: 30,504 µ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.36</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="138" text-anchor="middle">1.33</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less 0.75× the time of the fastest fully validating library twitter.json: 128 µs · On-Demand structs citm_catalog.json: 353 µs · On-Demand canada.json: 566 µs · On-Demand (key selectors) jeopardy.json: 19,832 µs · On-Demand 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 0.75× the time of the fastest fully validating library twitter.json: 127 µs · On-Demand structs citm_catalog.json: 354 µs · On-Demand canada.json: 566 µs · On-Demand (key selectors) jeopardy.json: 19,562 µs · On-Demand 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 nj-charts-cell--small" x="476.5" y="145" text-anchor="middle">P</text>
|
||||
@@ -99,268 +99,268 @@
|
||||
<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 2.06× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 574 µs citm_catalog.json: 928 µs canada.json: 5,038 µs jeopardy.json: 82,978 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify 1.73× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 423 µs citm_catalog.json: 848 µs canada.json: 5,120 µs jeopardy.json: 61,059 µ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">1.73</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.18× the time of the fastest fully validating library way: minify twitter.json: 61.5 µs citm_catalog.json: 168 µs canada.json: 227 µs jeopardy.json: 5,755 µs simdjson::minify() only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.18× the time of the fastest fully validating library way: minify twitter.json: 62.3 µs citm_catalog.json: 171 µs canada.json: 227 µs jeopardy.json: 5,762 µs 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 3.27× the time of the fastest library (fully validating) way: to_string twitter.json: 342 µs citm_catalog.json: 448 µs canada.json: 3,196 µs jeopardy.json: 53,776 µs">
|
||||
<rect class="nj-heat-3" x="685" y="117" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">3.27</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write 2.41× the time of the fastest library (fully validating) way: to_string twitter.json: 199 µs citm_catalog.json: 385 µs canada.json: 3,241 µs jeopardy.json: 32,208 µ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">2.41</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 1.94× the time of the fastest library (fully validating) way: Value twitter.json: 326 µs citm_catalog.json: 681 µs canada.json: 1,939 µs jeopardy.json: 31,450 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate 1.93× the time of the fastest library (fully validating) way: Value twitter.json: 326 µs citm_catalog.json: 681 µs canada.json: 1,939 µs 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.94</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 1.53× the time of the fastest library (fully validating) way: visitor twitter.json: 364 µs citm_catalog.json: 778 µs canada.json: 2,703 µs jeopardy.json: 41,361 µs">
|
||||
<rect class="nj-heat-2" x="317" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.53</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.84× the time of the fastest library (fully validating) way: Value twitter.json: 333 µs citm_catalog.json: 691 µs canada.json: 1,936 µs jeopardy.json: 40,660 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.83× the time of the fastest library (fully validating) way: Value twitter.json: 333 µs citm_catalog.json: 691 µs canada.json: 1,936 µs jeopardy.json: 40,660 µs">
|
||||
<rect class="nj-heat-2" x="409" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.84</text>
|
||||
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.83</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 2.10× the time of the fastest library (fully validating) way: Value twitter.json: 634 µs citm_catalog.json: 1,257 µs canada.json: 4,396 µs jeopardy.json: 140,936 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 2.08× the time of the fastest library (fully validating) way: Value twitter.json: 634 µs citm_catalog.json: 1,257 µs canada.json: 4,396 µs 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.10</text>
|
||||
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">2.08</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.93× the time of the fastest library (fully validating) way: Value twitter.json: 535 µs citm_catalog.json: 1,134 µs canada.json: 4,377 µs 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.93</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.39× the time of the fastest library (fully validating) way: Value twitter.json: 212 µs citm_catalog.json: 446 µs canada.json: 2,419 µs jeopardy.json: 33,366 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.38× the time of the fastest library (fully validating) way: Value twitter.json: 212 µs citm_catalog.json: 446 µs canada.json: 2,419 µs 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.39</text>
|
||||
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.38</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 2.55× the time of the fastest fully validating library way: Document twitter.json: 381 µs citm_catalog.json: 994 µs canada.json: 2,579 µs jeopardy.json: 41,429 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.53× the time of the fastest fully validating library way: Document twitter.json: 382 µs citm_catalog.json: 985 µs canada.json: 2,578 µs jeopardy.json: 41,617 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.55</text>
|
||||
<text class="nj-charts-cell" x="270" y="204" text-anchor="middle">2.53</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 1.85× the time of the fastest fully validating library way: Document twitter.json: 428 µs citm_catalog.json: 1,088 µs canada.json: 2,972 µs jeopardy.json: 48,845 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less 1.86× the time of the fastest fully validating library way: Document twitter.json: 428 µs citm_catalog.json: 1,087 µs canada.json: 2,993 µs jeopardy.json: 48,688 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.86</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 2.33× the time of the fastest fully validating library way: Document twitter.json: 385 µs citm_catalog.json: 991 µs canada.json: 2,585 µs jeopardy.json: 46,396 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less 2.31× the time of the fastest fully validating library way: Document twitter.json: 385 µs citm_catalog.json: 990 µs canada.json: 2,586 µs jeopardy.json: 45,858 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.33</text>
|
||||
<text class="nj-charts-cell" x="454" y="204" text-anchor="middle">2.31</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 1.71× the time of the fastest fully validating library way: Document twitter.json: 490 µs citm_catalog.json: 1,229 µs canada.json: 5,653 µs jeopardy.json: 63,914 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.68× the time of the fastest fully validating library way: Document twitter.json: 486 µs citm_catalog.json: 1,224 µs canada.json: 5,638 µs jeopardy.json: 62,688 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.71</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 2.04× the time of the fastest fully validating library way: Document + Serialize twitter.json: 505 µs citm_catalog.json: 1,224 µs canada.json: 5,661 µs jeopardy.json: 61,985 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less 2.03× the time of the fastest fully validating library way: Document + Serialize twitter.json: 500 µs citm_catalog.json: 1,220 µs canada.json: 5,676 µs jeopardy.json: 61,236 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.03</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 1.63× the time of the fastest library (fully validating) way: Serialize twitter.json: 113 µs citm_catalog.json: 236 µs canada.json: 3,046 µs jeopardy.json: 19,953 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write 1.59× the time of the fastest library (fully validating) way: Serialize twitter.json: 108 µs citm_catalog.json: 230 µs canada.json: 3,093 µs jeopardy.json: 19,651 µ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.63</text>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.59</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 2.08× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 289 µs citm_catalog.json: 698 µs canada.json: 2,278 µs jeopardy.json: 38,874 µs (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 2.07× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 289 µs citm_catalog.json: 698 µs canada.json: 2,278 µs jeopardy.json: 38,874 µs (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-2" x="225" y="225" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">2.08</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 1.62× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 354 µs citm_catalog.json: 866 µs canada.json: 2,717 µs jeopardy.json: 47,518 µs (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-2" x="317" y="225" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.62</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select 2.39× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 364 µs citm_catalog.json: 914 µs canada.json: 2,657 µs jeopardy.json: 57,697 µs (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 2.38× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 364 µs citm_catalog.json: 914 µs canada.json: 2,657 µs jeopardy.json: 57,697 µs (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.39</text>
|
||||
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.38</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit 2.85× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 948 µs citm_catalog.json: 2,102 µs canada.json: 7,654 µs jeopardy.json: 110,693 µs (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 2.84× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 948 µs citm_catalog.json: 2,102 µs canada.json: 7,654 µs jeopardy.json: 110,693 µs (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.85</text>
|
||||
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.84</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify 3.40× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 952 µs citm_catalog.json: 2,111 µs canada.json: 7,658 µs jeopardy.json: 108,130 µs (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.40</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 3.12× the time of the fastest library (fully validating) way: borrowed twitter.json: 355 µs citm_catalog.json: 478 µs canada.json: 2,728 µs jeopardy.json: 47,412 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 3.10× the time of the fastest library (fully validating) way: borrowed twitter.json: 355 µs citm_catalog.json: 478 µs canada.json: 2,728 µs 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.12</text>
|
||||
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">3.10</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 2.05× the time of the fastest library (fully validating) way: validate_json twitter.json: 330 µs citm_catalog.json: 854 µs canada.json: 1,302 µs jeopardy.json: 46,181 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate 2.04× the time of the fastest library (fully validating) way: validate_json twitter.json: 331 µs citm_catalog.json: 862 µs canada.json: 1,326 µs jeopardy.json: 45,192 µs">
|
||||
<rect class="nj-heat-2" x="225" y="261" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">2.05</text>
|
||||
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">2.04</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 3.86× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 985 µs citm_catalog.json: 2,057 µs canada.json: 6,272 µs jeopardy.json: 100,545 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 3.85× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 968 µs citm_catalog.json: 2,049 µs canada.json: 6,331 µs jeopardy.json: 99,763 µ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.86</text>
|
||||
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">3.85</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.80× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 313 µs citm_catalog.json: 849 µs canada.json: 1,302 µs jeopardy.json: 47,315 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.79× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 311 µs citm_catalog.json: 854 µs canada.json: 1,316 µs jeopardy.json: 46,924 µ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.80</text>
|
||||
<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 0.82× the time of the fastest fully validating library way: structs twitter.json: 239 µs citm_catalog.json: 258 µs canada.json: 310 µs jeopardy.json: 37,143 µs reads into structs and steps over fields it doesn't know without checking them (validate_skipped checks them too)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.82× the time of the fastest fully validating library way: structs twitter.json: 241 µs citm_catalog.json: 255 µs canada.json: 313 µs jeopardy.json: 37,578 µs reads into structs and steps over fields it doesn'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 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 4.42× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 1,529 µs citm_catalog.json: 3,231 µs canada.json: 10,938 µs jeopardy.json: 180,098 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit 4.41× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 1,539 µs citm_catalog.json: 3,235 µs canada.json: 11,083 µs jeopardy.json: 178,333 µ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.41</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 5.19× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 1,517 µs citm_catalog.json: 3,220 µs canada.json: 10,920 µs jeopardy.json: 168,662 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 5.19× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 1,505 µs citm_catalog.json: 3,225 µs canada.json: 11,092 µs jeopardy.json: 168,855 µ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.19</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 1.06× the time of the fastest fully validating library way: minify_json twitter.json: 285 µs citm_catalog.json: 796 µs canada.json: 1,705 µs jeopardy.json: 40,374 µs minify_json only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 1.03× the time of the fastest fully validating library way: minify_json twitter.json: 281 µs citm_catalog.json: 729 µs canada.json: 1,722 µs jeopardy.json: 39,976 µs 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.06</text>
|
||||
<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 2.24× the time of the fastest library (fully validating) twitter.json: 213 µs · generic citm_catalog.json: 470 µs · generic canada.json: 1,705 µs · generic (strict) jeopardy.json: 34,047 µs · generic">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write 2.23× the time of the fastest library (fully validating) twitter.json: 216 µs · generic citm_catalog.json: 469 µs · generic canada.json: 1,720 µs · generic (strict) jeopardy.json: 33,934 µs · generic">
|
||||
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.24</text>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.23</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">Boost.J​SON</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 2.59× the time of the fastest library (fully validating) way: S​AX (numbers: none) twitter.json: 536 µs citm_catalog.json: 995 µs canada.json: 1,467 µs jeopardy.json: 54,696 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 2.56× the time of the fastest library (fully validating) way: S​AX (numbers: none) twitter.json: 535 µs citm_catalog.json: 994 µs canada.json: 1,467 µs jeopardy.json: 53,939 µ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.59</text>
|
||||
<text class="nj-charts-cell" x="270" y="318" text-anchor="middle">2.56</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.98× the time of the fastest library (fully validating) way: S​AX twitter.json: 529 µs citm_catalog.json: 1,008 µs canada.json: 3,042 µs jeopardy.json: 55,145 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.99× the time of the fastest library (fully validating) way: S​AX twitter.json: 535 µs citm_catalog.json: 1,010 µs canada.json: 3,067 µs jeopardy.json: 53,704 µ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.99</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 3.29× the time of the fastest library (fully validating) twitter.json: 620 µs · parse_into structs citm_catalog.json: 1,205 µs · parse_into structs canada.json: 3,634 µs · parse jeopardy.json: 67,861 µs · parse_into structs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 3.27× the time of the fastest library (fully validating) twitter.json: 617 µs · parse_into structs citm_catalog.json: 1,205 µs · parse_into structs canada.json: 3,650 µs · parse jeopardy.json: 67,255 µ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.27</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 3.25× the time of the fastest library (fully validating) way: parse twitter.json: 1,367 µs citm_catalog.json: 2,000 µs canada.json: 6,558 µs jeopardy.json: 159,053 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 3.21× the time of the fastest library (fully validating) way: parse twitter.json: 1,368 µs citm_catalog.json: 1,992 µs canada.json: 6,573 µs jeopardy.json: 155,237 µ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.25</text>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">3.21</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 3.87× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,384 µs citm_catalog.json: 1,990 µs canada.json: 6,554 µs jeopardy.json: 155,141 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 3.87× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,393 µs citm_catalog.json: 1,986 µs canada.json: 6,542 µs jeopardy.json: 154,677 µ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>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 3.75× the time of the fastest library (fully validating) way: serialize twitter.json: 499 µs citm_catalog.json: 504 µs canada.json: 2,891 µs jeopardy.json: 63,231 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 3.75× the time of the fastest library (fully validating) way: serialize twitter.json: 507 µs citm_catalog.json: 508 µs canada.json: 2,923 µs jeopardy.json: 62,583 µ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>
|
||||
</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 2.48× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 452 µs citm_catalog.json: 1,103 µs canada.json: 1,556 µs jeopardy.json: 46,517 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate 2.46× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 452 µs citm_catalog.json: 1,103 µs canada.json: 1,556 µs jeopardy.json: 46,517 µs">
|
||||
<rect class="nj-heat-2" x="225" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="354" text-anchor="middle">2.48</text>
|
||||
<text class="nj-charts-cell" x="247.5" y="354" text-anchor="middle">2.46</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.24× the time of the fastest fully validating library way: IgnoredAny twitter.json: 354 µs citm_catalog.json: 1,047 µs canada.json: 1,451 µs jeopardy.json: 44,984 µs trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.23× the time of the fastest fully validating library way: IgnoredAny twitter.json: 354 µs citm_catalog.json: 1,047 µs canada.json: 1,451 µs jeopardy.json: 44,984 µs trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<rect class="nj-heat-2" x="271" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="292.5" y="348" text-anchor="middle">2.24</text>
|
||||
<text class="nj-charts-cell" x="292.5" y="348" text-anchor="middle">2.23</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="361" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum 2.58× the time of the fastest library (fully validating) way: visitor twitter.json: 652 µs citm_catalog.json: 1,242 µs canada.json: 4,772 µs jeopardy.json: 66,568 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum 2.59× the time of the fastest library (fully validating) way: visitor twitter.json: 652 µs citm_catalog.json: 1,242 µs canada.json: 4,772 µs jeopardy.json: 66,568 µs">
|
||||
<rect class="nj-heat-3" x="317" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">2.58</text>
|
||||
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">2.59</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 2.41× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 480 µs citm_catalog.json: 1,125 µs canada.json: 1,560 µs jeopardy.json: 62,378 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 2.39× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 480 µs citm_catalog.json: 1,125 µs canada.json: 1,560 µs jeopardy.json: 62,378 µs">
|
||||
<rect class="nj-heat-2" x="409" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">2.41</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">2.39</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select, checking less 2.25× the time of the fastest fully validating library twitter.json: 410 µs · structs citm_catalog.json: 1,084 µs · structs canada.json: 1,455 µs · structs jeopardy.json: 62,378 µs · from_utf8 + structs (validates fully) trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select, checking less 2.24× the time of the fastest fully validating library twitter.json: 410 µs · structs citm_catalog.json: 1,084 µs · structs canada.json: 1,455 µs · structs jeopardy.json: 62,378 µs · from_utf8 + structs (validates fully) trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<rect class="nj-heat-2" x="455" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">2.25</text>
|
||||
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">2.24</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 5.02× the time of the fastest library (fully validating) way: Value twitter.json: 2,009 µs citm_catalog.json: 3,316 µs canada.json: 9,666 µs jeopardy.json: 251,931 µs">
|
||||
<rect class="nj-heat-4" x="501" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.02</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.99× the time of the fastest library (fully validating) way: Value twitter.json: 2,009 µs citm_catalog.json: 3,316 µs canada.json: 9,666 µs jeopardy.json: 251,931 µ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.99</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 5.86× the time of the fastest library (fully validating) way: Value twitter.json: 2,004 µs citm_catalog.json: 3,290 µs canada.json: 9,792 µs jeopardy.json: 227,369 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 5.85× the time of the fastest library (fully validating) way: Value twitter.json: 2,004 µs citm_catalog.json: 3,290 µs canada.json: 9,792 µs jeopardy.json: 227,369 µs">
|
||||
<rect class="nj-heat-4" x="593" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="354" text-anchor="middle">5.86</text>
|
||||
<text class="nj-charts-cell" x="638" y="354" text-anchor="middle">5.85</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.97× the time of the fastest library (fully validating) way: Value twitter.json: 322 µs citm_catalog.json: 490 µs canada.json: 2,286 µs jeopardy.json: 49,967 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.95× the time of the fastest library (fully validating) way: Value twitter.json: 322 µs citm_catalog.json: 490 µs canada.json: 2,286 µs jeopardy.json: 49,967 µs">
|
||||
<rect class="nj-heat-3" x="685" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">2.97</text>
|
||||
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">2.95</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="390" text-anchor="end">nlohmann/json json</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate 2.74× the time of the fastest library (fully validating) way: accept twitter.json: 462 µs citm_catalog.json: 905 µs canada.json: 2,340 µs jeopardy.json: 54,684 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate 2.71× the time of the fastest library (fully validating) way: accept twitter.json: 451 µs citm_catalog.json: 888 µs canada.json: 2,405 µs jeopardy.json: 55,286 µs">
|
||||
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.74</text>
|
||||
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.71</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.96× the time of the fastest library (fully validating) way: sax twitter.json: 466 µs citm_catalog.json: 932 µs canada.json: 3,075 µs jeopardy.json: 64,003 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.96× the time of the fastest library (fully validating) way: sax twitter.json: 465 µs citm_catalog.json: 925 µs canada.json: 3,072 µs jeopardy.json: 64,089 µ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 6.91× the time of the fastest library (fully validating) twitter.json: 1,360 µs · parse citm_catalog.json: 2,407 µs · parse canada.json: 6,041 µs · structs (from_json) jeopardy.json: 180,705 µs · parse">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 6.87× the time of the fastest library (fully validating) twitter.json: 1,360 µs · structs (from_json) citm_catalog.json: 2,416 µs · parse canada.json: 6,047 µs · structs (from_json) jeopardy.json: 179,533 µs · parse">
|
||||
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">6.91</text>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">6.87</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.72× the time of the fastest library (fully validating) twitter.json: 1,266 µs · ordered_json citm_catalog.json: 2,329 µs · ordered_json canada.json: 8,305 µs · parse jeopardy.json: 199,819 µs · ordered_json">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.73× the time of the fastest library (fully validating) twitter.json: 1,273 µs · ordered_json citm_catalog.json: 2,344 µs · ordered_json canada.json: 8,334 µs · parse jeopardy.json: 203,232 µs · ordered_json">
|
||||
<rect class="nj-heat-3" x="501" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.72</text>
|
||||
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.73</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.91× the time of the fastest library (fully validating) way: parse + dump twitter.json: 1,616 µs citm_catalog.json: 2,688 µs canada.json: 8,318 µs jeopardy.json: 199,579 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.89× the time of the fastest library (fully validating) way: parse + dump twitter.json: 1,600 µs citm_catalog.json: 2,706 µs canada.json: 8,389 µs jeopardy.json: 197,745 µs">
|
||||
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.91</text>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.89</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 2.08× the time of the fastest library (fully validating) way: dump twitter.json: 216 µs citm_catalog.json: 286 µs canada.json: 2,250 µs jeopardy.json: 31,183 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 2.10× the time of the fastest library (fully validating) way: dump twitter.json: 223 µs citm_catalog.json: 287 µs canada.json: 2,276 µs jeopardy.json: 31,825 µs">
|
||||
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.08</text>
|
||||
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">2.10</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 6.78× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,311 µs citm_catalog.json: 1,585 µs canada.json: 6,862 µs jeopardy.json: 141,752 µs (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.78</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate 4.72× the time of the fastest library (fully validating) twitter.json: 1,307 µs · insitu (copy untimed) citm_catalog.json: 1,397 µs · S​AX (string stream, default precision) canada.json: 1,982 µs · S​AX (string stream, default precision) jeopardy.json: 134,679 µs · S​AX (string stream, default precision)">
|
||||
<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.72</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 4.40× the time of the fastest fully validating library way: insitu (copy) (no encoding check) twitter.json: 700 µs citm_catalog.json: 1,178 µs canada.json: 6,838 µs jeopardy.json: 63,673 µs trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.09× the time of the fastest fully validating library twitter.json: 686 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,032 µs · S​AX (string stream, default precision) (no encoding check) canada.json: 1,982 µs · S​AX (string stream, default precision) (validates fully) jeopardy.json: 63,589 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-3" x="271" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.40</text>
|
||||
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">3.09</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 4.46× the time of the fastest library (fully validating) twitter.json: 1,331 µs · S​AX citm_catalog.json: 1,655 µs · S​AX canada.json: 6,938 µs · S​AX jeopardy.json: 149,509 µs · insitu (copy) (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 4.15× the time of the fastest library (fully validating) twitter.json: 1,329 µs · S​AX citm_catalog.json: 1,455 µs · S​AX (string stream) canada.json: 6,453 µs · S​AX (string stream) jeopardy.json: 136,103 µs · S​AX (string stream)">
|
||||
<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.46</text>
|
||||
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">4.15</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 3.01× the time of the fastest fully validating library twitter.json: 748 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,276 µs · insitu (copy) (no encoding check) canada.json: 6,938 µs · S​AX (validates fully) jeopardy.json: 71,697 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 2.85× the time of the fastest fully validating library twitter.json: 735 µs · S​AX (string stream) (no encoding check) citm_catalog.json: 1,136 µs · S​AX (string stream) (no encoding check) canada.json: 6,453 µs · S​AX (string stream) (validates fully) jeopardy.json: 69,604 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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">3.01</text>
|
||||
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.85</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 6.01× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,316 µs citm_catalog.json: 1,569 µs canada.json: 6,800 µs jeopardy.json: 145,958 µs (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 5.91× the time of the fastest library (fully validating) twitter.json: 1,304 µs · insitu (copy untimed) citm_catalog.json: 1,554 µs · insitu (copy untimed) canada.json: 6,776 µs · Document (string stream) jeopardy.json: 141,509 µs · insitu (copy untimed)">
|
||||
<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.01</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">5.91</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less 3.95× the time of the fastest fully validating library way: insitu (copy) (no encoding check) twitter.json: 702 µs citm_catalog.json: 1,169 µs canada.json: 6,799 µs jeopardy.json: 68,045 µs trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.82× the time of the fastest fully validating library twitter.json: 679 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,126 µs · insitu (copy untimed) (no encoding check) canada.json: 6,776 µs · Document (string stream) (validates fully) jeopardy.json: 65,625 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.95</text>
|
||||
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.82</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 4.88× the time of the fastest library (fully validating) twitter.json: 1,924 µs · Document citm_catalog.json: 2,404 µs · insitu (copy) canada.json: 13,830 µs · insitu (copy) jeopardy.json: 226,139 µs · insitu (copy) (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 4.82× the time of the fastest library (fully validating) twitter.json: 1,922 µs · Document citm_catalog.json: 2,388 µs · insitu (copy untimed) canada.json: 13,836 µs · Document (string stream) jeopardy.json: 221,270 µs · insitu (copy untimed)">
|
||||
<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.88</text>
|
||||
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">4.82</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less 3.84× the time of the fastest fully validating library way: insitu (copy) (no encoding check) twitter.json: 1,354 µs citm_catalog.json: 2,001 µs canada.json: 13,825 µs jeopardy.json: 148,686 µs trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.77× the time of the fastest fully validating library way: insitu (copy untimed) (no encoding check) twitter.json: 1,344 µs citm_catalog.json: 1,964 µs canada.json: 13,794 µs jeopardy.json: 144,741 µs trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.84</text>
|
||||
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">3.77</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 4.89× the time of the fastest library (fully validating) twitter.json: 1,512 µs · S​AX to Writer citm_catalog.json: 1,816 µs · S​AX to Writer canada.json: 14,281 µs · Document + Writer jeopardy.json: 180,596 µs · S​AX to Writer">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify 4.86× the time of the fastest library (fully validating) twitter.json: 1,525 µs · S​AX to Writer citm_catalog.json: 1,808 µs · S​AX to Writer (string stream) canada.json: 14,460 µs · Document + Writer jeopardy.json: 174,558 µs · S​AX to Writer (string stream)">
|
||||
<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.89</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">4.86</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 4.28× the time of the fastest fully validating library twitter.json: 1,328 µs · S​AX to Writer (no encoding check) citm_catalog.json: 1,714 µs · S​AX to Writer (no encoding check) canada.json: 10,904 µs · S​AX to Writer (raw numbers) (validates fully) jeopardy.json: 167,694 µs · S​AX to Writer (raw numbers) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 3.60× the time of the fastest fully validating library twitter.json: 1,058 µs · S​AX to Writer (string stream) (no encoding check) citm_catalog.json: 1,485 µs · S​AX to Writer (string stream) (no encoding check) canada.json: 10,908 µs · S​AX to Writer (raw numbers) (no encoding check) jeopardy.json: 123,119 µs · S​AX to Writer (string stream) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">4.28</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">3.60</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 5.87× the time of the fastest library (fully validating) way: Writer twitter.json: 598 µs citm_catalog.json: 822 µs canada.json: 6,889 µs jeopardy.json: 81,406 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 5.88× the time of the fastest library (fully validating) way: Writer twitter.json: 603 µs citm_catalog.json: 830 µs canada.json: 6,995 µs jeopardy.json: 81,150 µ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.87</text>
|
||||
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">5.88</text>
|
||||
</g>
|
||||
<text class="nj-charts-tick nj-charts-tick--l" x="8" y="472">time relative to the fastest fully validating library, less is better</text>
|
||||
<g><rect class="nj-heat-0" x="8" y="482" width="76" height="20" rx="3"/>
|
||||
|
||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 45 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 (0.82 doing less, N); nlohmann/json json_document minify: 1.00 (0.80 doing less, N); nlohmann/json json_document write: 1.00 (0.70 doing less, N); yyjson validate: 2.23; yyjson sum: 1.16; yyjson select: 1.43; yyjson edit: 1.48; yyjson minify: 1.24 (1.08 doing less, N); yyjson write: 1.15; sonic-cpp validate: no fully validating way (2.35 doing less, U); sonic-cpp sum: no fully validating way (1.21 doing less, U); sonic-cpp select: no fully validating way (1.53 doing less, U); sonic-cpp edit: no fully validating way (1.19 doing less, U); sonic-cpp minify: no fully validating way (1.33 doing less, U); sonic-cpp write: 1.31; sonic-rs (Rust) validate: 1.91; sonic-rs (Rust) sum: 1.07; sonic-rs (Rust) select: 1.38; sonic-rs (Rust) edit: 1.90; sonic-rs (Rust) minify: 1.71; sonic-rs (Rust) write: 1.98; simdjson validate: 2.08; simdjson sum: 1.14; simdjson select: 1.33 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.63 (0.18 doing less, P); simdjson write: 2.26; Boost.J​SON validate: 1.81; Boost.J​SON sum: 1.14; Boost.J​SON select: 2.24; Boost.J​SON edit: 2.35; Boost.J​SON minify: 2.64; Boost.J​SON write: 2.37; simd-json (Rust) validate: 3.58; simd-json (Rust) sum: 1.80; simd-json (Rust) select: 2.64; simd-json (Rust) edit: 2.88; simd-json (Rust) minify: 3.34; simd-json (Rust) write: 2.26; serde_json (Rust) validate: 2.37 (2.12 doing less, U); serde_json (Rust) sum: 2.22; serde_json (Rust) select: 1.77; serde_json (Rust) edit: 4.53; serde_json (Rust) minify: 4.86; serde_json (Rust) write: 2.19; Glaze validate: 2.20; Glaze sum: 4.04 (3.75 doing less, P); Glaze select: 1.40 (0.61 doing less, P); Glaze edit: 5.43; Glaze minify: 5.56 (0.67 doing less, P); Glaze write: 1.95; nlohmann/json json validate: 2.71; nlohmann/json json sum: 1.41; nlohmann/json json select: 7.47; nlohmann/json json edit: 3.81; nlohmann/json json minify: 4.67; nlohmann/json json write: 1.86; RapidJSON validate: 6.87 (5.20 doing less, U); RapidJSON sum: 3.25 (2.48 doing less, U); RapidJSON select: 4.52 (3.58 doing less, U); RapidJSON edit: 3.12 (2.69 doing less, U); RapidJSON minify: 3.38 (2.49 doing less, U N); RapidJSON write: 2.84.</desc>
|
||||
<desc id="nj-blog-uc-x86-clang-d">Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.00; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.81 doing less, N); nlohmann/json json_document minify: 1.00 (0.83 doing less, N); nlohmann/json json_document write: 1.00 (0.69 doing less, N); yyjson validate: 1.87; yyjson sum: 1.00; yyjson select: 1.23; yyjson edit: 1.43; yyjson minify: 1.16 (1.00 doing less, N); yyjson write: 1.14; sonic-cpp validate: no fully validating way (2.32 doing less, U); sonic-cpp sum: no fully validating way (1.20 doing less, U); sonic-cpp select: no fully validating way (1.53 doing less, U); sonic-cpp edit: no fully validating way (1.24 doing less, U); sonic-cpp minify: no fully validating way (1.38 doing less, U); sonic-cpp write: 1.28; simdjson validate: 2.03; simdjson sum: 1.13; simdjson select: 1.32 (0.57 doing less, P); simdjson edit: n/a; simdjson minify: 1.58 (0.18 doing less, P); simdjson write: 2.00; sonic-rs (Rust) validate: 1.88; sonic-rs (Rust) sum: 1.07; sonic-rs (Rust) select: 1.39; sonic-rs (Rust) edit: 1.90; sonic-rs (Rust) minify: 1.73; sonic-rs (Rust) write: 1.94; Boost.J​SON validate: 1.79; Boost.J​SON sum: 1.12; Boost.J​SON select: 2.24; Boost.J​SON edit: 2.39; Boost.J​SON minify: 2.68; Boost.J​SON write: 2.31; simd-json (Rust) validate: 3.52; simd-json (Rust) sum: 1.80; simd-json (Rust) select: 2.64; simd-json (Rust) edit: 2.88; simd-json (Rust) minify: 3.38; simd-json (Rust) write: 2.21; serde_json (Rust) validate: 2.33 (2.08 doing less, U); serde_json (Rust) sum: 2.22; serde_json (Rust) select: 1.77; serde_json (Rust) edit: 4.54; serde_json (Rust) minify: 4.92; serde_json (Rust) write: 2.15; Glaze validate: 2.23; Glaze sum: 4.03 (3.78 doing less, P); Glaze select: 1.43 (0.62 doing less, P); Glaze edit: 5.53; Glaze minify: 5.77 (0.70 doing less, P); Glaze write: 1.90; nlohmann/json json validate: 2.77; nlohmann/json json sum: 1.44; nlohmann/json json select: 7.56; nlohmann/json json edit: 3.99; nlohmann/json json minify: 4.91; nlohmann/json json write: 1.86; RapidJSON validate: 4.94 (3.76 doing less, U); RapidJSON sum: 2.98 (2.28 doing less, U); RapidJSON select: 4.20 (3.27 doing less, U); RapidJSON edit: 3.06 (2.60 doing less, U); RapidJSON minify: 3.61 (2.65 doing less, U N); RapidJSON write: 2.79.</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,194 +8,194 @@
|
||||
<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 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 254 µs citm_catalog.json: 517 µs canada.json: 995 µs jeopardy.json: 34,154 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 255 µs citm_catalog.json: 512 µs canada.json: 1,055 µs jeopardy.json: 34,729 µ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 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 372 µs citm_catalog.json: 948 µs canada.json: 3,720 µs jeopardy.json: 86,351 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 374 µs citm_catalog.json: 923 µs canada.json: 3,846 µs jeopardy.json: 85,286 µ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 1.00× the time of the fastest library (fully validating) twitter.json: 314 µs · parse citm_catalog.json: 778 µs · parse canada.json: 1,387 µs · structs (from_json) jeopardy.json: 87,988 µs · parse">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) twitter.json: 320 µs · parse citm_catalog.json: 759 µs · parse canada.json: 1,390 µs · structs (from_json) jeopardy.json: 88,083 µ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 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 524 µs citm_catalog.json: 1,143 µs canada.json: 5,462 µs jeopardy.json: 202,684 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 526 µs citm_catalog.json: 1,127 µs canada.json: 5,674 µs jeopardy.json: 196,370 µs">
|
||||
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.82× the time of the fastest fully validating library twitter.json: 519 µs · editable (source numbers) (validates fully) citm_catalog.json: 1,143 µs · editable (validates fully) canada.json: 2,443 µs · editable (source numbers) (validates fully) jeopardy.json: 202,684 µs · editable (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.81× the time of the fastest fully validating library twitter.json: 526 µs · editable (validates fully) citm_catalog.json: 1,127 µs · editable (validates fully) canada.json: 2,443 µs · editable (source numbers) (validates fully) jeopardy.json: 196,370 µs · editable (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.82</text>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.81</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 474 µs citm_catalog.json: 1,050 µs canada.json: 5,333 µs jeopardy.json: 156,634 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 518 µs citm_catalog.json: 1,040 µs canada.json: 5,043 µs jeopardy.json: 146,125 µs">
|
||||
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.80× the time of the fastest fully validating library way: parse + dump (source numbers) twitter.json: 466 µs (validates fully) citm_catalog.json: 1,048 µs (validates fully) canada.json: 2,402 µs (validates fully) jeopardy.json: 147,779 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.83× the time of the fastest fully validating library twitter.json: 518 µs · parse + dump (validates fully) citm_catalog.json: 1,030 µs · parse + dump (source numbers) (validates fully) canada.json: 2,456 µs · parse + dump (source numbers) (validates fully) jeopardy.json: 146,125 µs · parse + dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.80</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.83</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 159 µs citm_catalog.json: 277 µs canada.json: 3,798 µs jeopardy.json: 67,700 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 160 µs citm_catalog.json: 311 µs canada.json: 3,714 µs jeopardy.json: 67,038 µs">
|
||||
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.70× the time of the fastest fully validating library way: dump (source numbers) twitter.json: 152 µs (validates fully) citm_catalog.json: 275 µs (validates fully) canada.json: 986 µs (validates fully) jeopardy.json: 67,141 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.69× the time of the fastest fully validating library way: dump (source numbers) twitter.json: 154 µs (validates fully) citm_catalog.json: 279 µs (validates fully) canada.json: 989 µs (validates fully) jeopardy.json: 64,301 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.70</text>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.69</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate 2.23× the time of the fastest library (fully validating) twitter.json: 380 µs · read citm_catalog.json: 897 µs · read canada.json: 2,573 µs · read (raw numbers) jeopardy.json: 125,497 µs · insitu (copy) (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 1.87× the time of the fastest library (fully validating) twitter.json: 334 µs · insitu (copy untimed) citm_catalog.json: 811 µs · insitu (copy untimed) canada.json: 2,580 µs · read (raw numbers) jeopardy.json: 83,153 µs · insitu (copy untimed)">
|
||||
<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.23</text>
|
||||
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.87</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.16× the time of the fastest library (fully validating) twitter.json: 435 µs · insitu (copy) citm_catalog.json: 1,054 µs · read canada.json: 3,456 µs · read jeopardy.json: 131,400 µs · read (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>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.00× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 399 µs citm_catalog.json: 946 µs canada.json: 3,445 µs jeopardy.json: 88,447 µs">
|
||||
<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.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select 1.43× the time of the fastest library (fully validating) twitter.json: 389 µs · insitu (copy) citm_catalog.json: 900 µs · read canada.json: 2,627 µs · read (raw numbers) jeopardy.json: 134,301 µs · read (raw numbers) (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 1.23× the time of the fastest library (fully validating) twitter.json: 351 µs · insitu (copy untimed) citm_catalog.json: 788 µs · insitu (copy untimed) canada.json: 2,632 µs · read (raw numbers) jeopardy.json: 92,551 µs · insitu (copy untimed)">
|
||||
<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.43</text>
|
||||
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.23</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit 1.48× the time of the fastest library (fully validating) twitter.json: 869 µs · mut copy citm_catalog.json: 1,674 µs · insitu (copy) + mut copy canada.json: 7,099 µs · mut copy jeopardy.json: 309,767 µs · mut copy (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 1.43× the time of the fastest library (fully validating) twitter.json: 918 µs · insitu (copy) + mut copy citm_catalog.json: 1,548 µs · insitu (copy untimed) + mut copy canada.json: 7,155 µs · insitu (copy untimed) + mut copy jeopardy.json: 270,654 µs · insitu (copy untimed) + mut copy (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.43</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify 1.24× the time of the fastest library (fully validating) twitter.json: 631 µs · read + write citm_catalog.json: 1,262 µs · insitu (copy) + write canada.json: 6,304 µs · insitu (copy) + write jeopardy.json: 196,789 µs · read + write (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 1.16× the time of the fastest library (fully validating) way: insitu (copy untimed) + write twitter.json: 620 µs citm_catalog.json: 1,189 µs canada.json: 6,283 µs jeopardy.json: 154,016 µs">
|
||||
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.24</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.16</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less 1.08× the time of the fastest fully validating library twitter.json: 631 µs · read + write (validates fully) citm_catalog.json: 1,246 µs · read (raw numbers) + write (validates fully) canada.json: 3,614 µs · read (raw numbers) + write (validates fully) jeopardy.json: 196,789 µs · read + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less 1.00× the time of the fastest fully validating library twitter.json: 620 µs · insitu (copy untimed) + write (validates fully) citm_catalog.json: 1,189 µs · insitu (copy untimed) + write (validates fully) canada.json: 3,472 µs · read (raw numbers) + write (validates fully) jeopardy.json: 154,016 µs · insitu (copy untimed) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)">
|
||||
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.08</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.00</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.15× the time of the fastest library (fully validating) way: write twitter.json: 216 µs citm_catalog.json: 359 µs canada.json: 3,514 µs jeopardy.json: 73,410 µs">
|
||||
<rect class="nj-heat-1" x="685" y="81" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="102" text-anchor="middle">1.15</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.14× the time of the fastest library (fully validating) way: write twitter.json: 218 µs citm_catalog.json: 386 µs canada.json: 3,476 µs jeopardy.json: 71,247 µ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.14</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">sonic-cpp</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.35× the time of the fastest fully validating library way: Document twitter.json: 445 µs citm_catalog.json: 1,000 µs canada.json: 3,042 µs jeopardy.json: 100,684 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.32× the time of the fastest fully validating library way: Document twitter.json: 448 µs citm_catalog.json: 1,032 µs canada.json: 3,143 µs jeopardy.json: 94,884 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.35</text>
|
||||
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.32</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 1.21× the time of the fastest fully validating library way: Document twitter.json: 508 µs citm_catalog.json: 1,171 µs canada.json: 3,661 µs jeopardy.json: 110,607 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less 1.20× the time of the fastest fully validating library way: Document twitter.json: 502 µs citm_catalog.json: 1,175 µs canada.json: 3,754 µs jeopardy.json: 104,583 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.21</text>
|
||||
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.20</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 1.53× the time of the fastest fully validating library way: Document twitter.json: 456 µs citm_catalog.json: 1,013 µs canada.json: 3,104 µs jeopardy.json: 113,400 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less 1.53× the time of the fastest fully validating library way: Document twitter.json: 460 µs citm_catalog.json: 1,011 µs canada.json: 3,204 µs jeopardy.json: 108,245 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.53</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="145" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.19× the time of the fastest fully validating library way: Document twitter.json: 634 µs citm_catalog.json: 1,458 µs canada.json: 7,852 µs jeopardy.json: 183,532 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.24× the time of the fastest fully validating library way: Document twitter.json: 711 µs citm_catalog.json: 1,472 µs canada.json: 7,996 µs jeopardy.json: 183,852 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.19</text>
|
||||
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.24</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 1.33× the time of the fastest fully validating library way: Document + Serialize twitter.json: 646 µs citm_catalog.json: 1,482 µs canada.json: 8,135 µs jeopardy.json: 167,844 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less 1.38× the time of the fastest fully validating library way: Document + Serialize twitter.json: 710 µs citm_catalog.json: 1,485 µs canada.json: 8,122 µs jeopardy.json: 166,935 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.33</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 1.31× the time of the fastest library (fully validating) way: Serialize twitter.json: 219 µs citm_catalog.json: 473 µs canada.json: 4,853 µs jeopardy.json: 67,189 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write 1.28× the time of the fastest library (fully validating) way: Serialize twitter.json: 224 µs citm_catalog.json: 475 µs canada.json: 4,850 µs jeopardy.json: 65,131 µ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.31</text>
|
||||
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.28</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 1.91× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<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 2.03× the time of the fastest library (fully validating) way: D​OM twitter.json: 306 µs citm_catalog.json: 732 µs canada.json: 3,206 µs jeopardy.json: 113,452 µ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.91</text>
|
||||
<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="sonic-rs (Rust) · sum 1.07× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.13× the time of the fastest library (fully validating) twitter.json: 394 µs · D​OM citm_catalog.json: 977 µs · D​OM canada.json: 4,117 µs · D​OM jeopardy.json: 114,602 µs · On-Demand">
|
||||
<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.07</text>
|
||||
<text class="nj-charts-cell" x="362" y="174" text-anchor="middle">1.13</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.38× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<rect class="nj-heat-1" x="409" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="174" text-anchor="middle">1.38</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.32× the time of the fastest library (fully validating) way: D​OM twitter.json: 316 µs citm_catalog.json: 731 µs canada.json: 3,262 µs jeopardy.json: 120,808 µs">
|
||||
<rect class="nj-heat-1" x="409" y="153" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.32</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.90× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<rect class="nj-heat-2" x="501" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="174" text-anchor="middle">1.90</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.71× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<rect class="nj-heat-2" x="593" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="174" text-anchor="middle">1.71</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 1.98× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<rect class="nj-heat-2" x="685" y="153" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">1.98</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="210" text-anchor="end">simdjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate 2.08× the time of the fastest library (fully validating) way: D​OM twitter.json: 306 µs citm_catalog.json: 722 µs canada.json: 3,203 µs jeopardy.json: 118,182 µs">
|
||||
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">2.08</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.14× the time of the fastest library (fully validating) twitter.json: 398 µs · D​OM citm_catalog.json: 981 µs · D​OM canada.json: 4,131 µs · D​OM jeopardy.json: 116,924 µs · On-Demand">
|
||||
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.33× the time of the fastest library (fully validating) way: D​OM twitter.json: 316 µs citm_catalog.json: 736 µs canada.json: 3,272 µs jeopardy.json: 121,563 µs">
|
||||
<rect class="nj-heat-1" x="409" y="189" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="210" text-anchor="middle">1.33</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less 0.56× the time of the fastest fully validating library twitter.json: 182 µs · On-Demand citm_catalog.json: 495 µs · On-Demand canada.json: 698 µs · On-Demand (key selectors) jeopardy.json: 47,588 µs · On-Demand 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 class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less 0.57× the time of the fastest fully validating library twitter.json: 181 µs · On-Demand structs citm_catalog.json: 495 µs · On-Demand canada.json: 702 µs · On-Demand jeopardy.json: 48,823 µs · On-Demand 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.57</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="181" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · edit simdjson's documents are read-only: it has no A​PI to change a value and write the result">
|
||||
<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>
|
||||
<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 1.63× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 842 µs citm_catalog.json: 1,430 µs canada.json: 8,105 µs jeopardy.json: 297,946 µs">
|
||||
<rect class="nj-heat-2" x="593" y="189" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="210" text-anchor="middle">1.63</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify 1.58× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 783 µs citm_catalog.json: 1,395 µs canada.json: 8,303 µs jeopardy.json: 275,007 µ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.58</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.18× the time of the fastest fully validating library way: minify twitter.json: 98.8 µs citm_catalog.json: 269 µs canada.json: 332 µs jeopardy.json: 44,830 µs 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.18</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="217" text-anchor="middle">P</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.18× the time of the fastest fully validating library way: minify twitter.json: 105 µs citm_catalog.json: 269 µs canada.json: 337 µs jeopardy.json: 45,087 µs 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 2.26× the time of the fastest library (fully validating) way: to_string twitter.json: 503 µs citm_catalog.json: 672 µs canada.json: 5,039 µs jeopardy.json: 173,990 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write 2.00× the time of the fastest library (fully validating) way: to_string twitter.json: 389 µs citm_catalog.json: 656 µs canada.json: 4,896 µs jeopardy.json: 157,616 µ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.00</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 1.88× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.88</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum 1.07× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.07</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.39× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<rect class="nj-heat-1" x="409" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.39</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.90× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.90</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.73× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.73</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 1.94× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.26</text>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">1.94</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J​SON</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.81× the time of the fastest library (fully validating) twitter.json: 569 µs · S​AX (numbers: none) citm_catalog.json: 909 µs · S​AX (numbers: none) canada.json: 1,683 µs · S​AX (numbers: none) jeopardy.json: 54,986 µs · S​AX">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.79× the time of the fastest library (fully validating) way: S​AX (numbers: none) twitter.json: 571 µs citm_catalog.json: 910 µs canada.json: 1,684 µs jeopardy.json: 55,498 µ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.81</text>
|
||||
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.79</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.14× the time of the fastest library (fully validating) way: S​AX twitter.json: 580 µs citm_catalog.json: 924 µs canada.json: 5,915 µs jeopardy.json: 60,351 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.12× the time of the fastest library (fully validating) way: S​AX twitter.json: 580 µs citm_catalog.json: 928 µs canada.json: 5,809 µs jeopardy.json: 56,774 µ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.14</text>
|
||||
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.12</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.24× the time of the fastest library (fully validating) twitter.json: 767 µs · parse_into structs citm_catalog.json: 1,389 µs · parse_into structs canada.json: 7,310 µs · parse jeopardy.json: 95,891 µs · parse_into structs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.24× the time of the fastest library (fully validating) twitter.json: 776 µs · parse_into structs citm_catalog.json: 1,389 µs · parse_into structs canada.json: 7,121 µs · parse jeopardy.json: 97,681 µ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.24</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.35× the time of the fastest library (fully validating) way: parse twitter.json: 1,723 µs citm_catalog.json: 2,574 µs canada.json: 12,679 µs jeopardy.json: 358,088 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.39× the time of the fastest library (fully validating) way: parse twitter.json: 1,855 µs citm_catalog.json: 2,596 µs canada.json: 12,765 µs jeopardy.json: 350,286 µ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.35</text>
|
||||
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.39</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 2.64× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,753 µs citm_catalog.json: 2,591 µs canada.json: 13,210 µs jeopardy.json: 339,360 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 2.68× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,924 µs citm_catalog.json: 2,569 µs canada.json: 12,622 µs jeopardy.json: 329,090 µ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.68</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.37× the time of the fastest library (fully validating) way: serialize twitter.json: 487 µs citm_catalog.json: 900 µs canada.json: 5,691 µs jeopardy.json: 142,547 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.31× the time of the fastest library (fully validating) way: serialize twitter.json: 478 µs citm_catalog.json: 916 µs canada.json: 5,615 µs jeopardy.json: 141,846 µ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.31</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="282" text-anchor="end">simd-json (Rust)</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · validate 3.58× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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 3.52× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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.58</text>
|
||||
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.52</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum 1.80× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 681 µs citm_catalog.json: 1,650 µs canada.json: 5,083 µs jeopardy.json: 210,185 µs (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"/>
|
||||
@@ -209,22 +209,22 @@
|
||||
<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.88</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify 3.34× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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 3.38× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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.34</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 2.26× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 2.21× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.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 2.37× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate 2.33× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µs">
|
||||
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.37</text>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.33</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.12× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.08× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​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.12</text>
|
||||
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">2.08</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 2.22× the time of the fastest library (fully validating) way: visitor twitter.json: 1,311 µs citm_catalog.json: 2,288 µs canada.json: 7,127 µs jeopardy.json: 129,497 µs">
|
||||
@@ -235,132 +235,132 @@
|
||||
<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.77</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.53× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.54× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.53</text>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.54</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 4.86× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 4.92× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µs">
|
||||
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.86</text>
|
||||
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.92</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.19× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.15× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µs">
|
||||
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.19</text>
|
||||
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.15</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 2.20× the time of the fastest library (fully validating) way: validate_json twitter.json: 582 µs citm_catalog.json: 1,229 µs canada.json: 2,011 µs jeopardy.json: 72,734 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate 2.23× the time of the fastest library (fully validating) way: validate_json twitter.json: 588 µs citm_catalog.json: 1,431 µs canada.json: 1,867 µs jeopardy.json: 75,571 µ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.20</text>
|
||||
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.23</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.04× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,392 µs citm_catalog.json: 4,048 µs canada.json: 11,814 µs jeopardy.json: 264,675 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.03× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,427 µs citm_catalog.json: 3,972 µs canada.json: 12,165 µs jeopardy.json: 253,385 µ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.04</text>
|
||||
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.03</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less 3.75× the time of the fastest fully validating library twitter.json: 2,383 µs · generic (double) citm_catalog.json: 4,010 µs · generic (double) canada.json: 11,814 µs · generic (double, strict) (validates fully) jeopardy.json: 198,418 µs · lazy_json accepts trailing garbage after the value: Glaze's default (validate_trailing_whitespace checks it) 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 3.78× the time of the fastest fully validating library twitter.json: 2,427 µs · generic (double, strict) (validates fully) citm_catalog.json: 3,972 µs · generic (double, strict) (validates fully) canada.json: 12,165 µs · generic (double, strict) (validates fully) jeopardy.json: 196,582 µs · lazy_json 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.75</text>
|
||||
<text class="nj-charts-cell" x="384.5" y="348" text-anchor="middle">3.78</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 1.40× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 542 µs citm_catalog.json: 1,370 µs canada.json: 1,870 µs jeopardy.json: 82,551 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.43× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 544 µs citm_catalog.json: 1,368 µs canada.json: 1,924 µs jeopardy.json: 85,745 µ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.40</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.43</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.61× the time of the fastest fully validating library way: structs twitter.json: 337 µs citm_catalog.json: 418 µs canada.json: 446 µs jeopardy.json: 67,047 µs reads into structs and steps over fields it doesn't know without checking them (validate_skipped checks them too)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.62× the time of the fastest fully validating library way: structs twitter.json: 345 µs citm_catalog.json: 419 µs canada.json: 444 µs jeopardy.json: 66,442 µs reads into structs and steps over fields it doesn'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.61</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 5.43× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,866 µs citm_catalog.json: 7,305 µs canada.json: 27,388 µs jeopardy.json: 744,826 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit 5.53× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 4,341 µs citm_catalog.json: 7,322 µs canada.json: 26,786 µs jeopardy.json: 725,881 µ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.43</text>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">5.53</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 5.56× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,834 µs citm_catalog.json: 7,269 µs canada.json: 27,454 µs jeopardy.json: 521,119 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 5.77× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 4,132 µs citm_catalog.json: 7,465 µs canada.json: 26,962 µs jeopardy.json: 528,811 µ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.56</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">5.77</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.67× the time of the fastest fully validating library way: minify_json twitter.json: 422 µs citm_catalog.json: 1,058 µs canada.json: 2,150 µs jeopardy.json: 88,952 µs minify_json only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.70× the time of the fastest fully validating library way: minify_json twitter.json: 444 µs citm_catalog.json: 1,059 µs canada.json: 2,222 µs jeopardy.json: 91,153 µs 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.67</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.70</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 1.95× the time of the fastest library (fully validating) twitter.json: 400 µs · generic citm_catalog.json: 722 µs · generic (strict) canada.json: 4,229 µs · generic (strict) jeopardy.json: 134,914 µs · generic">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write 1.90× the time of the fastest library (fully validating) way: generic twitter.json: 399 µs citm_catalog.json: 748 µs canada.json: 4,220 µs jeopardy.json: 128,020 µ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.95</text>
|
||||
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.90</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 2.71× the time of the fastest library (fully validating) way: accept twitter.json: 654 µs citm_catalog.json: 1,283 µs canada.json: 4,043 µs jeopardy.json: 70,284 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate 2.77× the time of the fastest library (fully validating) way: accept twitter.json: 658 µs citm_catalog.json: 1,390 µs canada.json: 4,265 µs jeopardy.json: 71,982 µ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.71</text>
|
||||
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.77</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.41× the time of the fastest library (fully validating) way: sax twitter.json: 720 µs citm_catalog.json: 1,382 µs canada.json: 5,162 µs jeopardy.json: 87,316 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.44× the time of the fastest library (fully validating) way: sax twitter.json: 728 µs citm_catalog.json: 1,393 µs canada.json: 5,428 µs jeopardy.json: 89,481 µs">
|
||||
<rect class="nj-heat-1" x="317" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.41</text>
|
||||
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.44</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.47× the time of the fastest library (fully validating) twitter.json: 3,521 µs · parse citm_catalog.json: 5,192 µs · structs (from_json) canada.json: 11,196 µs · structs (from_json) jeopardy.json: 453,587 µs · structs (from_json)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.56× the time of the fastest library (fully validating) twitter.json: 3,602 µs · structs (from_json) citm_catalog.json: 5,124 µs · parse canada.json: 11,831 µs · parse jeopardy.json: 444,210 µ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.47</text>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.56</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.81× the time of the fastest library (fully validating) twitter.json: 2,784 µs · ordered_json citm_catalog.json: 4,911 µs · ordered_json canada.json: 15,563 µs · parse jeopardy.json: 659,023 µs · ordered_json">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.99× the time of the fastest library (fully validating) twitter.json: 3,069 µs · ordered_json citm_catalog.json: 4,905 µs · ordered_json canada.json: 16,702 µs · parse jeopardy.json: 666,261 µ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.81</text>
|
||||
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.99</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.67× the time of the fastest library (fully validating) way: parse + dump twitter.json: 3,990 µs citm_catalog.json: 5,719 µs canada.json: 16,153 µs jeopardy.json: 536,911 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.91× the time of the fastest library (fully validating) way: parse + dump twitter.json: 4,445 µs citm_catalog.json: 5,713 µs canada.json: 16,711 µs jeopardy.json: 543,033 µs">
|
||||
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.67</text>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.91</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.86× the time of the fastest library (fully validating) way: dump twitter.json: 441 µs citm_catalog.json: 606 µs canada.json: 4,485 µs jeopardy.json: 113,462 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.86× the time of the fastest library (fully validating) way: dump twitter.json: 451 µs citm_catalog.json: 628 µs canada.json: 4,506 µs jeopardy.json: 116,529 µs">
|
||||
<rect class="nj-heat-2" x="685" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.86</text>
|
||||
</g>
|
||||
<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 6.87× the time of the fastest library (fully validating) twitter.json: 1,808 µs · insitu (copy) citm_catalog.json: 2,105 µs · S​AX canada.json: 10,540 µs · S​AX (raw numbers) jeopardy.json: 247,331 µs · S​AX (raw numbers) (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.87</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate 4.94× the time of the fastest library (fully validating) twitter.json: 1,756 µs · insitu (copy untimed) citm_catalog.json: 1,971 µs · S​AX (default precision) canada.json: 4,118 µs · S​AX (string stream, default precision) jeopardy.json: 198,915 µs · insitu (copy untimed)">
|
||||
<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.94</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 5.20× the time of the fastest fully validating library twitter.json: 1,171 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,664 µs · S​AX (no encoding check) canada.json: 10,540 µs · S​AX (raw numbers) (validates fully) jeopardy.json: 158,423 µs · S​AX (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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.20</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 3.76× the time of the fastest fully validating library twitter.json: 1,132 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,572 µs · S​AX (default precision) (no encoding check) canada.json: 4,083 µs · S​AX (string stream, default precision) (no encoding check) jeopardy.json: 131,204 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.76</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 3.25× the time of the fastest library (fully validating) twitter.json: 1,865 µs · insitu (copy) citm_catalog.json: 2,173 µs · S​AX canada.json: 11,995 µs · S​AX jeopardy.json: 258,526 µs · S​AX (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 2.98× the time of the fastest library (fully validating) twitter.json: 1,816 µs · insitu (copy untimed) citm_catalog.json: 2,224 µs · S​AX canada.json: 10,719 µs · S​AX (string stream) jeopardy.json: 206,811 µs · insitu (copy untimed)">
|
||||
<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.25</text>
|
||||
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">2.98</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 2.48× the time of the fastest fully validating library twitter.json: 1,232 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,757 µs · S​AX (no encoding check) canada.json: 11,995 µs · S​AX (validates fully) jeopardy.json: 166,047 µs · S​AX (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 2.28× the time of the fastest fully validating library twitter.json: 1,187 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,765 µs · S​AX (no encoding check) canada.json: 10,719 µs · S​AX (string stream) (validates fully) jeopardy.json: 135,945 µs · S​AX (string stream) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-2" x="363" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.48</text>
|
||||
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.28</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 4.52× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,813 µs citm_catalog.json: 2,306 µs canada.json: 11,750 µs jeopardy.json: 253,907 µs (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 4.20× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 1,762 µs citm_catalog.json: 2,198 µs canada.json: 11,464 µs jeopardy.json: 209,290 µs">
|
||||
<rect class="nj-heat-3" x="409" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.52</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">4.20</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less 3.58× the time of the fastest fully validating library twitter.json: 1,181 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,932 µs · insitu (copy) (no encoding check) canada.json: 11,750 µs · insitu (copy) (validates fully) jeopardy.json: 182,669 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.27× the time of the fastest fully validating library twitter.json: 1,144 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,817 µs · insitu (copy untimed) (no encoding check) canada.json: 11,464 µs · insitu (copy untimed) (validates fully) jeopardy.json: 142,852 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.58</text>
|
||||
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.27</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 3.12× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 2,470 µs citm_catalog.json: 3,194 µs canada.json: 21,016 µs jeopardy.json: 380,503 µs (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 3.06× the time of the fastest library (fully validating) twitter.json: 2,635 µs · insitu (copy) citm_catalog.json: 3,103 µs · insitu (copy untimed) canada.json: 21,139 µs · insitu (copy untimed) jeopardy.json: 333,913 µs · insitu (copy untimed) (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.12</text>
|
||||
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">3.06</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less 2.69× the time of the fastest fully validating library twitter.json: 1,839 µs · insitu (copy) (no encoding check) citm_catalog.json: 2,862 µs · Document (no encoding check) canada.json: 21,016 µs · insitu (copy) (validates fully) jeopardy.json: 311,506 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 2.60× the time of the fastest fully validating library twitter.json: 1,952 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 2,728 µs · insitu (copy untimed) (no encoding check) canada.json: 21,139 µs · insitu (copy untimed) (validates fully) jeopardy.json: 267,081 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.69</text>
|
||||
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.60</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 3.38× the time of the fastest library (fully validating) twitter.json: 2,416 µs · S​AX to Writer citm_catalog.json: 2,870 µs · S​AX to Writer canada.json: 22,073 µs · Document + Writer jeopardy.json: 354,208 µs · S​AX to Writer">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify 3.61× the time of the fastest library (fully validating) twitter.json: 2,808 µs · S​AX to Writer citm_catalog.json: 2,975 µs · S​AX to Writer canada.json: 22,589 µs · Document + Writer jeopardy.json: 358,807 µs · S​AX to Writer (string stream)">
|
||||
<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.38</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.61</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 2.49× the time of the fastest fully validating library twitter.json: 1,751 µs · S​AX to Writer (no encoding check) citm_catalog.json: 2,380 µs · S​AX to Writer (no encoding check) canada.json: 14,655 µs · S​AX to Writer (raw numbers) (no encoding check) jeopardy.json: 261,920 µs · S​AX to Writer (raw numbers) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-2" x="639" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.49</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 2.65× the time of the fastest fully validating library twitter.json: 2,022 µs · S​AX to Writer (raw numbers) (no encoding check) citm_catalog.json: 2,480 µs · S​AX to Writer (no encoding check) canada.json: 14,986 µs · S​AX to Writer (raw numbers) (validates fully) jeopardy.json: 261,527 µs · S​AX to Writer (string stream) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.65</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 2.84× the time of the fastest library (fully validating) way: Writer twitter.json: 627 µs citm_catalog.json: 952 µs canada.json: 9,851 µs jeopardy.json: 126,032 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 2.79× the time of the fastest library (fully validating) way: Writer twitter.json: 627 µs citm_catalog.json: 1,008 µs canada.json: 9,596 µs jeopardy.json: 123,764 µ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.84</text>
|
||||
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.79</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: 46 KiB After Width: | Height: | Size: 46 KiB |
@@ -1,6 +1,6 @@
|
||||
<svg class="nj-fig nj-charts nj-charts--blog nj-charts--heat" viewBox="0 0 784 510" role="img" aria-labelledby="nj-blog-uc-x86-gcc nj-blog-uc-x86-gcc-d" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="nj-blog-uc-x86-gcc">Use cases: time of each library relative to the fastest, x86-64 with G​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 (0.79 doing less, N); nlohmann/json json_document minify: 1.00 (0.79 doing less, N); nlohmann/json json_document write: 1.00 (0.65 doing less, N); yyjson validate: 2.26; yyjson sum: 1.33; yyjson select: 1.39; yyjson edit: 1.47; yyjson minify: 1.28 (1.03 doing less, N); yyjson write: 1.08; sonic-cpp validate: no fully validating way (2.34 doing less, U); sonic-cpp sum: no fully validating way (1.25 doing less, U); sonic-cpp select: no fully validating way (1.46 doing less, U); sonic-cpp edit: no fully validating way (1.20 doing less, U); sonic-cpp minify: no fully validating way (1.35 doing less, U); sonic-cpp write: 1.44; simdjson validate: 2.11; simdjson sum: 1.00; simdjson select: 1.31 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.61 (0.18 doing less, P); simdjson write: 2.27; sonic-rs (Rust) validate: 1.98; sonic-rs (Rust) sum: 1.14; sonic-rs (Rust) select: 1.38; sonic-rs (Rust) edit: 1.91; sonic-rs (Rust) minify: 1.74; sonic-rs (Rust) write: 2.02; Boost.J​SON validate: 1.99; Boost.J​SON sum: 1.28; Boost.J​SON select: 2.19; Boost.J​SON edit: 2.31; Boost.J​SON minify: 2.60; Boost.J​SON write: 2.31; simd-json (Rust) validate: 3.71; simd-json (Rust) sum: 1.92; simd-json (Rust) select: 2.63; simd-json (Rust) edit: 2.90; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 2.29; serde_json (Rust) validate: 2.45 (2.19 doing less, U); serde_json (Rust) sum: 2.36; serde_json (Rust) select: 1.76; serde_json (Rust) edit: 4.56; serde_json (Rust) minify: 4.95; serde_json (Rust) write: 2.23; Glaze validate: 2.90; Glaze sum: 4.19 (4.01 doing less, P); Glaze select: 1.72 (0.61 doing less, P); Glaze edit: 4.50; Glaze minify: 4.68 (0.77 doing less, P); Glaze write: 1.94; nlohmann/json json validate: 2.97; nlohmann/json json sum: 1.69; nlohmann/json json select: 7.27; nlohmann/json json edit: 3.78; nlohmann/json json minify: 4.64; nlohmann/json json write: 1.86; RapidJSON validate: 5.59 (5.06 doing less, U); RapidJSON sum: 2.75 (2.46 doing less, U); RapidJSON select: 3.40 (3.23 doing less, U); RapidJSON edit: 2.63 (2.55 doing less, U); RapidJSON minify: 3.42 (2.54 doing less, U N); RapidJSON write: 2.88.</desc>
|
||||
<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.08; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.79 doing less, N); nlohmann/json json_document minify: 1.00 (0.80 doing less, N); nlohmann/json json_document write: 1.00 (0.64 doing less, N); yyjson validate: 1.94; yyjson sum: 1.14; yyjson select: 1.18; yyjson edit: 1.37; yyjson minify: 1.17 (0.95 doing less, N); yyjson write: 1.11; sonic-cpp validate: no fully validating way (2.32 doing less, U); sonic-cpp sum: no fully validating way (1.24 doing less, U); sonic-cpp select: no fully validating way (1.45 doing less, U); sonic-cpp edit: no fully validating way (1.21 doing less, U); sonic-cpp minify: no fully validating way (1.36 doing less, U); sonic-cpp write: 1.45; simdjson validate: 2.11; simdjson sum: 1.00; simdjson select: 1.27 (0.54 doing less, P); simdjson edit: n/a; simdjson minify: 1.54 (0.17 doing less, P); simdjson write: 2.10; sonic-rs (Rust) validate: 1.93; sonic-rs (Rust) sum: 1.13; sonic-rs (Rust) select: 1.34; sonic-rs (Rust) edit: 1.90; sonic-rs (Rust) minify: 1.71; sonic-rs (Rust) write: 2.04; Boost.J​SON validate: 1.99; Boost.J​SON sum: 1.27; Boost.J​SON select: 2.20; Boost.J​SON edit: 2.30; Boost.J​SON minify: 2.65; Boost.J​SON write: 2.36; simd-json (Rust) validate: 3.62; simd-json (Rust) sum: 1.91; simd-json (Rust) select: 2.56; simd-json (Rust) edit: 2.87; simd-json (Rust) minify: 3.35; simd-json (Rust) write: 2.32; RapidJSON validate: 3.71 (3.41 doing less, U); RapidJSON sum: 2.23 (2.09 doing less, U); RapidJSON select: 2.91 (2.73 doing less, U); RapidJSON edit: 2.41 (2.34 doing less, U); RapidJSON minify: 2.68 (2.42 doing less, U N); RapidJSON write: 2.97; serde_json (Rust) validate: 2.39 (2.14 doing less, U); serde_json (Rust) sum: 2.36; serde_json (Rust) select: 1.71; serde_json (Rust) edit: 4.53; serde_json (Rust) minify: 4.89; serde_json (Rust) write: 2.25; Glaze validate: 2.86; Glaze sum: 4.16; Glaze select: 1.79 (0.58 doing less, P); Glaze edit: 4.47; Glaze minify: 4.81 (0.78 doing less, P); Glaze write: 1.96; nlohmann/json json validate: 2.96; nlohmann/json json sum: 1.70; nlohmann/json json select: 7.12; nlohmann/json json edit: 3.83; nlohmann/json json minify: 4.79; nlohmann/json json write: 1.91.</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,359 +8,354 @@
|
||||
<text class="nj-charts-tick" x="638" y="34">minify</text>
|
||||
<text class="nj-charts-tick" x="730" y="34">write</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 254 µs citm_catalog.json: 510 µs canada.json: 862 µs jeopardy.json: 34,543 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 258 µs citm_catalog.json: 513 µs canada.json: 934 µs jeopardy.json: 34,514 µ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 1.09× the time of the fastest library (fully validating) way: parse twitter.json: 388 µs citm_catalog.json: 967 µs canada.json: 3,634 µs jeopardy.json: 91,873 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum 1.08× the time of the fastest library (fully validating) way: parse twitter.json: 398 µs citm_catalog.json: 972 µs canada.json: 3,501 µs jeopardy.json: 89,756 µ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.08</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) twitter.json: 328 µs · structs (from_json) citm_catalog.json: 773 µs · parse canada.json: 1,306 µs · parse jeopardy.json: 91,598 µs · parse">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) twitter.json: 333 µs · structs (from_json) citm_catalog.json: 828 µs · parse canada.json: 1,368 µs · parse jeopardy.json: 89,876 µ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 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 538 µs citm_catalog.json: 1,112 µs canada.json: 5,519 µs jeopardy.json: 195,482 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 536 µs citm_catalog.json: 1,162 µs canada.json: 5,567 µs jeopardy.json: 192,323 µs">
|
||||
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.79× the time of the fastest fully validating library twitter.json: 534 µs · editable (source numbers) (validates fully) citm_catalog.json: 1,112 µs · editable (validates fully) canada.json: 2,133 µs · editable (source numbers) (validates fully) jeopardy.json: 195,194 µs · editable (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.79× the time of the fastest fully validating library twitter.json: 530 µs · editable (source numbers) (validates fully) citm_catalog.json: 1,149 µs · editable (source numbers) (validates fully) canada.json: 2,188 µs · editable (source numbers) (validates fully) jeopardy.json: 192,323 µs · editable (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.79</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 481 µs citm_catalog.json: 1,034 µs canada.json: 5,163 µs jeopardy.json: 151,260 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 518 µs citm_catalog.json: 1,045 µs canada.json: 5,240 µs jeopardy.json: 143,737 µs">
|
||||
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.79× the time of the fastest fully validating library way: parse + dump (source numbers) twitter.json: 466 µs (validates fully) citm_catalog.json: 1,017 µs (validates fully) canada.json: 2,153 µs (validates fully) jeopardy.json: 149,649 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.80× the time of the fastest fully validating library twitter.json: 496 µs · parse + dump (source numbers) (validates fully) citm_catalog.json: 1,045 µs · parse + dump (validates fully) canada.json: 2,196 µs · parse + dump (source numbers) (validates fully) jeopardy.json: 143,206 µs · parse + dump (source numbers) (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.79</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.80</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 155 µs citm_catalog.json: 251 µs canada.json: 3,844 µs jeopardy.json: 70,827 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 156 µs citm_catalog.json: 251 µs canada.json: 3,842 µs jeopardy.json: 67,769 µs">
|
||||
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.65× the time of the fastest fully validating library way: dump (source numbers) twitter.json: 139 µs (validates fully) citm_catalog.json: 232 µs (validates fully) canada.json: 835 µs (validates fully) jeopardy.json: 69,129 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.64× the time of the fastest fully validating library way: dump (source numbers) twitter.json: 140 µs (validates fully) citm_catalog.json: 230 µs (validates fully) canada.json: 823 µs (validates fully) jeopardy.json: 65,376 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.65</text>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.64</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate 2.26× the time of the fastest library (fully validating) twitter.json: 389 µs · read (raw numbers) citm_catalog.json: 946 µs · insitu (copy) canada.json: 2,133 µs · read (raw numbers) jeopardy.json: 127,616 µs · insitu (copy) (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 1.94× the time of the fastest library (fully validating) twitter.json: 352 µs · insitu (copy untimed) citm_catalog.json: 837 µs · insitu (copy untimed) canada.json: 2,199 µs · read (raw numbers) jeopardy.json: 93,043 µs · insitu (copy untimed)">
|
||||
<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.26</text>
|
||||
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.94</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.33× the time of the fastest library (fully validating) twitter.json: 450 µs · insitu (copy) citm_catalog.json: 1,100 µs · read canada.json: 4,131 µs · read jeopardy.json: 136,960 µs · read (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-1" x="317" y="81" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="102" text-anchor="middle">1.33</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.14× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 415 µs citm_catalog.json: 986 µs canada.json: 3,818 µs jeopardy.json: 97,586 µs">
|
||||
<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>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select 1.39× the time of the fastest library (fully validating) twitter.json: 400 µs · insitu (copy) citm_catalog.json: 950 µs · read canada.json: 2,136 µs · read (raw numbers) jeopardy.json: 138,356 µs · insitu (copy) (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 1.18× the time of the fastest library (fully validating) twitter.json: 366 µs · insitu (copy untimed) citm_catalog.json: 840 µs · insitu (copy untimed) canada.json: 2,204 µs · read (raw numbers) jeopardy.json: 96,172 µs · insitu (copy untimed)">
|
||||
<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.39</text>
|
||||
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.18</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit 1.47× the time of the fastest library (fully validating) twitter.json: 787 µs · mut copy citm_catalog.json: 1,645 µs · insitu (copy) + mut copy canada.json: 7,403 µs · insitu (copy) + mut copy jeopardy.json: 311,249 µs · insitu (copy) + mut copy (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 1.37× the time of the fastest library (fully validating) way: insitu (copy untimed) + mut copy twitter.json: 746 µs citm_catalog.json: 1,526 µs canada.json: 7,479 µs jeopardy.json: 275,025 µs">
|
||||
<rect class="nj-heat-1" x="501" y="81" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.47</text>
|
||||
<text class="nj-charts-cell" x="546" y="102" text-anchor="middle">1.37</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify 1.28× the time of the fastest library (fully validating) twitter.json: 616 µs · insitu (copy) + write citm_catalog.json: 1,273 µs · insitu (copy) + write canada.json: 6,621 µs · read + write jeopardy.json: 203,508 µs · insitu (copy) + write (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 1.17× the time of the fastest library (fully validating) twitter.json: 626 µs · insitu (copy) + write citm_catalog.json: 1,160 µs · insitu (copy untimed) + write canada.json: 6,701 µs · insitu (copy untimed) + write jeopardy.json: 156,605 µs · insitu (copy untimed) + write (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.28</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.17</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less 1.03× the time of the fastest fully validating library twitter.json: 616 µs · insitu (copy) + write (validates fully) citm_catalog.json: 1,224 µs · read (raw numbers) + write (validates fully) canada.json: 2,874 µs · read (raw numbers) + write (validates fully) jeopardy.json: 203,508 µs · insitu (copy) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW) (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, checking less 0.95× the time of the fastest fully validating library twitter.json: 626 µs · insitu (copy) + write (validates fully) citm_catalog.json: 1,160 µs · insitu (copy untimed) + write (validates fully) canada.json: 2,901 µs · read (raw numbers) + write (validates fully) jeopardy.json: 156,605 µs · insitu (copy untimed) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.03</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">0.95</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.08× the time of the fastest library (fully validating) way: write twitter.json: 187 µs citm_catalog.json: 333 µs canada.json: 3,343 µs jeopardy.json: 68,342 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.11× the time of the fastest library (fully validating) way: write twitter.json: 215 µs citm_catalog.json: 319 µs canada.json: 3,360 µs jeopardy.json: 66,669 µ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.11</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 2.34× the time of the fastest fully validating library way: Document twitter.json: 403 µs citm_catalog.json: 931 µs canada.json: 3,170 µs jeopardy.json: 96,915 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.32× the time of the fastest fully validating library way: Document twitter.json: 403 µs citm_catalog.json: 932 µs canada.json: 3,349 µs jeopardy.json: 98,511 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.34</text>
|
||||
<text class="nj-charts-cell" x="270" y="132" text-anchor="middle">2.32</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 1.25× the time of the fastest fully validating library way: Document twitter.json: 460 µs citm_catalog.json: 1,126 µs canada.json: 3,948 µs jeopardy.json: 105,174 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less 1.24× the time of the fastest fully validating library way: Document twitter.json: 456 µs citm_catalog.json: 1,115 µs canada.json: 3,980 µs jeopardy.json: 105,081 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.25</text>
|
||||
<text class="nj-charts-cell" x="362" y="132" text-anchor="middle">1.24</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 1.46× the time of the fastest fully validating library way: Document twitter.json: 408 µs citm_catalog.json: 933 µs canada.json: 3,178 µs jeopardy.json: 113,267 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less 1.45× the time of the fastest fully validating library way: Document twitter.json: 407 µs citm_catalog.json: 948 µs canada.json: 3,464 µs jeopardy.json: 110,885 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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>
|
||||
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.45</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 1.20× the time of the fastest fully validating library way: Document twitter.json: 619 µs citm_catalog.json: 1,434 µs canada.json: 8,257 µs jeopardy.json: 183,468 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.21× the time of the fastest fully validating library way: Document twitter.json: 620 µs citm_catalog.json: 1,438 µs canada.json: 8,495 µs jeopardy.json: 186,078 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.20</text>
|
||||
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.21</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 1.35× the time of the fastest fully validating library way: Document + Serialize twitter.json: 635 µs citm_catalog.json: 1,427 µs canada.json: 8,228 µs jeopardy.json: 175,214 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less 1.36× the time of the fastest fully validating library way: Document + Serialize twitter.json: 675 µs citm_catalog.json: 1,417 µs canada.json: 8,958 µs jeopardy.json: 164,630 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.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 1.44× the time of the fastest library (fully validating) way: Serialize twitter.json: 250 µs citm_catalog.json: 512 µs canada.json: 5,098 µs jeopardy.json: 69,815 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write 1.45× the time of the fastest library (fully validating) way: Serialize twitter.json: 249 µs citm_catalog.json: 509 µs canada.json: 5,074 µs jeopardy.json: 69,916 µ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.44</text>
|
||||
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.45</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 2.11× the time of the fastest library (fully validating) way: D​OM twitter.json: 298 µs citm_catalog.json: 690 µs canada.json: 3,166 µs jeopardy.json: 116,296 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate 2.11× the time of the fastest library (fully validating) way: D​OM twitter.json: 301 µs citm_catalog.json: 695 µs canada.json: 3,337 µs jeopardy.json: 120,982 µ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.11</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.00× the time of the fastest library (fully validating) way: On-Demand twitter.json: 345 µs citm_catalog.json: 802 µs canada.json: 3,465 µs jeopardy.json: 92,425 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.00× the time of the fastest library (fully validating) way: On-Demand twitter.json: 348 µs citm_catalog.json: 805 µs canada.json: 3,452 µs jeopardy.json: 92,769 µ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 1.31× the time of the fastest library (fully validating) way: D​OM twitter.json: 311 µs citm_catalog.json: 698 µs canada.json: 3,263 µs jeopardy.json: 127,285 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.27× the time of the fastest library (fully validating) way: D​OM twitter.json: 313 µs citm_catalog.json: 699 µs canada.json: 3,325 µs jeopardy.json: 122,556 µ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.31</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.27</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less 0.56× the time of the fastest fully validating library twitter.json: 178 µs · On-Demand (key selectors) citm_catalog.json: 495 µs · On-Demand (key selectors) canada.json: 674 µs · On-Demand jeopardy.json: 49,613 µs · On-Demand 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 0.54× the time of the fastest fully validating library twitter.json: 180 µs · On-Demand citm_catalog.json: 496 µs · On-Demand (key selectors) canada.json: 690 µs · On-Demand (key selectors) jeopardy.json: 48,272 µs · On-Demand (key selectors) reads lazily: On-Demand reads only what you ask for and steps over the rest by matching brackets">
|
||||
<rect class="nj-heat-0" x="455" y="153" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="168" text-anchor="middle">0.56</text>
|
||||
<text class="nj-charts-cell" x="476.5" y="168" text-anchor="middle">0.54</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 simdjson's documents are read-only: it has no A​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 1.61× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 788 µs citm_catalog.json: 1,302 µs canada.json: 8,426 µs jeopardy.json: 301,627 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify 1.54× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 714 µs citm_catalog.json: 1,318 µs canada.json: 9,135 µs jeopardy.json: 269,597 µ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>
|
||||
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.54</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.18× the time of the fastest fully validating library way: minify twitter.json: 93.7 µs citm_catalog.json: 279 µs canada.json: 313 µs jeopardy.json: 46,983 µs simdjson::minify() only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.17× the time of the fastest fully validating library way: minify twitter.json: 99.9 µs citm_catalog.json: 278 µs canada.json: 312 µs jeopardy.json: 42,644 µs 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" x="660.5" y="168" text-anchor="middle">0.17</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 2.27× the time of the fastest library (fully validating) way: to_string twitter.json: 463 µs citm_catalog.json: 586 µs canada.json: 5,626 µs jeopardy.json: 185,384 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write 2.10× the time of the fastest library (fully validating) way: to_string twitter.json: 361 µs citm_catalog.json: 614 µs canada.json: 5,609 µs jeopardy.json: 158,492 µ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.27</text>
|
||||
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.10</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 1.98× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate 1.93× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.98</text>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.93</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum 1.14× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum 1.13× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
|
||||
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.13</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.38× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.34× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<rect class="nj-heat-1" x="409" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.38</text>
|
||||
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.34</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.91× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.90× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.91</text>
|
||||
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.90</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.74× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.71× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.74</text>
|
||||
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.71</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.02× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.04× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.02</text>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.04</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J​SON</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.99× the time of the fastest library (fully validating) twitter.json: 687 µs · S​AX citm_catalog.json: 912 µs · S​AX (numbers: none) canada.json: 1,637 µs · S​AX (numbers: none) jeopardy.json: 59,426 µs · S​AX">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.99× the time of the fastest library (fully validating) way: S​AX (numbers: none) twitter.json: 690 µs citm_catalog.json: 917 µs canada.json: 1,676 µs jeopardy.json: 62,781 µ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.99</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.28× the time of the fastest library (fully validating) way: S​AX twitter.json: 698 µs citm_catalog.json: 961 µs canada.json: 5,821 µs jeopardy.json: 60,418 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.27× the time of the fastest library (fully validating) way: S​AX twitter.json: 699 µs citm_catalog.json: 957 µs canada.json: 5,835 µs jeopardy.json: 59,656 µ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.28</text>
|
||||
<text class="nj-charts-cell" x="362" y="246" text-anchor="middle">1.27</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.19× the time of the fastest library (fully validating) twitter.json: 886 µs · parse_into structs citm_catalog.json: 1,268 µs · parse_into structs canada.json: 6,606 µs · parse jeopardy.json: 94,730 µs · parse_into structs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.20× the time of the fastest library (fully validating) twitter.json: 887 µs · parse_into structs citm_catalog.json: 1,270 µs · parse_into structs canada.json: 7,292 µs · parse jeopardy.json: 95,866 µ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.19</text>
|
||||
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.20</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.31× the time of the fastest library (fully validating) way: parse twitter.json: 1,768 µs citm_catalog.json: 2,511 µs canada.json: 12,298 µs jeopardy.json: 339,121 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.30× the time of the fastest library (fully validating) way: parse twitter.json: 1,767 µs citm_catalog.json: 2,493 µs canada.json: 12,767 µs jeopardy.json: 331,310 µ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.31</text>
|
||||
<text class="nj-charts-cell" x="546" y="246" text-anchor="middle">2.30</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 2.60× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,768 µs citm_catalog.json: 2,494 µs canada.json: 12,141 µs jeopardy.json: 330,129 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 2.65× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,974 µs citm_catalog.json: 2,525 µs canada.json: 12,748 µs jeopardy.json: 314,299 µ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.60</text>
|
||||
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.65</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.31× the time of the fastest library (fully validating) way: serialize twitter.json: 455 µs citm_catalog.json: 837 µs canada.json: 5,472 µs jeopardy.json: 144,557 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.36× the time of the fastest library (fully validating) way: serialize twitter.json: 469 µs citm_catalog.json: 830 µs canada.json: 5,659 µs jeopardy.json: 144,174 µ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.31</text>
|
||||
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.36</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 3.71× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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 3.62× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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.71</text>
|
||||
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.62</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum 1.92× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 681 µs citm_catalog.json: 1,650 µs canada.json: 5,083 µs jeopardy.json: 210,185 µs (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 1.91× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 681 µs citm_catalog.json: 1,650 µs canada.json: 5,083 µs jeopardy.json: 210,185 µs (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.92</text>
|
||||
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.91</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select 2.63× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 679 µs citm_catalog.json: 1,731 µs canada.json: 5,144 µs jeopardy.json: 239,164 µs (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 2.56× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 679 µs citm_catalog.json: 1,731 µs canada.json: 5,144 µs jeopardy.json: 239,164 µs (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.63</text>
|
||||
<text class="nj-charts-cell" x="454" y="282" text-anchor="middle">2.56</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · edit 2.90× the time of the fastest library (fully validating) twitter.json: 1,862 µs · borrowed (copy) citm_catalog.json: 4,194 µs · borrowed (copy) canada.json: 14,896 µs · owned (copy) jeopardy.json: 391,369 µs · borrowed (copy) (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 2.87× the time of the fastest library (fully validating) twitter.json: 1,862 µs · borrowed (copy) citm_catalog.json: 4,194 µs · borrowed (copy) canada.json: 14,896 µs · owned (copy) jeopardy.json: 391,369 µs · borrowed (copy) (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.90</text>
|
||||
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">2.87</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify 3.40× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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 3.35× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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.40</text>
|
||||
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.35</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 2.29× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 2.32× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.29</text>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.32</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 2.45× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µs">
|
||||
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.45</text>
|
||||
<text class="nj-charts-rowlabel " x="216" y="318" text-anchor="end">RapidJSON</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate 3.71× the time of the fastest library (fully validating) twitter.json: 1,166 µs · insitu (copy untimed) citm_catalog.json: 1,553 µs · S​AX (string stream, default precision) canada.json: 3,875 µs · S​AX (string stream, default precision) jeopardy.json: 114,704 µs · insitu (copy untimed)">
|
||||
<rect class="nj-heat-3" x="225" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">3.71</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.19× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​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.19</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 3.41× the time of the fastest fully validating library twitter.json: 1,012 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,434 µs · S​AX (default precision) (no encoding check) canada.json: 3,875 µs · S​AX (string stream, default precision) (validates fully) jeopardy.json: 102,635 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-3" x="271" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">3.41</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="RapidJSON · sum 2.23× the time of the fastest library (fully validating) twitter.json: 1,221 µs · insitu (copy untimed) citm_catalog.json: 1,717 µs · S​AX (string stream) canada.json: 9,435 µs · S​AX (string stream) jeopardy.json: 112,158 µs · insitu (copy untimed)">
|
||||
<rect class="nj-heat-2" x="317" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="339.5" y="318" text-anchor="middle">2.23</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 2.09× the time of the fastest fully validating library twitter.json: 1,063 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,635 µs · S​AX (string stream) (no encoding check) canada.json: 9,368 µs · S​AX (string stream) (no encoding check) jeopardy.json: 105,845 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-2" x="363" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="384.5" y="312" text-anchor="middle">2.09</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="325" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select 2.91× the time of the fastest library (fully validating) twitter.json: 1,180 µs · insitu (copy untimed) citm_catalog.json: 1,693 µs · insitu (copy untimed) canada.json: 10,390 µs · Document (string stream) jeopardy.json: 116,394 µs · insitu (copy untimed)">
|
||||
<rect class="nj-heat-3" x="409" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="318" text-anchor="middle">2.91</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less 2.73× the time of the fastest fully validating library twitter.json: 1,022 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,648 µs · insitu (copy untimed) (no encoding check) canada.json: 10,390 µs · Document (string stream) (validates fully) jeopardy.json: 108,290 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-3" x="455" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="312" text-anchor="middle">2.73</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="325" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit 2.41× the time of the fastest library (fully validating) twitter.json: 1,865 µs · insitu (copy untimed) citm_catalog.json: 2,616 µs · insitu (copy untimed) canada.json: 18,812 µs · Document (string stream) jeopardy.json: 245,724 µs · insitu (copy untimed)">
|
||||
<rect class="nj-heat-2" x="501" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="318" text-anchor="middle">2.41</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less 2.34× the time of the fastest fully validating library twitter.json: 1,737 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 2,595 µs · insitu (copy untimed) (no encoding check) canada.json: 18,812 µs · Document (string stream) (validates fully) jeopardy.json: 234,669 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-2" x="547" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="312" text-anchor="middle">2.34</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="325" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify 2.68× the time of the fastest library (fully validating) way: S​AX to Writer (string stream) twitter.json: 1,949 µs citm_catalog.json: 2,382 µs canada.json: 19,548 µs jeopardy.json: 231,979 µs">
|
||||
<rect class="nj-heat-3" x="593" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="318" text-anchor="middle">2.68</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 2.42× the time of the fastest fully validating library twitter.json: 1,880 µs · S​AX to Writer (string stream) (no encoding check) citm_catalog.json: 2,314 µs · S​AX to Writer (string stream) (no encoding check) canada.json: 14,400 µs · S​AX to Writer (raw numbers) (validates fully) jeopardy.json: 224,249 µs · S​AX to Writer (string stream) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-2" x="639" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="312" text-anchor="middle">2.42</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="325" text-anchor="middle">U N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 2.97× the time of the fastest library (fully validating) way: Writer twitter.json: 678 µs citm_catalog.json: 979 µs canada.json: 9,095 µs jeopardy.json: 131,408 µ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">2.97</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 2.39× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µ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.39</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.14× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​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.14</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="361" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum 2.36× the time of the fastest library (fully validating) way: visitor twitter.json: 1,311 µs citm_catalog.json: 2,288 µs canada.json: 7,127 µs jeopardy.json: 129,497 µs">
|
||||
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.36</text>
|
||||
<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">2.36</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 1.76× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 701 µs citm_catalog.json: 1,532 µs canada.json: 2,529 µs jeopardy.json: 107,316 µs">
|
||||
<rect class="nj-heat-2" x="409" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.76</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 1.71× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 701 µs citm_catalog.json: 1,532 µs canada.json: 2,529 µs jeopardy.json: 107,316 µs">
|
||||
<rect class="nj-heat-2" x="409" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="354" text-anchor="middle">1.71</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.56× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.56</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 4.95× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µs">
|
||||
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.95</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.23× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µs">
|
||||
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.23</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="354" text-anchor="end">Glaze</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate 2.90× the time of the fastest library (fully validating) way: validate_json twitter.json: 714 µs citm_catalog.json: 1,974 µs canada.json: 2,521 µs jeopardy.json: 76,716 µs">
|
||||
<rect class="nj-heat-3" x="225" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.90</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.19× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,334 µs citm_catalog.json: 4,099 µs canada.json: 11,762 µs jeopardy.json: 243,497 µs">
|
||||
<rect class="nj-heat-3" x="317" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="339.5" y="354" text-anchor="middle">4.19</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum, checking less 4.01× the time of the fastest fully validating library twitter.json: 2,334 µs · generic (double, strict) (validates fully) citm_catalog.json: 4,062 µs · generic (double) canada.json: 10,370 µs · generic (double) jeopardy.json: 233,200 µs · lazy_json accepts trailing garbage after the value: Glaze's default (validate_trailing_whitespace checks it) 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.01</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="361" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.72× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 604 µs citm_catalog.json: 1,976 µs canada.json: 2,534 µs jeopardy.json: 87,637 µs">
|
||||
<rect class="nj-heat-2" x="409" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.72</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.61× the time of the fastest fully validating library way: structs twitter.json: 344 µs citm_catalog.json: 401 µs canada.json: 418 µs jeopardy.json: 70,801 µs reads into structs and steps over fields it doesn'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.61</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="361" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit 4.50× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,364 µs citm_catalog.json: 6,118 µs canada.json: 20,572 µs jeopardy.json: 626,529 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.53× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<rect class="nj-heat-3" x="501" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.50</text>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.53</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 4.68× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,268 µs citm_catalog.json: 6,057 µs canada.json: 20,639 µs jeopardy.json: 457,013 µs">
|
||||
<rect class="nj-heat-3" x="593" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.68</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 4.89× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µ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.89</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.77× the time of the fastest fully validating library way: minify_json twitter.json: 418 µs citm_catalog.json: 1,292 µs canada.json: 2,650 µs jeopardy.json: 93,423 µs minify_json only removes whitespace, without parsing the values">
|
||||
<rect class="nj-heat-0" x="639" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.77</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="361" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write 1.94× the time of the fastest library (fully validating) way: generic twitter.json: 380 µs citm_catalog.json: 733 µs canada.json: 4,017 µs jeopardy.json: 133,545 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.25× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µ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.94</text>
|
||||
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">2.25</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 2.97× the time of the fastest library (fully validating) way: accept twitter.json: 667 µs citm_catalog.json: 1,426 µs canada.json: 4,398 µs jeopardy.json: 71,489 µs">
|
||||
<text class="nj-charts-rowlabel " x="216" y="390" text-anchor="end">Glaze</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate 2.86× the time of the fastest library (fully validating) way: validate_json twitter.json: 712 µs citm_catalog.json: 1,983 µs canada.json: 2,625 µs jeopardy.json: 76,759 µs">
|
||||
<rect class="nj-heat-3" x="225" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.97</text>
|
||||
<text class="nj-charts-cell" x="270" y="390" text-anchor="middle">2.86</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.69× the time of the fastest library (fully validating) way: sax twitter.json: 814 µs citm_catalog.json: 1,638 µs canada.json: 5,673 µs jeopardy.json: 95,614 µs">
|
||||
<rect class="nj-heat-2" x="317" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="390" text-anchor="middle">1.69</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.16× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,483 µs citm_catalog.json: 4,413 µs canada.json: 10,532 µs jeopardy.json: 231,505 µ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">4.16</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.27× the time of the fastest library (fully validating) way: parse twitter.json: 3,454 µs citm_catalog.json: 5,203 µs canada.json: 11,070 µs jeopardy.json: 426,942 µs">
|
||||
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.27</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.79× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 606 µs citm_catalog.json: 2,476 µs canada.json: 2,557 µs jeopardy.json: 89,957 µs">
|
||||
<rect class="nj-heat-2" x="409" y="369" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="390" text-anchor="middle">1.79</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.78× the time of the fastest library (fully validating) twitter.json: 2,806 µs · ordered_json citm_catalog.json: 4,972 µs · ordered_json canada.json: 14,917 µs · parse jeopardy.json: 635,353 µs · ordered_json">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.58× the time of the fastest fully validating library way: structs twitter.json: 344 µs citm_catalog.json: 402 µs canada.json: 417 µs jeopardy.json: 67,467 µs reads into structs and steps over fields it doesn't know without checking them (validate_skipped checks them too)">
|
||||
<rect class="nj-heat-0" x="455" y="369" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="384" text-anchor="middle">0.58</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="397" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit 4.47× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,389 µs citm_catalog.json: 6,002 µs canada.json: 21,598 µs jeopardy.json: 607,767 µ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">3.78</text>
|
||||
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">4.47</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.64× the time of the fastest library (fully validating) way: parse + dump twitter.json: 3,861 µs citm_catalog.json: 5,772 µs canada.json: 14,812 µs jeopardy.json: 546,637 µs">
|
||||
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.64</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 4.81× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,685 µs citm_catalog.json: 5,942 µs canada.json: 22,138 µs jeopardy.json: 450,322 µs">
|
||||
<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">4.81</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.86× the time of the fastest library (fully validating) way: dump twitter.json: 424 µs citm_catalog.json: 656 µs canada.json: 3,870 µs jeopardy.json: 117,712 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.78× the time of the fastest fully validating library way: minify_json twitter.json: 442 µs citm_catalog.json: 1,292 µs canada.json: 2,726 µs jeopardy.json: 97,377 µs minify_json only removes whitespace, without parsing the values">
|
||||
<rect class="nj-heat-0" x="639" y="369" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="384" text-anchor="middle">0.78</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="397" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write 1.96× the time of the fastest library (fully validating) way: generic twitter.json: 381 µs citm_catalog.json: 730 µs canada.json: 4,071 µs jeopardy.json: 131,946 µ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.96</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 5.59× the time of the fastest library (fully validating) twitter.json: 1,250 µs · insitu (copy) citm_catalog.json: 1,893 µs · insitu (copy) canada.json: 10,133 µs · S​AX (raw numbers) jeopardy.json: 157,360 µs · insitu (copy) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-4" x="225" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="426" text-anchor="middle">5.59</text>
|
||||
<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 2.96× the time of the fastest library (fully validating) way: accept twitter.json: 683 µs citm_catalog.json: 1,419 µs canada.json: 4,559 µs jeopardy.json: 74,331 µ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">2.96</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 5.06× the time of the fastest fully validating library twitter.json: 1,089 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,590 µs · S​AX (no encoding check) canada.json: 10,051 µs · insitu (copy) (no encoding check) jeopardy.json: 145,703 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-4" x="271" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">5.06</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.70× the time of the fastest library (fully validating) way: sax twitter.json: 814 µs citm_catalog.json: 1,666 µs canada.json: 5,690 µs jeopardy.json: 97,414 µ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>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum 2.75× the time of the fastest library (fully validating) twitter.json: 1,300 µs · insitu (copy) citm_catalog.json: 2,039 µs · insitu (copy) canada.json: 11,309 µs · S​AX jeopardy.json: 170,218 µs · insitu (copy) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-3" x="317" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">2.75</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.12× the time of the fastest library (fully validating) twitter.json: 3,360 µs · structs (from_json) citm_catalog.json: 5,268 µs · structs (from_json) canada.json: 12,006 µs · structs (from_json) jeopardy.json: 410,221 µs · parse">
|
||||
<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.12</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 2.46× the time of the fastest fully validating library twitter.json: 1,141 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,680 µs · S​AX (no encoding check) canada.json: 10,991 µs · insitu (copy) (no encoding check) jeopardy.json: 155,049 µs · S​AX (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-2" x="363" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="384.5" y="420" text-anchor="middle">2.46</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="384.5" y="433" text-anchor="middle">U</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.83× the time of the fastest library (fully validating) way: ordered_json twitter.json: 2,832 µs citm_catalog.json: 4,970 µs canada.json: 15,806 µs jeopardy.json: 647,704 µs">
|
||||
<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">3.83</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select 3.40× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,261 µs citm_catalog.json: 1,893 µs canada.json: 10,263 µs jeopardy.json: 165,979 µs (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-3" x="409" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">3.40</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.79× the time of the fastest library (fully validating) way: parse + dump twitter.json: 4,196 µs citm_catalog.json: 5,806 µs canada.json: 16,626 µs jeopardy.json: 529,560 µs">
|
||||
<rect class="nj-heat-3" x="593" y="405" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="426" text-anchor="middle">4.79</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less 3.23× the time of the fastest fully validating library twitter.json: 1,096 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,834 µs · insitu (copy) (no encoding check) canada.json: 10,263 µs · insitu (copy) (validates fully) jeopardy.json: 159,427 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-3" x="455" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.23</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="433" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit 2.63× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,951 µs citm_catalog.json: 2,858 µs canada.json: 19,274 µs jeopardy.json: 288,710 µs (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-3" x="501" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">2.63</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less 2.55× the time of the fastest fully validating library way: insitu (copy) (no encoding check) twitter.json: 1,793 µs citm_catalog.json: 2,785 µs canada.json: 18,934 µs jeopardy.json: 288,194 µs trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (copy): parses in place, on a copy of the input that is part of the time">
|
||||
<rect class="nj-heat-3" x="547" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.55</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="433" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify 3.42× the time of the fastest library (fully validating) twitter.json: 2,431 µs · S​AX to Writer citm_catalog.json: 2,815 µs · S​AX to Writer canada.json: 20,693 µs · Document + Writer jeopardy.json: 375,304 µs · S​AX to Writer">
|
||||
<rect class="nj-heat-3" x="593" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="426" text-anchor="middle">3.42</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 2.54× the time of the fastest fully validating library twitter.json: 1,730 µs · S​AX to Writer (no encoding check) citm_catalog.json: 2,395 µs · S​AX to Writer (no encoding check) canada.json: 14,118 µs · S​AX to Writer (raw numbers) (no encoding check) jeopardy.json: 274,873 µs · S​AX to Writer (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.54</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 2.88× the time of the fastest library (fully validating) way: Writer twitter.json: 637 µs citm_catalog.json: 983 µs canada.json: 8,996 µs jeopardy.json: 130,099 µs">
|
||||
<rect class="nj-heat-3" x="685" y="405" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">2.88</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.91× the time of the fastest library (fully validating) way: dump twitter.json: 444 µs citm_catalog.json: 640 µs canada.json: 4,089 µs jeopardy.json: 117,316 µ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.91</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: 46 KiB After Width: | Height: | Size: 45 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​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.06; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.82 doing less, N); nlohmann/json json_document minify: 1.00 (0.80 doing less, N); nlohmann/json json_document write: 1.00 (0.68 doing less, N); yyjson validate: 2.13; yyjson sum: 1.47; yyjson select: 1.41; yyjson edit: 1.61; yyjson minify: 1.41 (1.06 doing less, N); yyjson write: 1.14; sonic-cpp validate: no fully validating way (2.30 doing less, U); sonic-cpp sum: no fully validating way (1.29 doing less, U); sonic-cpp select: no fully validating way (1.54 doing less, U); sonic-cpp edit: no fully validating way (1.27 doing less, U); sonic-cpp minify: no fully validating way (1.40 doing less, U); sonic-cpp write: 1.48; simdjson validate: 1.99; simdjson sum: 1.00; simdjson select: 1.33 (0.57 doing less, P); simdjson edit: n/a; simdjson minify: 1.64 (0.22 doing less, P); simdjson write: 2.20; sonic-rs (Rust) validate: 1.83; sonic-rs (Rust) sum: 1.14; sonic-rs (Rust) select: 1.36; sonic-rs (Rust) edit: 1.92; sonic-rs (Rust) minify: 1.76; sonic-rs (Rust) write: 2.03; Boost.J​SON validate: 1.91; Boost.J​SON sum: 1.33; Boost.J​SON select: 2.29; Boost.J​SON edit: 2.58; Boost.J​SON minify: 2.89; Boost.J​SON write: 2.51; simd-json (Rust) validate: 3.44; simd-json (Rust) sum: 1.93; simd-json (Rust) select: 2.59; simd-json (Rust) edit: 2.91; simd-json (Rust) minify: 3.45; simd-json (Rust) write: 2.31; serde_json (Rust) validate: 2.27 (2.03 doing less, U); serde_json (Rust) sum: 2.38; serde_json (Rust) select: 1.74; serde_json (Rust) edit: 4.59; serde_json (Rust) minify: 5.02; serde_json (Rust) write: 2.25; Glaze validate: 2.16; Glaze sum: 4.06; Glaze select: 1.41 (0.59 doing less, P); Glaze edit: 4.95; Glaze minify: 4.95 (0.71 doing less, P); Glaze write: 1.78; nlohmann/json json validate: 2.72; nlohmann/json json sum: 1.67; nlohmann/json json select: 7.23; nlohmann/json json edit: 3.87; nlohmann/json json minify: 4.68; nlohmann/json json write: 1.89; RapidJSON validate: 6.26 (4.90 doing less, U); RapidJSON sum: 3.19 (2.51 doing less, U); RapidJSON select: 4.10 (3.37 doing less, U); RapidJSON edit: 3.04 (2.70 doing less, U); RapidJSON minify: 3.67 (2.69 doing less, U N); RapidJSON write: 3.03.</desc>
|
||||
<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.08; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.83 doing less, N); nlohmann/json json_document minify: 1.00 (0.83 doing less, N); nlohmann/json json_document write: 1.00 (0.71 doing less, N); yyjson validate: 1.81; yyjson sum: 1.28; yyjson select: 1.22; yyjson edit: 1.49; yyjson minify: 1.27 (0.97 doing less, N); yyjson write: 1.14; sonic-cpp validate: no fully validating way (2.24 doing less, U); sonic-cpp sum: no fully validating way (1.28 doing less, U); sonic-cpp select: no fully validating way (1.53 doing less, U); sonic-cpp edit: no fully validating way (1.26 doing less, U); sonic-cpp minify: no fully validating way (1.42 doing less, U); sonic-cpp write: 1.50; simdjson validate: 2.01; simdjson sum: 1.00; simdjson select: 1.35 (0.57 doing less, P); simdjson edit: n/a; simdjson minify: 1.58 (0.22 doing less, P); simdjson write: 2.07; sonic-rs (Rust) validate: 1.79; sonic-rs (Rust) sum: 1.11; sonic-rs (Rust) select: 1.37; sonic-rs (Rust) edit: 1.91; sonic-rs (Rust) minify: 1.73; sonic-rs (Rust) write: 2.07; Boost.J​SON validate: 1.88; Boost.J​SON sum: 1.33; Boost.J​SON select: 2.30; Boost.J​SON edit: 2.55; Boost.J​SON minify: 2.92; Boost.J​SON write: 2.56; simd-json (Rust) validate: 3.35; simd-json (Rust) sum: 1.88; simd-json (Rust) select: 2.61; simd-json (Rust) edit: 2.89; simd-json (Rust) minify: 3.39; simd-json (Rust) write: 2.35; serde_json (Rust) validate: 2.22 (1.98 doing less, U); serde_json (Rust) sum: 2.32; serde_json (Rust) select: 1.75; serde_json (Rust) edit: 4.55; serde_json (Rust) minify: 4.94; serde_json (Rust) write: 2.28; Glaze validate: 2.21; Glaze sum: 4.04; Glaze select: 1.44 (0.60 doing less, P); Glaze edit: 4.85; Glaze minify: 5.10 (0.73 doing less, P); Glaze write: 1.84; nlohmann/json json validate: 2.74; nlohmann/json json sum: 1.67; nlohmann/json json select: 7.24; nlohmann/json json edit: 3.81; nlohmann/json json minify: 4.79; nlohmann/json json write: 1.99; RapidJSON validate: 4.50 (3.40 doing less, U); RapidJSON sum: 2.98 (2.29 doing less, U); RapidJSON select: 3.84 (3.06 doing less, U); RapidJSON edit: 2.92 (2.58 doing less, U); RapidJSON minify: 3.64 (2.64 doing less, U N); RapidJSON write: 3.11.</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,119 +8,119 @@
|
||||
<text class="nj-charts-tick" x="638" y="34">minify</text>
|
||||
<text class="nj-charts-tick" x="730" y="34">write</text>
|
||||
<text class="nj-charts-rowlabel nj-charts-name-json" x="216" y="66" text-anchor="end">nlohmann/json json_document</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 269 µs citm_catalog.json: 576 µs canada.json: 984 µs jeopardy.json: 34,383 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · validate 1.00× the time of the fastest library (fully validating) way: accept twitter.json: 271 µs citm_catalog.json: 609 µs canada.json: 1,011 µs jeopardy.json: 34,722 µ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 1.06× the time of the fastest library (fully validating) way: parse twitter.json: 391 µs citm_catalog.json: 919 µs canada.json: 3,687 µs jeopardy.json: 83,751 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · sum 1.08× the time of the fastest library (fully validating) way: parse twitter.json: 392 µs citm_catalog.json: 946 µs canada.json: 3,888 µs jeopardy.json: 89,044 µ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.06</text>
|
||||
<text class="nj-charts-cell" x="362" y="66" text-anchor="middle">1.08</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 335 µs citm_catalog.json: 740 µs canada.json: 1,358 µs jeopardy.json: 94,846 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · select 1.00× the time of the fastest library (fully validating) way: parse twitter.json: 332 µs citm_catalog.json: 765 µs canada.json: 1,390 µs jeopardy.json: 88,202 µ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 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 534 µs citm_catalog.json: 1,091 µs canada.json: 5,634 µs jeopardy.json: 192,274 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit 1.00× the time of the fastest library (fully validating) way: editable twitter.json: 532 µs citm_catalog.json: 1,116 µs canada.json: 5,714 µs jeopardy.json: 192,363 µs">
|
||||
<rect class="nj-heat-0" x="501" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="523.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.82× the time of the fastest fully validating library twitter.json: 534 µs · editable (validates fully) citm_catalog.json: 1,091 µs · editable (validates fully) canada.json: 2,606 µs · editable (source numbers) (validates fully) jeopardy.json: 192,274 µs · editable (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · edit, checking less 0.83× the time of the fastest fully validating library twitter.json: 532 µs · editable (validates fully) citm_catalog.json: 1,116 µs · editable (validates fully) canada.json: 2,702 µs · editable (source numbers) (validates fully) jeopardy.json: 192,363 µs · editable (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="547" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.82</text>
|
||||
<text class="nj-charts-cell" x="568.5" y="60" text-anchor="middle">0.83</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="568.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) way: parse + dump twitter.json: 485 µs citm_catalog.json: 1,004 µs canada.json: 5,260 µs jeopardy.json: 142,985 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify 1.00× the time of the fastest library (fully validating) twitter.json: 483 µs · parse + dump citm_catalog.json: 1,014 µs · parse + dump canada.json: 5,459 µs · parse_copy + dump jeopardy.json: 146,320 µs · parse + dump">
|
||||
<rect class="nj-heat-0" x="593" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.80× the time of the fastest fully validating library way: parse + dump (source numbers) twitter.json: 484 µs (validates fully) citm_catalog.json: 990 µs (validates fully) canada.json: 2,236 µs (validates fully) jeopardy.json: 138,808 µs (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · minify, checking less 0.83× the time of the fastest fully validating library twitter.json: 483 µs · parse + dump (validates fully) citm_catalog.json: 1,014 µs · parse + dump (validates fully) canada.json: 2,620 µs · parse + dump (source numbers) (validates fully) jeopardy.json: 146,320 µs · parse + dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="639" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.80</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="60" text-anchor="middle">0.83</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 151 µs citm_catalog.json: 270 µs canada.json: 3,827 µs jeopardy.json: 66,099 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write 1.00× the time of the fastest library (fully validating) way: dump twitter.json: 150 µs citm_catalog.json: 260 µs canada.json: 3,861 µs jeopardy.json: 63,958 µs">
|
||||
<rect class="nj-heat-0" x="685" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="707.5" y="66" text-anchor="middle">1.00</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.68× the time of the fastest fully validating library twitter.json: 148 µs · dump (source numbers) (validates fully) citm_catalog.json: 255 µs · dump (source numbers) (validates fully) canada.json: 870 µs · dump (source numbers) (validates fully) jeopardy.json: 66,099 µs · dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json_document · write, checking less 0.71× the time of the fastest fully validating library twitter.json: 148 µs · dump (source numbers) (validates fully) citm_catalog.json: 260 µs · dump (validates fully) canada.json: 998 µs · dump (source numbers) (validates fully) jeopardy.json: 63,958 µs · dump (validates fully) copies each number's text instead of formatting it (number_format::source)">
|
||||
<rect class="nj-heat-0" x="731" y="45" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.68</text>
|
||||
<text class="nj-charts-cell" x="752.5" y="60" text-anchor="middle">0.71</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="752.5" y="73" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="102" text-anchor="end">yyjson</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · validate 2.13× the time of the fastest library (fully validating) twitter.json: 392 µs · insitu (copy) citm_catalog.json: 991 µs · read (raw numbers) canada.json: 2,209 µs · read (raw numbers) jeopardy.json: 125,376 µs · read (raw numbers) (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 1.81× the time of the fastest library (fully validating) twitter.json: 348 µs · insitu (copy untimed) citm_catalog.json: 878 µs · insitu (copy untimed) canada.json: 2,256 µs · read (raw numbers) jeopardy.json: 90,959 µs · insitu (copy untimed)">
|
||||
<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.13</text>
|
||||
<text class="nj-charts-cell" x="270" y="102" text-anchor="middle">1.81</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · sum 1.47× the time of the fastest library (fully validating) twitter.json: 445 µs · insitu (copy) citm_catalog.json: 1,153 µs · read canada.json: 5,982 µs · read jeopardy.json: 132,844 µs · read (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 1.28× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 407 µs citm_catalog.json: 1,045 µs canada.json: 6,021 µs jeopardy.json: 99,764 µs">
|
||||
<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.28</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · select 1.41× the time of the fastest library (fully validating) twitter.json: 399 µs · read citm_catalog.json: 996 µs · insitu (copy) canada.json: 2,221 µs · read (raw numbers) jeopardy.json: 142,096 µs · read (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 1.22× the time of the fastest library (fully validating) twitter.json: 361 µs · insitu (copy untimed) citm_catalog.json: 880 µs · insitu (copy untimed) canada.json: 2,236 µs · read (raw numbers) jeopardy.json: 98,637 µs · insitu (copy untimed)">
|
||||
<rect class="nj-heat-1" x="409" y="81" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.41</text>
|
||||
<text class="nj-charts-cell" x="454" y="102" text-anchor="middle">1.22</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit 1.61× the time of the fastest library (fully validating) twitter.json: 806 µs · insitu (copy) + mut copy citm_catalog.json: 1,712 µs · mut copy canada.json: 9,794 µs · insitu (copy) + mut copy jeopardy.json: 314,081 µs · mut copy (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.61</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · edit 1.49× the time of the fastest library (fully validating) way: insitu (copy untimed) + mut copy twitter.json: 761 µs citm_catalog.json: 1,590 µs canada.json: 9,860 µs jeopardy.json: 271,227 µs">
|
||||
<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>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify 1.41× the time of the fastest library (fully validating) twitter.json: 633 µs · insitu (copy) + write citm_catalog.json: 1,327 µs · read + write canada.json: 8,944 µs · insitu (copy) + write jeopardy.json: 194,228 µs · insitu (copy) + write (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 1.27× the time of the fastest library (fully validating) twitter.json: 592 µs · insitu (copy untimed) + write citm_catalog.json: 1,205 µs · insitu (copy untimed) + write canada.json: 9,008 µs · read + write jeopardy.json: 158,577 µs · insitu (copy untimed) + write">
|
||||
<rect class="nj-heat-1" x="593" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.41</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="102" text-anchor="middle">1.27</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · minify, checking less 1.06× the time of the fastest fully validating library twitter.json: 633 µs · insitu (copy) + write (validates fully) citm_catalog.json: 1,268 µs · read (raw numbers) + write (validates fully) canada.json: 2,942 µs · read (raw numbers) + write (validates fully) jeopardy.json: 194,228 µs · insitu (copy) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW) (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, checking less 0.97× the time of the fastest fully validating library twitter.json: 592 µs · insitu (copy untimed) + write (validates fully) citm_catalog.json: 1,205 µs · insitu (copy untimed) + write (validates fully) canada.json: 3,106 µs · read (raw numbers) + write (validates fully) jeopardy.json: 158,577 µs · insitu (copy untimed) + write (validates fully) copies each number's text instead of formatting it (YYJSON_READ_NUMBER_AS_RAW)">
|
||||
<rect class="nj-heat-0" x="639" y="81" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">1.06</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="96" text-anchor="middle">0.97</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="109" text-anchor="middle">N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.14× the time of the fastest library (fully validating) way: write twitter.json: 205 µs citm_catalog.json: 334 µs canada.json: 3,525 µs jeopardy.json: 71,877 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="yyjson · write 1.14× the time of the fastest library (fully validating) way: write twitter.json: 204 µs citm_catalog.json: 327 µs canada.json: 3,748 µs jeopardy.json: 65,989 µ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.14</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="138" text-anchor="end">sonic-cpp</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.30× the time of the fastest fully validating library way: Document twitter.json: 416 µs citm_catalog.json: 1,034 µs canada.json: 3,563 µs jeopardy.json: 95,396 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · validate, checking less 2.24× the time of the fastest fully validating library way: Document twitter.json: 408 µs citm_catalog.json: 1,028 µs canada.json: 3,622 µs jeopardy.json: 96,080 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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" x="270" y="132" text-anchor="middle">2.24</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 1.29× the time of the fastest fully validating library way: Document twitter.json: 462 µs citm_catalog.json: 1,211 µs canada.json: 4,178 µs jeopardy.json: 102,429 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · sum, checking less 1.28× the time of the fastest fully validating library way: Document twitter.json: 460 µs citm_catalog.json: 1,210 µs canada.json: 4,295 µs jeopardy.json: 107,092 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.28</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 1.54× the time of the fastest fully validating library way: Document twitter.json: 415 µs citm_catalog.json: 1,040 µs canada.json: 3,708 µs jeopardy.json: 111,786 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · select, checking less 1.53× the time of the fastest fully validating library way: Document twitter.json: 413 µs citm_catalog.json: 1,043 µs canada.json: 3,695 µs jeopardy.json: 108,297 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<rect class="nj-heat-2" x="409" y="117" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.54</text>
|
||||
<text class="nj-charts-cell" x="454" y="132" text-anchor="middle">1.53</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="454" y="145" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.27× the time of the fastest fully validating library way: Document twitter.json: 635 µs citm_catalog.json: 1,558 µs canada.json: 8,793 µs jeopardy.json: 186,661 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · edit, checking less 1.26× the time of the fastest fully validating library way: Document twitter.json: 637 µs citm_catalog.json: 1,559 µs canada.json: 8,936 µs jeopardy.json: 186,232 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.27</text>
|
||||
<text class="nj-charts-cell" x="546" y="132" text-anchor="middle">1.26</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 1.40× the time of the fastest fully validating library way: Document + Serialize twitter.json: 648 µs citm_catalog.json: 1,551 µs canada.json: 8,646 µs jeopardy.json: 162,814 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn't check it">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · minify, checking less 1.42× the time of the fastest fully validating library way: Document + Serialize twitter.json: 695 µs citm_catalog.json: 1,541 µs canada.json: 8,838 µs jeopardy.json: 168,901 µs trusts U​TF-8: sonic-cpp 1.0.2 doesn'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.40</text>
|
||||
<text class="nj-charts-cell" x="638" y="132" text-anchor="middle">1.42</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 1.48× the time of the fastest library (fully validating) way: Serialize twitter.json: 258 µs citm_catalog.json: 536 µs canada.json: 5,070 µs jeopardy.json: 71,191 µs">
|
||||
<rect class="nj-heat-1" x="685" y="117" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="138" text-anchor="middle">1.48</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-cpp · write 1.50× the time of the fastest library (fully validating) way: Serialize twitter.json: 256 µs citm_catalog.json: 541 µs canada.json: 5,120 µs jeopardy.json: 69,546 µ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>
|
||||
<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 1.99× the time of the fastest library (fully validating) way: D​OM twitter.json: 311 µs citm_catalog.json: 750 µs canada.json: 3,111 µs jeopardy.json: 114,707 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · validate 2.01× the time of the fastest library (fully validating) way: D​OM twitter.json: 311 µs citm_catalog.json: 780 µs canada.json: 3,351 µs jeopardy.json: 116,704 µ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.99</text>
|
||||
<text class="nj-charts-cell" x="270" y="174" text-anchor="middle">2.01</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.00× the time of the fastest library (fully validating) way: On-Demand twitter.json: 356 µs citm_catalog.json: 811 µs canada.json: 3,330 µs jeopardy.json: 89,536 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · sum 1.00× the time of the fastest library (fully validating) way: On-Demand twitter.json: 356 µs citm_catalog.json: 812 µs canada.json: 3,435 µs jeopardy.json: 96,250 µ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 1.33× the time of the fastest library (fully validating) way: D​OM twitter.json: 320 µs citm_catalog.json: 755 µs canada.json: 3,149 µs jeopardy.json: 129,932 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select 1.35× the time of the fastest library (fully validating) way: D​OM twitter.json: 324 µs citm_catalog.json: 756 µs canada.json: 3,409 µs jeopardy.json: 123,214 µ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.33</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="174" text-anchor="middle">1.35</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · select, checking less 0.57× the time of the fastest fully validating library twitter.json: 184 µs · On-Demand (key selectors) citm_catalog.json: 508 µs · On-Demand canada.json: 701 µs · On-Demand jeopardy.json: 51,763 µs · On-Demand (key selectors) 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 0.57× the time of the fastest fully validating library twitter.json: 184 µs · On-Demand (key selectors) citm_catalog.json: 509 µs · On-Demand canada.json: 700 µs · On-Demand jeopardy.json: 48,614 µs · On-Demand 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.57</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="476.5" y="181" text-anchor="middle">P</text>
|
||||
@@ -129,233 +129,233 @@
|
||||
<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 1.64× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 795 µs citm_catalog.json: 1,396 µs canada.json: 8,342 µs jeopardy.json: 283,280 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify 1.58× the time of the fastest library (fully validating) way: D​OM + to_string twitter.json: 742 µs citm_catalog.json: 1,393 µs canada.json: 8,808 µs jeopardy.json: 266,718 µ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.64</text>
|
||||
<text class="nj-charts-cell" x="615.5" y="174" text-anchor="middle">1.58</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.22× the time of the fastest fully validating library way: minify twitter.json: 123 µs citm_catalog.json: 336 µs canada.json: 423 µs jeopardy.json: 44,890 µs simdjson::minify() only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · minify, checking less 0.22× the time of the fastest fully validating library way: minify twitter.json: 123 µs citm_catalog.json: 337 µs canada.json: 433 µs jeopardy.json: 47,040 µs 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.22</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="181" text-anchor="middle">P</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write 2.20× the time of the fastest library (fully validating) way: to_string twitter.json: 457 µs citm_catalog.json: 618 µs canada.json: 4,906 µs jeopardy.json: 175,750 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simdjson · write 2.07× the time of the fastest library (fully validating) way: to_string twitter.json: 359 µs citm_catalog.json: 637 µs canada.json: 4,999 µs jeopardy.json: 154,364 µ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.20</text>
|
||||
<text class="nj-charts-cell" x="730" y="174" text-anchor="middle">2.07</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 1.83× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · validate 1.79× the time of the fastest library (fully validating) way: IgnoredAny twitter.json: 501 µs citm_catalog.json: 970 µs canada.json: 2,249 µs jeopardy.json: 54,369 µs">
|
||||
<rect class="nj-heat-2" x="225" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.83</text>
|
||||
<text class="nj-charts-cell" x="270" y="210" text-anchor="middle">1.79</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum 1.14× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · sum 1.11× the time of the fastest library (fully validating) way: visitor twitter.json: 501 µs citm_catalog.json: 1,123 µs canada.json: 4,397 µs jeopardy.json: 59,583 µs">
|
||||
<rect class="nj-heat-0" x="317" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="210" text-anchor="middle">1.14</text>
|
||||
<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 1.36× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · select 1.37× the time of the fastest library (fully validating) way: structs twitter.json: 504 µs citm_catalog.json: 1,033 µs canada.json: 2,328 µs jeopardy.json: 90,486 µs">
|
||||
<rect class="nj-heat-1" x="409" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.36</text>
|
||||
<text class="nj-charts-cell" x="454" y="210" text-anchor="middle">1.37</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.92× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · edit 1.91× the time of the fastest library (fully validating) way: Value twitter.json: 1,197 µs citm_catalog.json: 2,389 µs canada.json: 7,744 µs jeopardy.json: 390,952 µs">
|
||||
<rect class="nj-heat-2" x="501" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.92</text>
|
||||
<text class="nj-charts-cell" x="546" y="210" text-anchor="middle">1.91</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.76× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · minify 1.73× the time of the fastest library (fully validating) way: Value twitter.json: 1,000 µs citm_catalog.json: 2,097 µs canada.json: 7,795 µs jeopardy.json: 215,280 µs">
|
||||
<rect class="nj-heat-2" x="593" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.76</text>
|
||||
<text class="nj-charts-cell" x="638" y="210" text-anchor="middle">1.73</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.03× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="sonic-rs (Rust) · write 2.07× the time of the fastest library (fully validating) way: Value twitter.json: 434 µs citm_catalog.json: 927 µs canada.json: 3,987 µs jeopardy.json: 109,176 µs">
|
||||
<rect class="nj-heat-2" x="685" y="189" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.03</text>
|
||||
<text class="nj-charts-cell" x="730" y="210" text-anchor="middle">2.07</text>
|
||||
</g>
|
||||
<text class="nj-charts-rowlabel " x="216" y="246" text-anchor="end">Boost.J​SON</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.91× the time of the fastest library (fully validating) twitter.json: 723 µs · S​AX (numbers: none) citm_catalog.json: 933 µs · S​AX (numbers: none) canada.json: 1,674 µs · S​AX (numbers: none) jeopardy.json: 61,382 µs · S​AX">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · validate 1.88× the time of the fastest library (fully validating) way: S​AX (numbers: none) twitter.json: 710 µs citm_catalog.json: 969 µs canada.json: 1,718 µs jeopardy.json: 61,476 µ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.91</text>
|
||||
<text class="nj-charts-cell" x="270" y="246" text-anchor="middle">1.88</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.33× the time of the fastest library (fully validating) way: S​AX twitter.json: 736 µs citm_catalog.json: 1,018 µs canada.json: 5,847 µs jeopardy.json: 62,361 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · sum 1.33× the time of the fastest library (fully validating) way: S​AX twitter.json: 734 µs citm_catalog.json: 1,030 µs canada.json: 6,103 µs jeopardy.json: 64,382 µ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.33</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.29× the time of the fastest library (fully validating) way: parse_into structs twitter.json: 889 µs citm_catalog.json: 1,383 µs canada.json: 6,906 µs jeopardy.json: 102,896 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · select 2.30× the time of the fastest library (fully validating) twitter.json: 884 µs · parse_into structs citm_catalog.json: 1,380 µs · parse_into structs canada.json: 7,217 µs · parse jeopardy.json: 99,078 µ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.29</text>
|
||||
<text class="nj-charts-cell" x="454" y="246" text-anchor="middle">2.30</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.58× the time of the fastest library (fully validating) way: parse twitter.json: 1,921 µs citm_catalog.json: 2,957 µs canada.json: 13,679 µs jeopardy.json: 357,636 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · edit 2.55× the time of the fastest library (fully validating) way: parse twitter.json: 1,963 µs citm_catalog.json: 2,936 µs canada.json: 13,414 µs jeopardy.json: 356,244 µ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.58</text>
|
||||
<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​SON · minify 2.89× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 1,933 µs citm_catalog.json: 2,927 µs canada.json: 13,580 µs jeopardy.json: 333,217 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · minify 2.92× the time of the fastest library (fully validating) way: parse + serialize twitter.json: 2,086 µs citm_catalog.json: 2,919 µs canada.json: 13,974 µs jeopardy.json: 334,468 µ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.89</text>
|
||||
<text class="nj-charts-cell" x="638" y="246" text-anchor="middle">2.92</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.51× the time of the fastest library (fully validating) way: serialize twitter.json: 464 µs citm_catalog.json: 999 µs canada.json: 6,202 µs jeopardy.json: 142,516 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Boost.J​SON · write 2.56× the time of the fastest library (fully validating) way: serialize twitter.json: 480 µs citm_catalog.json: 1,016 µs canada.json: 6,154 µs jeopardy.json: 139,022 µs">
|
||||
<rect class="nj-heat-3" x="685" y="225" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.51</text>
|
||||
<text class="nj-charts-cell" x="730" y="246" text-anchor="middle">2.56</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 3.44× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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 3.35× the time of the fastest library (fully validating) way: tape (copy) twitter.json: 567 µs citm_catalog.json: 1,430 µs canada.json: 4,359 µs jeopardy.json: 207,551 µs (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>
|
||||
<text class="nj-charts-cell" x="270" y="282" text-anchor="middle">3.35</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · sum 1.93× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 681 µs citm_catalog.json: 1,650 µs canada.json: 5,083 µs jeopardy.json: 210,185 µs (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 1.88× the time of the fastest library (fully validating) way: visitor (copy) twitter.json: 681 µs citm_catalog.json: 1,650 µs canada.json: 5,083 µs jeopardy.json: 210,185 µs (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.93</text>
|
||||
<text class="nj-charts-cell" x="362" y="282" text-anchor="middle">1.88</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · select 2.59× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 679 µs citm_catalog.json: 1,731 µs canada.json: 5,144 µs jeopardy.json: 239,164 µs (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 2.61× the time of the fastest library (fully validating) way: structs (copy) twitter.json: 679 µs citm_catalog.json: 1,731 µs canada.json: 5,144 µs jeopardy.json: 239,164 µs (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.59</text>
|
||||
<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 2.91× the time of the fastest library (fully validating) twitter.json: 1,862 µs · borrowed (copy) citm_catalog.json: 4,194 µs · borrowed (copy) canada.json: 14,896 µs · owned (copy) jeopardy.json: 391,369 µs · borrowed (copy) (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 2.89× the time of the fastest library (fully validating) twitter.json: 1,862 µs · borrowed (copy) citm_catalog.json: 4,194 µs · borrowed (copy) canada.json: 14,896 µs · owned (copy) jeopardy.json: 391,369 µs · borrowed (copy) (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.91</text>
|
||||
<text class="nj-charts-cell" x="546" y="282" text-anchor="middle">2.89</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · minify 3.45× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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 3.39× the time of the fastest library (fully validating) way: borrowed (copy) twitter.json: 1,889 µs citm_catalog.json: 4,196 µs canada.json: 15,716 µs jeopardy.json: 414,377 µs (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.45</text>
|
||||
<text class="nj-charts-cell" x="638" y="282" text-anchor="middle">3.39</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 2.31× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="simd-json (Rust) · write 2.35× the time of the fastest library (fully validating) way: borrowed twitter.json: 582 µs citm_catalog.json: 800 µs canada.json: 5,147 µs jeopardy.json: 122,623 µs">
|
||||
<rect class="nj-heat-2" x="685" y="261" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.31</text>
|
||||
<text class="nj-charts-cell" x="730" y="282" text-anchor="middle">2.35</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 2.27× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate 2.22× the time of the fastest library (fully validating) way: from_utf8 + IgnoredAny twitter.json: 624 µs citm_catalog.json: 1,440 µs canada.json: 2,406 µs jeopardy.json: 64,720 µs">
|
||||
<rect class="nj-heat-2" x="225" y="297" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.27</text>
|
||||
<text class="nj-charts-cell" x="247.5" y="318" text-anchor="middle">2.22</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 2.03× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​TF-8 in the strings it skips (from_slice); strings it reads are checked">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · validate, checking less 1.98× the time of the fastest fully validating library way: IgnoredAny twitter.json: 484 µs citm_catalog.json: 1,370 µs canada.json: 2,314 µs jeopardy.json: 58,247 µs trusts U​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.03</text>
|
||||
<text class="nj-charts-cell" x="292.5" y="312" text-anchor="middle">1.98</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 2.38× the time of the fastest library (fully validating) way: visitor twitter.json: 1,311 µs citm_catalog.json: 2,288 µs canada.json: 7,127 µs jeopardy.json: 129,497 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · sum 2.32× the time of the fastest library (fully validating) way: visitor twitter.json: 1,311 µs citm_catalog.json: 2,288 µs canada.json: 7,127 µs jeopardy.json: 129,497 µs">
|
||||
<rect class="nj-heat-2" x="317" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.38</text>
|
||||
<text class="nj-charts-cell" x="362" y="318" text-anchor="middle">2.32</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 1.74× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 701 µs citm_catalog.json: 1,532 µs canada.json: 2,529 µs jeopardy.json: 107,316 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · select 1.75× the time of the fastest library (fully validating) way: from_utf8 + structs twitter.json: 701 µs citm_catalog.json: 1,532 µs canada.json: 2,529 µs jeopardy.json: 107,316 µs">
|
||||
<rect class="nj-heat-2" x="409" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.74</text>
|
||||
<text class="nj-charts-cell" x="454" y="318" text-anchor="middle">1.75</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.59× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · edit 4.55× the time of the fastest library (fully validating) way: Value twitter.json: 4,042 µs citm_catalog.json: 6,586 µs canada.json: 16,631 µs jeopardy.json: 632,766 µs">
|
||||
<rect class="nj-heat-3" x="501" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.59</text>
|
||||
<text class="nj-charts-cell" x="546" y="318" text-anchor="middle">4.55</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 5.02× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µs">
|
||||
<rect class="nj-heat-4" x="593" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">5.02</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · minify 4.94× the time of the fastest library (fully validating) way: Value twitter.json: 4,012 µs citm_catalog.json: 6,583 µs canada.json: 17,306 µs jeopardy.json: 509,702 µs">
|
||||
<rect class="nj-heat-3" x="593" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="318" text-anchor="middle">4.94</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.25× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="serde_json (Rust) · write 2.28× the time of the fastest library (fully validating) way: Value twitter.json: 550 µs citm_catalog.json: 887 µs canada.json: 4,005 µs jeopardy.json: 134,163 µs">
|
||||
<rect class="nj-heat-2" x="685" y="297" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.25</text>
|
||||
<text class="nj-charts-cell" x="730" y="318" text-anchor="middle">2.28</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 2.16× the time of the fastest library (fully validating) way: validate_json twitter.json: 592 µs citm_catalog.json: 1,417 µs canada.json: 1,868 µs jeopardy.json: 72,510 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · validate 2.21× the time of the fastest library (fully validating) way: validate_json twitter.json: 590 µs citm_catalog.json: 1,545 µs canada.json: 1,980 µs jeopardy.json: 76,009 µ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.16</text>
|
||||
<text class="nj-charts-cell" x="270" y="354" text-anchor="middle">2.21</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.06× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,350 µs citm_catalog.json: 4,048 µs canada.json: 10,485 µs jeopardy.json: 233,680 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · sum 4.04× the time of the fastest library (fully validating) way: generic (double, strict) twitter.json: 2,345 µs citm_catalog.json: 4,080 µs canada.json: 10,576 µs jeopardy.json: 250,685 µs">
|
||||
<rect class="nj-heat-3" x="317" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">4.06</text>
|
||||
<text class="nj-charts-cell" x="362" y="354" text-anchor="middle">4.04</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.41× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 526 µs citm_catalog.json: 1,453 µs canada.json: 1,902 µs jeopardy.json: 87,166 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select 1.44× the time of the fastest library (fully validating) way: structs (validate_skipped) twitter.json: 529 µs citm_catalog.json: 1,435 µs canada.json: 1,913 µs jeopardy.json: 91,253 µ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.41</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="354" text-anchor="middle">1.44</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.59× the time of the fastest fully validating library way: structs twitter.json: 341 µs citm_catalog.json: 405 µs canada.json: 432 µs jeopardy.json: 66,832 µs reads into structs and steps over fields it doesn't know without checking them (validate_skipped checks them too)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · select, checking less 0.60× the time of the fastest fully validating library way: structs twitter.json: 342 µs citm_catalog.json: 410 µs canada.json: 431 µs jeopardy.json: 66,069 µs reads into structs and steps over fields it doesn't know without checking them (validate_skipped checks them too)">
|
||||
<rect class="nj-heat-0" x="455" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="476.5" y="348" text-anchor="middle">0.59</text>
|
||||
<text class="nj-charts-cell" 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 4.95× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,600 µs citm_catalog.json: 6,812 µs canada.json: 22,771 µs jeopardy.json: 676,289 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · edit 4.85× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,525 µs citm_catalog.json: 6,551 µs canada.json: 23,644 µs jeopardy.json: 661,941 µs">
|
||||
<rect class="nj-heat-3" x="501" y="333" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.95</text>
|
||||
<text class="nj-charts-cell" x="546" y="354" text-anchor="middle">4.85</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 4.95× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,324 µs citm_catalog.json: 6,164 µs canada.json: 22,576 µs jeopardy.json: 476,579 µs">
|
||||
<rect class="nj-heat-3" x="593" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="615.5" y="354" text-anchor="middle">4.95</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify 5.10× the time of the fastest library (fully validating) way: generic (strict) twitter.json: 3,780 µs citm_catalog.json: 6,416 µs canada.json: 23,765 µs jeopardy.json: 458,311 µ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.10</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.71× the time of the fastest fully validating library way: minify_json twitter.json: 419 µs citm_catalog.json: 1,112 µs canada.json: 2,095 µs jeopardy.json: 96,282 µs minify_json only removes whitespace, without parsing the values">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · minify, checking less 0.73× the time of the fastest fully validating library way: minify_json twitter.json: 422 µs citm_catalog.json: 1,144 µs canada.json: 2,350 µs jeopardy.json: 96,405 µs minify_json only removes whitespace, without parsing the values">
|
||||
<rect class="nj-heat-0" x="639" y="333" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.71</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="348" text-anchor="middle">0.73</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 1.78× the time of the fastest library (fully validating) twitter.json: 332 µs · generic citm_catalog.json: 655 µs · generic canada.json: 3,676 µs · generic (strict) jeopardy.json: 128,044 µs · generic">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="Glaze · write 1.84× the time of the fastest library (fully validating) twitter.json: 360 µs · generic citm_catalog.json: 660 µs · generic canada.json: 3,714 µs · generic (strict) jeopardy.json: 124,598 µ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.78</text>
|
||||
<text class="nj-charts-cell" x="730" y="354" text-anchor="middle">1.84</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 2.72× the time of the fastest library (fully validating) way: accept twitter.json: 698 µs citm_catalog.json: 1,299 µs canada.json: 4,370 µs jeopardy.json: 72,856 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · validate 2.74× the time of the fastest library (fully validating) way: accept twitter.json: 677 µs citm_catalog.json: 1,433 µs canada.json: 4,584 µs jeopardy.json: 73,561 µ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.72</text>
|
||||
<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 1.67× the time of the fastest library (fully validating) way: sax twitter.json: 792 µs citm_catalog.json: 1,545 µs canada.json: 5,697 µs jeopardy.json: 95,144 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · sum 1.67× the time of the fastest library (fully validating) way: sax twitter.json: 797 µs citm_catalog.json: 1,548 µs canada.json: 6,004 µs jeopardy.json: 101,516 µ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.67</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.23× the time of the fastest library (fully validating) twitter.json: 3,323 µs · parse citm_catalog.json: 5,055 µs · parse canada.json: 12,002 µs · structs (from_json) jeopardy.json: 432,006 µs · parse">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · select 7.24× the time of the fastest library (fully validating) way: structs (from_json) twitter.json: 3,325 µs citm_catalog.json: 5,126 µs canada.json: 11,908 µs jeopardy.json: 423,362 µs">
|
||||
<rect class="nj-heat-4" x="409" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.23</text>
|
||||
<text class="nj-charts-cell" x="454" y="390" text-anchor="middle">7.24</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.87× the time of the fastest library (fully validating) way: ordered_json twitter.json: 2,840 µs citm_catalog.json: 4,985 µs canada.json: 15,317 µs jeopardy.json: 649,500 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · edit 3.81× the time of the fastest library (fully validating) way: ordered_json twitter.json: 2,912 µs citm_catalog.json: 4,999 µs canada.json: 15,603 µs jeopardy.json: 604,744 µ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">3.87</text>
|
||||
<text class="nj-charts-cell" x="546" y="390" text-anchor="middle">3.81</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.68× the time of the fastest library (fully validating) way: parse + dump twitter.json: 3,753 µs citm_catalog.json: 5,669 µs canada.json: 15,647 µs jeopardy.json: 527,354 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · minify 4.79× the time of the fastest library (fully validating) way: parse + dump twitter.json: 4,143 µs citm_catalog.json: 5,702 µs canada.json: 16,463 µs jeopardy.json: 528,092 µs">
|
||||
<rect class="nj-heat-3" x="593" y="369" width="90" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.68</text>
|
||||
<text class="nj-charts-cell" x="638" y="390" text-anchor="middle">4.79</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.89× the time of the fastest library (fully validating) way: dump twitter.json: 437 µs citm_catalog.json: 631 µs canada.json: 4,027 µs jeopardy.json: 119,028 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="nlohmann/json json · write 1.99× the time of the fastest library (fully validating) way: dump twitter.json: 471 µs citm_catalog.json: 644 µs canada.json: 4,344 µs jeopardy.json: 114,096 µ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.89</text>
|
||||
<text class="nj-charts-cell" x="730" y="390" text-anchor="middle">1.99</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 6.26× the time of the fastest library (fully validating) twitter.json: 1,694 µs · insitu (copy) citm_catalog.json: 2,222 µs · insitu (copy) canada.json: 10,357 µs · S​AX (raw numbers) jeopardy.json: 207,460 µs · insitu (copy) (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.26</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate 4.50× the time of the fastest library (fully validating) twitter.json: 1,552 µs · insitu (copy untimed) citm_catalog.json: 2,210 µs · insitu (copy untimed) canada.json: 4,104 µs · S​AX (string stream, default precision) jeopardy.json: 168,747 µs · insitu (copy untimed)">
|
||||
<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.50</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · validate, checking less 4.90× the time of the fastest fully validating library twitter.json: 1,126 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,695 µs · S​AX (no encoding check) canada.json: 10,357 µs · S​AX (raw numbers) (validates fully) jeopardy.json: 153,062 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.40× the time of the fastest fully validating library twitter.json: 1,082 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,570 µs · S​AX (default precision) (no encoding check) canada.json: 4,104 µs · S​AX (string stream, default precision) (validates fully) jeopardy.json: 110,856 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<rect class="nj-heat-3" x="271" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">4.90</text>
|
||||
<text class="nj-charts-cell" x="292.5" y="420" text-anchor="middle">3.40</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="292.5" y="433" text-anchor="middle">U</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum 3.19× the time of the fastest library (fully validating) twitter.json: 1,647 µs · insitu (copy) citm_catalog.json: 2,326 µs · S​AX canada.json: 10,949 µs · S​AX jeopardy.json: 212,747 µs · insitu (copy) (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 2.98× the time of the fastest library (fully validating) twitter.json: 1,616 µs · insitu (copy untimed) citm_catalog.json: 2,290 µs · insitu (copy untimed) canada.json: 11,183 µs · S​AX (string stream) jeopardy.json: 181,500 µs · insitu (copy untimed)">
|
||||
<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.19</text>
|
||||
<text class="nj-charts-cell" x="339.5" y="426" text-anchor="middle">2.98</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 2.51× the time of the fastest fully validating library twitter.json: 1,169 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,739 µs · S​AX (no encoding check) canada.json: 10,825 µs · S​AX (no encoding check) jeopardy.json: 156,639 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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.51</text>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · sum, checking less 2.29× the time of the fastest fully validating library twitter.json: 1,130 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,743 µs · S​AX (no encoding check) canada.json: 11,109 µs · S​AX (string stream) (no encoding check) jeopardy.json: 119,706 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.29</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 4.10× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 1,601 µs citm_catalog.json: 2,216 µs canada.json: 11,491 µs jeopardy.json: 221,481 µs (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 3.84× the time of the fastest library (fully validating) way: insitu (copy untimed) twitter.json: 1,560 µs citm_catalog.json: 2,127 µs canada.json: 11,547 µs jeopardy.json: 176,066 µs">
|
||||
<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.10</text>
|
||||
<text class="nj-charts-cell" x="431.5" y="426" text-anchor="middle">3.84</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · select, checking less 3.37× the time of the fastest fully validating library twitter.json: 1,117 µs · insitu (copy) (no encoding check) citm_catalog.json: 1,920 µs · Document (no encoding check) canada.json: 11,482 µs · insitu (copy) (no encoding check) jeopardy.json: 166,715 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 3.06× the time of the fastest fully validating library twitter.json: 1,079 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 1,817 µs · insitu (copy untimed) (no encoding check) canada.json: 11,436 µs · Document (string stream) (no encoding check) jeopardy.json: 122,354 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.37</text>
|
||||
<text class="nj-charts-cell" x="476.5" y="420" text-anchor="middle">3.06</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 3.04× the time of the fastest library (fully validating) way: insitu (copy) twitter.json: 2,334 µs citm_catalog.json: 3,188 µs canada.json: 20,424 µs jeopardy.json: 354,478 µs (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 2.92× the time of the fastest library (fully validating) twitter.json: 2,333 µs · insitu (copy untimed) citm_catalog.json: 3,133 µs · insitu (copy untimed) canada.json: 20,518 µs · insitu (copy) jeopardy.json: 315,892 µs · insitu (copy untimed) (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.04</text>
|
||||
<text class="nj-charts-cell" x="523.5" y="426" text-anchor="middle">2.92</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · edit, checking less 2.70× the time of the fastest fully validating library twitter.json: 1,892 µs · insitu (copy) (no encoding check) citm_catalog.json: 2,898 µs · Document (no encoding check) canada.json: 20,424 µs · insitu (copy) (validates fully) jeopardy.json: 297,773 µs · insitu (copy) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) (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 2.58× the time of the fastest fully validating library twitter.json: 1,838 µs · insitu (copy untimed) (no encoding check) citm_catalog.json: 2,836 µs · insitu (copy untimed) (no encoding check) canada.json: 20,320 µs · Document (string stream) (no encoding check) jeopardy.json: 271,888 µs · insitu (copy untimed) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it)">
|
||||
<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.70</text>
|
||||
<text class="nj-charts-cell" x="568.5" y="420" text-anchor="middle">2.58</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 3.67× the time of the fastest library (fully validating) twitter.json: 2,716 µs · S​AX to Writer citm_catalog.json: 3,082 µs · S​AX to Writer canada.json: 20,610 µs · Document + Writer jeopardy.json: 386,778 µs · S​AX to Writer">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify 3.64× the time of the fastest library (fully validating) twitter.json: 3,015 µs · S​AX to Writer citm_catalog.json: 3,012 µs · S​AX to Writer canada.json: 21,177 µs · Document + Writer jeopardy.json: 355,727 µs · S​AX to Writer (string stream)">
|
||||
<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.67</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 2.69× the time of the fastest fully validating library twitter.json: 1,837 µs · S​AX to Writer (no encoding check) citm_catalog.json: 2,508 µs · S​AX to Writer (no encoding check) canada.json: 14,998 µs · S​AX to Writer (raw numbers) (no encoding check) jeopardy.json: 277,974 µs · S​AX to Writer (raw numbers) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · minify, checking less 2.64× the time of the fastest fully validating library twitter.json: 1,978 µs · S​AX to Writer (no encoding check) citm_catalog.json: 2,493 µs · S​AX to Writer (no encoding check) canada.json: 15,512 µs · S​AX to Writer (raw numbers) (no encoding check) jeopardy.json: 249,235 µs · S​AX to Writer (string stream) (no encoding check) trusts U​TF-8: RapidJSON's default (kParseValidateEncodingFlag checks it) copies each number's text instead of formatting it (kParseNumbersAsStringsFlag)">
|
||||
<rect class="nj-heat-3" x="639" y="405" width="44" height="34" rx="3"/>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.69</text>
|
||||
<text class="nj-charts-cell" x="660.5" y="420" text-anchor="middle">2.64</text>
|
||||
<text class="nj-charts-cell nj-charts-cell--small" x="660.5" y="433" text-anchor="middle">U N</text>
|
||||
</g>
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 3.03× the time of the fastest library (fully validating) way: Writer twitter.json: 669 µs citm_catalog.json: 1,025 µs canada.json: 9,078 µs jeopardy.json: 140,116 µs">
|
||||
<g class="nj-heat-cell" tabindex="0" data-tip="RapidJSON · write 3.11× the time of the fastest library (fully validating) way: Writer twitter.json: 717 µs citm_catalog.json: 1,033 µs canada.json: 9,017 µs jeopardy.json: 134,260 µ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">3.03</text>
|
||||
<text class="nj-charts-cell" x="730" y="426" text-anchor="middle">3.11</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: 45 KiB After Width: | Height: | Size: 45 KiB |
@@ -43,6 +43,10 @@ files use the select and edit of their originals.
|
||||
The input is a `const std::string` holding the file, with at least 64 bytes of spare capacity (`reserve`), so libraries
|
||||
that need padding (simdjson) can use it without a copy. A variant that modifies the input (in-situ parsing: yyjson
|
||||
`YYJSON_READ_INSITU`, RapidJSON `ParseInsitu`, simd-json) copies it inside the timed call; its name says `(copy)`.
|
||||
The C++ in-situ variants also run as `(copy untimed)`: the copy is made before the timer starts and freed after it
|
||||
stops, as for a program that reads a file into a buffer it owns and no longer needs. They are reported but never
|
||||
chosen as a library's best. `json_document`'s `parse_copy` is the opposite case: a document that owns a copy of its
|
||||
text.
|
||||
Each timed call starts from the text and frees everything it built, except variants named `(reused)` or
|
||||
`(reused allocator)`, which keep a parser, document or allocator across calls (simdjson's reused parsers,
|
||||
`json_document::read()`, Boost.JSON's reset `parser` and `basic_parser`, yyjson's dynamic allocator, RapidJSON's
|
||||
@@ -107,11 +111,11 @@ Level on the Mac in brackets where it is not `full` (`P` = partial, `U` = no UTF
|
||||
|
||||
| library | validate | sum | select | edit | minify | write |
|
||||
|---|---|---|---|---|---|---|
|
||||
| nlohmann json_document | `accept`, `parse`, `read (reused)` | `parse`, `read (reused)` | `parse`, `structs (from_json)`, `read (reused)` | `editable`, `editable (source numbers)` (`json_editable_document`: set/erase, `dump` with `number_format::source`) | `parse + dump`, `parse + dump (source numbers)`, `read + dump (reused)` | `dump`, `dump (source numbers)` |
|
||||
| nlohmann json_document | `accept`, `parse`, `read (reused)` | `parse`, `parse_copy`, `read (reused)` | `parse`, `parse_copy`, `structs (from_json)`, `read (reused)` | `editable`, `editable (source numbers)` (`json_editable_document`: set/erase, `dump` with `number_format::source`) | `parse + dump`, `parse_copy + dump`, `parse + dump (source numbers)`, `read + dump (reused)` | `dump`, `dump (source numbers)` |
|
||||
| nlohmann json | `accept`, `parse` | `parse`, `sax` | `parse`, `structs (from_json)` | `parse`, `ordered_json` | `parse + dump` | `dump` |
|
||||
| yyjson | `read`, `insitu (copy)`, `read (raw numbers)`, `read (reused allocator)` | `read`, `insitu (copy)`, `read (reused allocator)` | `read`, `insitu (copy)`, `read (raw numbers)`, `read (reused allocator)` | `mut copy`, `insitu (copy) + mut copy` (`yyjson_doc_mut_copy`) | `read + write`, `insitu (copy) + write`, `read (raw numbers) + write`, `read + write (reused allocator)` | `write` |
|
||||
| yyjson | `read`, `insitu (copy)`, `insitu (copy untimed)`, `read (raw numbers)`, `read (reused allocator)` | `read`, `insitu (copy)`, `insitu (copy untimed)`, `read (reused allocator)` | `read`, `insitu (copy)`, `insitu (copy untimed)`, `read (raw numbers)`, `read (reused allocator)` | `mut copy`, `insitu (copy) + mut copy` (`yyjson_doc_mut_copy`), `insitu (copy untimed) + mut copy` | `read + write`, `insitu (copy) + write`, `insitu (copy untimed) + write`, `read (raw numbers) + write`, `read + write (reused allocator)` | `write` |
|
||||
| simdjson | `DOM`, `DOM (reused)` | `DOM`, `DOM (reused)`, `On-Demand`, `On-Demand (reused)` | `DOM`, `DOM (reused)`, `On-Demand` [P], `On-Demand (reused)` [P], `On-Demand structs` [P], `On-Demand (key selectors)` [P] | n/a (no mutable document) | `DOM + to_string`, `DOM (reused) + to_string`, `minify` [P] | `to_string` |
|
||||
| RapidJSON | `SAX` (null handler), `Document`, `insitu (copy)`, `SAX (raw numbers)`, `Document (reused allocator)` | `Document`, `SAX`, `insitu (copy)`, `Document (reused allocator)` | `Document`, `insitu (copy)`, `Document (raw numbers)`, `Document (reused allocator)` | `Document`, `insitu (copy)` | `Document + Writer`, `SAX to Writer`, `SAX to Writer (raw numbers)`, `Document + Writer (reused allocator)` | `Writer` |
|
||||
| RapidJSON | `SAX` (null handler), `Document`, `insitu (copy)`, `insitu (copy untimed)`, `SAX (string stream)`, `SAX (default precision)`, `SAX (string stream, default precision)`, `SAX (raw numbers)`, `Document (reused allocator)` | `Document`, `SAX`, `insitu (copy)`, `insitu (copy untimed)`, `SAX (string stream)`, `Document (reused allocator)` | `Document`, `insitu (copy)`, `insitu (copy untimed)`, `Document (string stream)`, `Document (raw numbers)`, `Document (reused allocator)` | `Document`, `insitu (copy)`, `insitu (copy untimed)`, `Document (string stream)` | `Document + Writer`, `SAX to Writer`, `SAX to Writer (string stream)`, `SAX to Writer (raw numbers)`, `Document + Writer (reused allocator)` | `Writer` |
|
||||
| RapidJSON, `(no encoding check)` | the same [U] | the same [U] | the same [U] | the same [U] | the same [U] | |
|
||||
| sonic-cpp | `Document` [U] | `Document` [U] | `Document` [U] | `Document` [U] | `Document + Serialize` [U] | `Serialize` |
|
||||
| Glaze | `validate_json`, `generic` [P], `generic (double)` [P], `generic (strict)`, `generic (double, strict)` | `generic` [P], `generic (double)` [P], `generic (strict)`, `generic (double, strict)`, `lazy_json` [P], `lazy_json (string_view)` (x) | `structs` [P], `structs (validate_skipped)`, `generic` [P], `generic (double)` [P], `generic (strict)`, `generic (double, strict)`, `lazy_json` [P], `lazy_json (string_view)` (x) | `generic` [P], `generic (double)` (x), `generic (strict)`, `generic (double, strict)` (x) | `generic` [P], `generic (double)` (x), `generic (strict)`, `generic (double, strict)` (x), `minify_json` [P] | `generic`, `generic (double)` (x), `generic (strict)`, `generic (double, strict)` (x) |
|
||||
@@ -140,7 +144,10 @@ described struct, so their members are not counted. `key selectors` are simdjson
|
||||
`DeserializeSeed` that sums without building a value; `SAX` and `sax` are the libraries' event interfaces with a
|
||||
summing (or, for `validate`, an empty) handler. RapidJSON parses with `kParseFullPrecisionFlag` (correctly rounded
|
||||
floats; without it, sums and written floats are wrong) and Boost.JSON with `number_precision::precise`, as every other
|
||||
library rounds correctly by default.
|
||||
library rounds correctly by default; only `validate`, which reads no number, also has RapidJSON's `(default
|
||||
precision)`. RapidJSON's `Document::Parse(data, size)` and our `SAX` read through `EncodedInputStream<MemoryStream>`;
|
||||
`(string stream)` reads the NUL-terminated string through `StringStream`, as `Document::Parse(const char*)` does,
|
||||
where RapidJSON has a SIMD string scanner (used only without `kParseValidateEncodingFlag`).
|
||||
|
||||
Variants named `(raw numbers)` or `(numbers: none)` use a library's mode that validates numbers without converting
|
||||
them (yyjson `YYJSON_READ_NUMBER_AS_RAW`, RapidJSON `kParseNumbersAsStringsFlag`, Boost.JSON
|
||||
@@ -159,7 +166,7 @@ control characters, e.g. U+0001, unescaped, which is not JSON; `gsoc-2018.json`
|
||||
|---|---|---|
|
||||
| `json_document`, `json` | this checkout | |
|
||||
| yyjson | 0.13.0 | |
|
||||
| simdjson | 5.0.8 | |
|
||||
| simdjson | 5.1.1 | the single-header files of the tag |
|
||||
| sonic-cpp | 1.0.2 | |
|
||||
| RapidJSON | master 24b5e7a8b27f (2025-02-05) | |
|
||||
| Glaze | 9.1.0 | `generic_u64` and `generic` (owning DOMs, member order kept) |
|
||||
@@ -173,7 +180,8 @@ SHA-256 of the downloads:
|
||||
30edf9e47c417f653546c39295fdb66ba5f89fb37eb3780122c6ee66605e5837 sonic-cpp v1.0.2.tar.gz
|
||||
2d2601a82d2d3b7e143a3c8d43ef616671391034bc46891a9816b79cf2d3e7a8 rapidjson 24b5e7a8b27f42fa16b96fc70aade9106cf7102f.tar.gz
|
||||
34e0f62a2bc11ab20d601e8ca1cc2b2079503aa45119a19133d89d19b94a0fae yyjson 0.13.0.tar.gz
|
||||
356cc3a2d6a3d0d45bf5eba813e58ef4f2f6d9cc2a25d8aada2563bc13755789 simdjson-v5.0.8.tar.gz
|
||||
f3e5ee5f39051960b5ce65762ee4b6919caf270675eb52240ebd92f21a5bcefd simdjson v5.1.1 singleheader/simdjson.h
|
||||
3ea5f501cef6c2e16e28095b566feeb56021ca473aaf50aad32102f45d734195 simdjson v5.1.1 singleheader/simdjson.cpp
|
||||
c4a3b310ddd2472416e091067166b0713be97c63f38c212c484ada022fd296ce boost_1_92_0.tar.gz
|
||||
```
|
||||
|
||||
@@ -189,13 +197,13 @@ at most the given number).
|
||||
|
||||
All libraries except yyjson and simdjson are used header-only. With the downloads unpacked into `DL`
|
||||
(`compare.py --download` fetches yyjson and Boost into its build directory, and simdjson 4.6.11, so take simdjson
|
||||
5.0.8 from its release archive):
|
||||
5.1.1's `singleheader` files from its tag):
|
||||
|
||||
```sh
|
||||
cc -O3 -DNDEBUG -c $DL/yyjson-0.13.0/src/yyjson.c -o yyjson.o
|
||||
c++ -std=c++17 -O3 -DNDEBUG -c $DL/simdjson-5.0.8/singleheader/simdjson.cpp -o simdjson.o
|
||||
c++ -std=c++17 -O3 -DNDEBUG -c $DL/simdjson-5.1.1/singleheader/simdjson.cpp -o simdjson.o
|
||||
c++ -std=c++23 -O3 -DNDEBUG -DRAPIDJSON_NEON \
|
||||
-I ../../../../include -I $DL/yyjson-0.13.0/src -I $DL/simdjson-5.0.8/singleheader -I $DL/boost_1_92_0 \
|
||||
-I ../../../../include -I $DL/yyjson-0.13.0/src -I $DL/simdjson-5.1.1/singleheader -I $DL/boost_1_92_0 \
|
||||
-I $DL/glaze-9.1.0/include -I $DL/rapidjson/include -I $DL/sonic/include \
|
||||
bench_all.cpp yyjson.o simdjson.o -o bench_all
|
||||
./bench_all <json_test_data> 30 > mac-cpp-1.log
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
// Usage: bench_all <json_test_data dir> [rounds] [document] [use case]
|
||||
// bench_all --files <dir> [rounds] [document] [use case] (every *.json file of dir: validate, sum, minify, write)
|
||||
// bench_all --conformance <dir> (every validate variant on every *.json file of dir)
|
||||
// BENCH_ONLY=<prefix>[,<prefix>...] times only the variants whose name starts with one of them (e.g. "nlohmann ")
|
||||
#include <nlohmann/json_view.hpp>
|
||||
|
||||
#include <boost/describe.hpp>
|
||||
@@ -357,6 +358,79 @@ struct yy_insitu
|
||||
}
|
||||
};
|
||||
|
||||
// "(copy untimed)": an in-situ way whose input copy is made before the timer starts and freed after it stops, as for
|
||||
// a program that reads a file into a buffer it owns and no longer needs; never chosen as a library's best. Outside
|
||||
// the timing loop (the checks and probes), take() copies the input itself.
|
||||
struct input_copies
|
||||
{
|
||||
std::vector<char*> bufs;
|
||||
std::size_t next = 0;
|
||||
void make(const std::string& s, int n)
|
||||
{
|
||||
clear();
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
char* b = static_cast<char*>(std::malloc(s.size() + YYJSON_PADDING_SIZE));
|
||||
std::memcpy(b, s.data(), s.size());
|
||||
std::memset(b + s.size(), 0, YYJSON_PADDING_SIZE);
|
||||
bufs.push_back(b);
|
||||
}
|
||||
}
|
||||
void clear()
|
||||
{
|
||||
for (char* b : bufs)
|
||||
{
|
||||
std::free(b);
|
||||
}
|
||||
bufs.clear();
|
||||
next = 0;
|
||||
}
|
||||
};
|
||||
static input_copies g_copies;
|
||||
|
||||
struct taken_copy
|
||||
{
|
||||
char* buf = nullptr;
|
||||
bool owned = false;
|
||||
explicit taken_copy(const std::string& s)
|
||||
{
|
||||
if (g_copies.next < g_copies.bufs.size())
|
||||
{
|
||||
buf = g_copies.bufs[g_copies.next++];
|
||||
return;
|
||||
}
|
||||
owned = true;
|
||||
buf = static_cast<char*>(std::malloc(s.size() + YYJSON_PADDING_SIZE));
|
||||
std::memcpy(buf, s.data(), s.size());
|
||||
std::memset(buf + s.size(), 0, YYJSON_PADDING_SIZE);
|
||||
}
|
||||
taken_copy(const taken_copy&) = delete;
|
||||
taken_copy& operator=(const taken_copy&) = delete;
|
||||
~taken_copy()
|
||||
{
|
||||
if (owned)
|
||||
{
|
||||
std::free(buf);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// yyjson in situ on a copy made before the timer
|
||||
struct yy_insitu_untimed
|
||||
{
|
||||
taken_copy c;
|
||||
yyjson_doc* doc = nullptr;
|
||||
explicit yy_insitu_untimed(const std::string& s)
|
||||
: c(s), doc(yyjson_read_opts(c.buf, s.size(), YYJSON_READ_INSITU, nullptr, nullptr))
|
||||
{}
|
||||
yy_insitu_untimed(const yy_insitu_untimed&) = delete;
|
||||
yy_insitu_untimed& operator=(const yy_insitu_untimed&) = delete;
|
||||
~yy_insitu_untimed()
|
||||
{
|
||||
yyjson_doc_free(doc);
|
||||
}
|
||||
};
|
||||
|
||||
// ---- simdjson DOM and On-Demand
|
||||
// after the type switch, the unchecked accessors (value_unsafe()) instead of the throwing conversions (int64_t(e),
|
||||
// as in the 3.13.0 post; measured the same)
|
||||
@@ -579,6 +653,16 @@ static bool rj_read(const std::string& s, Handler& h)
|
||||
return !reader.Parse<Flags>(is, h).IsError();
|
||||
}
|
||||
|
||||
// RapidJSON's Reader on the NUL-terminated string, as Document::Parse(const char*) does it: StringStream has
|
||||
// RapidJSON's SIMD string scanner, which skips the encoding check
|
||||
template<unsigned Flags, class Handler>
|
||||
static bool rj_read_cstr(const std::string& s, Handler& h)
|
||||
{
|
||||
rapidjson::StringStream is(s.c_str());
|
||||
rapidjson::Reader reader;
|
||||
return !reader.Parse<Flags>(is, h).IsError();
|
||||
}
|
||||
|
||||
// RapidJSON's Writer writes a raw number (kParseNumbersAsStringsFlag) as a string: write its text instead
|
||||
struct rj_raw_writer : rapidjson::Writer<rapidjson::StringBuffer>
|
||||
{
|
||||
@@ -2706,6 +2790,7 @@ struct variant
|
||||
std::string name; // "<library>: <variant>"
|
||||
std::function<bool(const std::string&, result&)> fn;
|
||||
bool any_order = false; // sum: visits objects in key order, so its sum may differ in the last bits
|
||||
bool untimed_copy = false; // takes its input copy from g_copies, made before the timer starts
|
||||
};
|
||||
|
||||
struct context
|
||||
@@ -2732,6 +2817,7 @@ static std::vector<variant> validate_variants(context& c)
|
||||
{"nlohmann json: parse", [](const std::string & s, result & r) { json j = json::parse(s); r.acc = static_cast<double>(j.size()); return true; }},
|
||||
{"yyjson: read", [](const std::string & s, result&) { yyjson_doc* d = yyjson_read(s.data(), s.size(), 0); const bool ok = d != nullptr; yyjson_doc_free(d); return ok; }},
|
||||
{"yyjson: insitu (copy)", [](const std::string & s, result&) { yy_insitu d(s); return d.doc != nullptr; }},
|
||||
{"yyjson: insitu (copy untimed)", [](const std::string & s, result&) { yy_insitu_untimed d(s); return d.doc != nullptr; }, false, true},
|
||||
{"yyjson: read (raw numbers)", [](const std::string & s, result&) { yyjson_doc* d = yyjson_read(s.data(), s.size(), yy_raw); const bool ok = d != nullptr; yyjson_doc_free(d); return ok; }},
|
||||
{"yyjson: read (reused allocator)", [&c](const std::string & s, result&) { yyjson_doc* d = yyjson_read_opts(const_cast<char*>(s.data()), s.size(), 0, c.yy.a, nullptr); const bool ok = d != nullptr; yyjson_doc_free(d); return ok; }},
|
||||
{"simdjson: DOM", [](const std::string & s, result&) { simdjson::dom::parser p; return !p.parse(s).error(); }},
|
||||
@@ -2758,11 +2844,13 @@ static std::vector<variant> sum_variants(context& c)
|
||||
return
|
||||
{
|
||||
{"nlohmann json_document: parse", [](const std::string & s, result & r) { auto d = json_document::parse(s); walk(d.root(), r.st); return true; }},
|
||||
{"nlohmann json_document: parse_copy", [](const std::string & s, result & r) { auto d = json_document::parse_copy(s); walk(d.root(), r.st); return true; }},
|
||||
{"nlohmann json_document: read (reused)", [&c](const std::string & s, result & r) { c.reused.read(s); walk(c.reused.root(), r.st); return true; }},
|
||||
{"nlohmann json: parse", [](const std::string & s, result & r) { json j = json::parse(s); walk(j, r.st); return true; }, true},
|
||||
{"nlohmann json: sax", [](const std::string & s, result & r) { json_sum_sax h{&r.st}; return json::sax_parse(s, &h); }},
|
||||
{"yyjson: read", [](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), 0); if (d == nullptr) { return false; } walk(yyjson_doc_get_root(d), r.st); yyjson_doc_free(d); return true; }},
|
||||
{"yyjson: insitu (copy)", [](const std::string & s, result & r) { yy_insitu d(s); if (d.doc == nullptr) { return false; } walk(yyjson_doc_get_root(d.doc), r.st); return true; }},
|
||||
{"yyjson: insitu (copy untimed)", [](const std::string & s, result & r) { yy_insitu_untimed d(s); if (d.doc == nullptr) { return false; } walk(yyjson_doc_get_root(d.doc), r.st); return true; }, false, true},
|
||||
{"yyjson: read (reused allocator)", [&c](const std::string & s, result & r) { yyjson_doc* d = yyjson_read_opts(const_cast<char*>(s.data()), s.size(), 0, c.yy.a, nullptr); if (d == nullptr) { return false; } walk(yyjson_doc_get_root(d), r.st); yyjson_doc_free(d); return true; }},
|
||||
{"simdjson: DOM", [](const std::string & s, result & r) { simdjson::dom::parser p; auto e = p.parse(s); if (e.error()) { return false; } walk(e.value_unsafe(), r.st); return true; }},
|
||||
{"simdjson: DOM (reused)", [&c](const std::string & s, result & r) { auto e = c.sj.parse(s); if (e.error()) { return false; } walk(e.value_unsafe(), r.st); return true; }},
|
||||
@@ -2790,12 +2878,14 @@ static std::vector<variant> select_variants(context& c)
|
||||
return
|
||||
{
|
||||
{"nlohmann json_document: parse", [n](const std::string & s, result & r) { auto d = json_document::parse(s); r.acc = pick<acc_view>(n, d.root()); return true; }},
|
||||
{"nlohmann json_document: parse_copy", [n](const std::string & s, result & r) { auto d = json_document::parse_copy(s); r.acc = pick<acc_view>(n, d.root()); return true; }},
|
||||
{"nlohmann json_document: read (reused)", [&c, n](const std::string & s, result & r) { c.reused.read(s); r.acc = pick<acc_view>(n, c.reused.root()); return true; }},
|
||||
{"nlohmann json: parse", [n](const std::string & s, result & r) { json j = json::parse(s); r.acc = pick<acc_json>(n, &j); return true; }},
|
||||
{"nlohmann json_document: structs (from_json)", [n](const std::string & s, result & r) { auto d = json_document::parse(s); r.acc = pick_nlohmann_structs(n, d.root()); return true; }},
|
||||
{"nlohmann json: structs (from_json)", [n](const std::string & s, result & r) { r.acc = pick_nlohmann_structs(n, json::parse(s)); return true; }},
|
||||
{"yyjson: read", [n](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), 0); if (d == nullptr) { return false; } r.acc = pick<acc_yyjson>(n, yyjson_doc_get_root(d)); yyjson_doc_free(d); return true; }},
|
||||
{"yyjson: insitu (copy)", [n](const std::string & s, result & r) { yy_insitu d(s); if (d.doc == nullptr) { return false; } r.acc = pick<acc_yyjson>(n, yyjson_doc_get_root(d.doc)); return true; }},
|
||||
{"yyjson: insitu (copy untimed)", [n](const std::string & s, result & r) { yy_insitu_untimed d(s); if (d.doc == nullptr) { return false; } r.acc = pick<acc_yyjson>(n, yyjson_doc_get_root(d.doc)); return true; }, false, true},
|
||||
{"yyjson: read (raw numbers)", [n](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), yy_raw); if (d == nullptr) { return false; } r.acc = pick<acc_yyjson_raw>(n, yyjson_doc_get_root(d)); yyjson_doc_free(d); return true; }},
|
||||
{"yyjson: read (reused allocator)", [&c, n](const std::string & s, result & r) { yyjson_doc* d = yyjson_read_opts(const_cast<char*>(s.data()), s.size(), 0, c.yy.a, nullptr); if (d == nullptr) { return false; } r.acc = pick<acc_yyjson>(n, yyjson_doc_get_root(d)); yyjson_doc_free(d); return true; }},
|
||||
{"simdjson: DOM", [n](const std::string & s, result & r) { simdjson::dom::parser p; auto e = p.parse(s); if (e.error()) { return false; } r.acc = pick<acc_simdjson>(n, e.value_unsafe()); return true; }},
|
||||
@@ -2833,6 +2923,7 @@ static std::vector<variant> edit_variants(context& c)
|
||||
{"nlohmann json: ordered_json", [n](const std::string & s, result & r) { ordered_json j = ordered_json::parse(s); edit(n, j); return emit(r, j.dump()); }},
|
||||
{"yyjson: mut copy", [n](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), 0); const bool ok = edit_yyjson(n, d, r); yyjson_doc_free(d); return ok; }},
|
||||
{"yyjson: insitu (copy) + mut copy", [n](const std::string & s, result & r) { yy_insitu d(s); return edit_yyjson(n, d.doc, r); }},
|
||||
{"yyjson: insitu (copy untimed) + mut copy", [n](const std::string & s, result & r) { yy_insitu_untimed d(s); return edit_yyjson(n, d.doc, r); }, false, true},
|
||||
{"sonic-cpp: Document", [n](const std::string & s, result & r) { return edit_sonic(n, s, r); }},
|
||||
#if !BENCH_NO_GLAZE
|
||||
{"Glaze: generic", [n](const std::string & s, result & r) { return edit_glaze(n, s, r); }},
|
||||
@@ -2849,11 +2940,13 @@ static std::vector<variant> minify_variants(context& c)
|
||||
return
|
||||
{
|
||||
{"nlohmann json_document: parse + dump", [](const std::string & s, result & r) { auto d = json_document::parse(s); return emit(r, d.root().dump()); }},
|
||||
{"nlohmann json_document: parse_copy + dump", [](const std::string & s, result & r) { auto d = json_document::parse_copy(s); return emit(r, d.root().dump()); }},
|
||||
{"nlohmann json_document: parse + dump (source numbers)", [](const std::string & s, result & r) { auto d = json_document::parse(s); return emit(r, d.root().dump(-1, ' ', false, json_view::number_format::source)); }},
|
||||
{"nlohmann json_document: read + dump (reused)", [&c](const std::string & s, result & r) { c.reused.read(s); return emit(r, c.reused.root().dump()); }},
|
||||
{"nlohmann json: parse + dump", [](const std::string & s, result & r) { json j = json::parse(s); return emit(r, j.dump()); }},
|
||||
{"yyjson: read + write", [](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), 0); if (d == nullptr) { return false; } std::size_t n = 0; char* o = yyjson_write(d, 0, &n); const bool ok = o != nullptr && emit(r, o, n); std::free(o); yyjson_doc_free(d); return ok; }},
|
||||
{"yyjson: insitu (copy) + write", [](const std::string & s, result & r) { yy_insitu d(s); if (d.doc == nullptr) { return false; } std::size_t n = 0; char* o = yyjson_write(d.doc, 0, &n); const bool ok = o != nullptr && emit(r, o, n); std::free(o); return ok; }},
|
||||
{"yyjson: insitu (copy untimed) + write", [](const std::string & s, result & r) { yy_insitu_untimed d(s); if (d.doc == nullptr) { return false; } std::size_t n = 0; char* o = yyjson_write(d.doc, 0, &n); const bool ok = o != nullptr && emit(r, o, n); std::free(o); return ok; }, false, true},
|
||||
// the raw number text is written verbatim
|
||||
{"yyjson: read (raw numbers) + write", [](const std::string & s, result & r) { yyjson_doc* d = yyjson_read(s.data(), s.size(), yy_raw); if (d == nullptr) { return false; } std::size_t n = 0; char* o = yyjson_write(d, 0, &n); const bool ok = o != nullptr && emit(r, o, n); std::free(o); yyjson_doc_free(d); return ok; }},
|
||||
{"yyjson: read + write (reused allocator)", [&c](const std::string & s, result & r) { yyjson_alc* a = c.yy.a; yyjson_doc* d = yyjson_read_opts(const_cast<char*>(s.data()), s.size(), 0, a, nullptr); if (d == nullptr) { return false; } std::size_t n = 0; char* o = yyjson_write_opts(d, 0, a, &n, nullptr); const bool ok = o != nullptr && emit(r, o, n); if (o != nullptr) { a->free(a->ctx, o); } yyjson_doc_free(d); return ok; }},
|
||||
@@ -2887,9 +2980,14 @@ static void add_rapidjson(std::vector<variant>& vs, const std::string& uc, const
|
||||
rj_reuse* const rp = &rr;
|
||||
if (uc == "validate")
|
||||
{
|
||||
// validate reads no number, so the default (not correctly rounded) precision is allowed here
|
||||
vs.push_back({std::string("RapidJSON: SAX") + sfx, [](const std::string & s, result&) { rapidjson::BaseReaderHandler<> h; return rj_read<F>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: Document") + sfx, [](const std::string & s, result&) { rapidjson::Document d; d.Parse<F>(s.data(), s.size()); return !d.HasParseError(); }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy)") + sfx, [](const std::string & s, result&) { std::string b = s; rapidjson::Document d; d.ParseInsitu<F>(&b[0]); return !d.HasParseError(); }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy untimed)") + sfx, [](const std::string & s, result&) { taken_copy b(s); rapidjson::Document d; d.ParseInsitu<F>(b.buf); return !d.HasParseError(); }, false, true});
|
||||
vs.push_back({std::string("RapidJSON: SAX (string stream)") + sfx, [](const std::string & s, result&) { rapidjson::BaseReaderHandler<> h; return rj_read_cstr<F>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX (default precision)") + sfx, [](const std::string & s, result&) { rapidjson::BaseReaderHandler<> h; return rj_read<F & ~rapidjson::kParseFullPrecisionFlag>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX (string stream, default precision)") + sfx, [](const std::string & s, result&) { rapidjson::BaseReaderHandler<> h; return rj_read_cstr<F & ~rapidjson::kParseFullPrecisionFlag>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX (raw numbers)") + sfx, [](const std::string & s, result&) { rapidjson::BaseReaderHandler<> h; return rj_read<F | rj_raw>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: Document (reused allocator)") + sfx, [rp](const std::string & s, result&) { return rp->parse<F>(s, [](const rapidjson::Value&) { return true; }); }});
|
||||
}
|
||||
@@ -2898,12 +2996,16 @@ static void add_rapidjson(std::vector<variant>& vs, const std::string& uc, const
|
||||
vs.push_back({std::string("RapidJSON: Document") + sfx, [](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.data(), s.size()); if (d.HasParseError()) { return false; } walk(d, r.st); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: SAX") + sfx, [](const std::string & s, result & r) { rj_sum h(&r.st); return rj_read<F>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy)") + sfx, [](const std::string & s, result & r) { std::string b = s; rapidjson::Document d; d.ParseInsitu<F>(&b[0]); if (d.HasParseError()) { return false; } walk(d, r.st); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy untimed)") + sfx, [](const std::string & s, result & r) { taken_copy b(s); rapidjson::Document d; d.ParseInsitu<F>(b.buf); if (d.HasParseError()) { return false; } walk(d, r.st); return true; }, false, true});
|
||||
vs.push_back({std::string("RapidJSON: SAX (string stream)") + sfx, [](const std::string & s, result & r) { rj_sum h(&r.st); return rj_read_cstr<F>(s, h); }});
|
||||
vs.push_back({std::string("RapidJSON: Document (reused allocator)") + sfx, [rp](const std::string & s, result & r) { return rp->parse<F>(s, [&r](const rapidjson::Value & d) { walk(d, r.st); return true; }); }});
|
||||
}
|
||||
else if (uc == "select")
|
||||
{
|
||||
vs.push_back({std::string("RapidJSON: Document") + sfx, [n](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.data(), s.size()); if (d.HasParseError()) { return false; } r.acc = pick<acc_rapidjson>(n, &d); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy)") + sfx, [n](const std::string & s, result & r) { std::string b = s; rapidjson::Document d; d.ParseInsitu<F>(&b[0]); if (d.HasParseError()) { return false; } r.acc = pick<acc_rapidjson>(n, &d); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy untimed)") + sfx, [n](const std::string & s, result & r) { taken_copy b(s); rapidjson::Document d; d.ParseInsitu<F>(b.buf); if (d.HasParseError()) { return false; } r.acc = pick<acc_rapidjson>(n, &d); return true; }, false, true});
|
||||
vs.push_back({std::string("RapidJSON: Document (string stream)") + sfx, [n](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.c_str()); if (d.HasParseError()) { return false; } r.acc = pick<acc_rapidjson>(n, &d); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: Document (raw numbers)") + sfx, [n](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F | rj_raw>(s.data(), s.size()); if (d.HasParseError()) { return false; } r.acc = pick<acc_rapidjson_raw>(n, &d); return true; }});
|
||||
vs.push_back({std::string("RapidJSON: Document (reused allocator)") + sfx, [n, rp](const std::string & s, result & r) { return rp->parse<F>(s, [&](const rapidjson::Value & d) { r.acc = pick<acc_rapidjson>(n, &d); return true; }); }});
|
||||
}
|
||||
@@ -2911,11 +3013,14 @@ static void add_rapidjson(std::vector<variant>& vs, const std::string& uc, const
|
||||
{
|
||||
vs.push_back({std::string("RapidJSON: Document") + sfx, [n](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.data(), s.size()); return !d.HasParseError() && edit_rapidjson(n, d, r); }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy)") + sfx, [n](const std::string & s, result & r) { std::string b = s; rapidjson::Document d; d.ParseInsitu<F>(&b[0]); return !d.HasParseError() && edit_rapidjson(n, d, r); }});
|
||||
vs.push_back({std::string("RapidJSON: insitu (copy untimed)") + sfx, [n](const std::string & s, result & r) { taken_copy b(s); rapidjson::Document d; d.ParseInsitu<F>(b.buf); return !d.HasParseError() && edit_rapidjson(n, d, r); }, false, true});
|
||||
vs.push_back({std::string("RapidJSON: Document (string stream)") + sfx, [n](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.c_str()); return !d.HasParseError() && edit_rapidjson(n, d, r); }});
|
||||
}
|
||||
else if (uc == "minify")
|
||||
{
|
||||
vs.push_back({std::string("RapidJSON: Document + Writer") + sfx, [](const std::string & s, result & r) { rapidjson::Document d; d.Parse<F>(s.data(), s.size()); if (d.HasParseError()) { return false; } rapidjson::StringBuffer sb; rapidjson::Writer<rapidjson::StringBuffer> w(sb); return d.Accept(w) && emit(r, sb.GetString(), sb.GetSize()); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX to Writer") + sfx, [](const std::string & s, result & r) { rapidjson::StringBuffer sb; rapidjson::Writer<rapidjson::StringBuffer> w(sb); return rj_read<F>(s, w) && emit(r, sb.GetString(), sb.GetSize()); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX to Writer (string stream)") + sfx, [](const std::string & s, result & r) { rapidjson::StringBuffer sb; rapidjson::Writer<rapidjson::StringBuffer> w(sb); return rj_read_cstr<F>(s, w) && emit(r, sb.GetString(), sb.GetSize()); }});
|
||||
vs.push_back({std::string("RapidJSON: SAX to Writer (raw numbers)") + sfx, [](const std::string & s, result & r) { rapidjson::StringBuffer sb; rj_raw_writer w(sb); return rj_read<F | rapidjson::kParseNumbersAsStringsFlag>(s, w) && emit(r, sb.GetString(), sb.GetSize()); }});
|
||||
vs.push_back({std::string("RapidJSON: Document + Writer (reused allocator)") + sfx, [rp](const std::string & s, result & r) { return rp->parse<F>(s, [&r](const rapidjson::Value & d) { rapidjson::StringBuffer sb; rapidjson::Writer<rapidjson::StringBuffer> w(sb); return d.Accept(w) && emit(r, sb.GetString(), sb.GetSize()); }); }});
|
||||
}
|
||||
@@ -3286,6 +3391,22 @@ int main(int argc, char** argv)
|
||||
add_rapidjson<rj_flags>(all, uc, dc.base, "", rj);
|
||||
add_rapidjson<rj_fast>(all, uc, dc.base, " (no encoding check)", rj);
|
||||
}
|
||||
// BENCH_ONLY=<prefix>[,<prefix>...]: only the variants whose name starts with one of them (A/B runs of two
|
||||
// nlohmann headers, or a few libraries)
|
||||
if (const char* const only = std::getenv("BENCH_ONLY"))
|
||||
{
|
||||
std::vector<std::string> prefixes;
|
||||
std::string rest = only;
|
||||
for (std::size_t comma; (comma = rest.find(',')) != std::string::npos; rest.erase(0, comma + 1))
|
||||
{
|
||||
prefixes.push_back(rest.substr(0, comma));
|
||||
}
|
||||
prefixes.push_back(rest);
|
||||
all.erase(std::remove_if(all.begin(), all.end(), [&](const variant& v)
|
||||
{
|
||||
return std::none_of(prefixes.begin(), prefixes.end(), [&](const std::string& p) { return v.name.compare(0, p.size(), p) == 0; });
|
||||
}), all.end());
|
||||
}
|
||||
|
||||
// the reference result, from json_document (sum, select) or json (edit, minify, write)
|
||||
stats ref_st;
|
||||
@@ -3401,8 +3522,16 @@ int main(int argc, char** argv)
|
||||
for (const std::size_t k : order)
|
||||
{
|
||||
result res;
|
||||
if (vs[k].untimed_copy)
|
||||
{
|
||||
g_copies.make(s, 1);
|
||||
}
|
||||
run(vs[k], s, res); // untimed: the previous variant's leftovers are cleaned up here
|
||||
g_sink = res.st.num + res.acc;
|
||||
if (vs[k].untimed_copy)
|
||||
{
|
||||
g_copies.make(s, dc.batch);
|
||||
}
|
||||
const auto t0 = std::chrono::steady_clock::now();
|
||||
for (int b = 0; b < dc.batch; ++b)
|
||||
{
|
||||
@@ -3410,6 +3539,7 @@ int main(int argc, char** argv)
|
||||
g_sink = run(vs[k], s, rt) ? rt.st.num + rt.acc : -1;
|
||||
}
|
||||
best[k] = std::min(best[k], std::chrono::duration<double, std::nano>(std::chrono::steady_clock::now() - t0).count() / dc.batch);
|
||||
g_copies.clear();
|
||||
}
|
||||
}
|
||||
std::printf("%-13s %-9s", dc.name.c_str(), uc.c_str());
|
||||
|
||||
@@ -17,8 +17,9 @@ error, or crashes on any probe), or "n/a" (write: no input to validate; counts a
|
||||
worst it got for any file. Prints, for every use case and file,
|
||||
(a) per library the best "full" variant and, if faster, the best variant at any level, with their ratios to the
|
||||
best "full" nlohmann json_document variant (variants named "(reused)" or "(reused allocator)" keep a parser,
|
||||
document or allocator across calls and are never chosen as a library's best), and in a "reused:" line the
|
||||
library's best reused variant in the same way,
|
||||
document or allocator across calls and are never chosen as a library's best; neither are "(copy untimed)"
|
||||
variants, which copy their input before the timer starts), and in a "reused:" line the library's best reused
|
||||
variant in the same way,
|
||||
(b) all variants with their levels and times,
|
||||
(c) the variants below "full" with what the probes found, and the variants excluded for wrong results.
|
||||
--json writes {use case: {file: {library: {"best": {"variant", "us", "level"} or null, "best_any": {...},
|
||||
@@ -54,6 +55,10 @@ def is_reused(name):
|
||||
return re.search(r"\(reused[ )]", name) is not None
|
||||
|
||||
|
||||
def is_untimed_copy(name):
|
||||
return "(copy untimed)" in name
|
||||
|
||||
|
||||
def worse(a, b):
|
||||
return a if a is not None and (b is None or RANK[a] >= RANK[b]) else b
|
||||
|
||||
@@ -159,7 +164,7 @@ def main():
|
||||
return {"variant": variant(x[0]), "us": x[1], "level": levels[(uc, x[0])]} if x else None
|
||||
|
||||
for lib, vs in libs.items():
|
||||
b, a = pick({n: t for n, t in vs.items() if not is_reused(n)})
|
||||
b, a = pick({n: t for n, t in vs.items() if not is_reused(n) and not is_untimed_copy(n)})
|
||||
rb, ra = pick({n: t for n, t in vs.items() if is_reused(n)})
|
||||
entry[lib] = {
|
||||
"best": described(b),
|
||||
|
||||