diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 99541a96f..672c17c8b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -41,11 +41,10 @@ jobs: uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1 with: languages: c-cpp - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1 + # Analyze the sources without compiling them. Autobuild compiled the + # whole test suite and the resulting database was so large that the + # runner often lost communication with the server while importing it. + build-mode: none - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1 diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 581fb6081..e0cd83af9 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -42,7 +42,7 @@ jobs: - name: Check that Meson and pkg-config offer the CMake options run: make check_build_options - name: Install Meson - run: pip install meson + run: pip install --require-hashes -r cmake/requirements/requirements-meson.txt - name: Install with Meson run: | meson setup build-meson --prefix=${{ github.workspace }}/install diff --git a/BUILD.bazel b/BUILD.bazel index 2b1c9f146..b7908bcf7 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -30,6 +30,7 @@ cc_library( "include/nlohmann/detail/exceptions.hpp", "include/nlohmann/detail/hash.hpp", "include/nlohmann/detail/input/binary_reader.hpp", + "include/nlohmann/detail/input/contiguous_parser.hpp", "include/nlohmann/detail/input/input_adapters.hpp", "include/nlohmann/detail/input/json_sax.hpp", "include/nlohmann/detail/input/lexer.hpp", diff --git a/cmake/requirements/requirements-meson.txt b/cmake/requirements/requirements-meson.txt new file mode 100644 index 000000000..b8810a0f6 --- /dev/null +++ b/cmake/requirements/requirements-meson.txt @@ -0,0 +1,3 @@ +meson==1.12.1 \ + --hash=sha256:930bc7542cbd9f57009e182fd014eba48cf1a0180a7b9006d2d32d8f168d8b02 \ + --hash=sha256:ab0a6ca09f8ef70c564c8241fb5a23957886a0b53fb58412b5e07eaf07dba743 diff --git a/docs/mkdocs/docs/api/macros/json_diagnostic_positions.md b/docs/mkdocs/docs/api/macros/json_diagnostic_positions.md index 4dac9f9ff..340498acb 100644 --- a/docs/mkdocs/docs/api/macros/json_diagnostic_positions.md +++ b/docs/mkdocs/docs/api/macros/json_diagnostic_positions.md @@ -34,6 +34,9 @@ or quotes. Note that enabling this macro increases the size of every JSON value by two `std::size_t` fields and adds slight runtime overhead to parsing, copying JSON value objects, and the generation of error messages for exceptions. It also causes these values to be reported in those error messages. +In addition, `parse()`, `accept()`, and `sax_parse()` no longer use the +[faster path for input in one block of memory](../../features/parsing/index.md#input-sources-and-performance), so +parsing a string or a buffer is slower than without the macro. If [`JSON_DIAGNOSTICS`](json_diagnostics.md) is also set, the message contains the path and the byte range, such as `(/1) (bytes 4-8)`. An exception about the root value has no path and only the range, such as `(bytes 0-4)`. diff --git a/docs/mkdocs/docs/api/macros/json_disable_stream_bulk_scan.md b/docs/mkdocs/docs/api/macros/json_disable_stream_bulk_scan.md index 7befb6cde..9af9c3aea 100644 --- a/docs/mkdocs/docs/api/macros/json_disable_stream_bulk_scan.md +++ b/docs/mkdocs/docs/api/macros/json_disable_stream_bulk_scan.md @@ -48,8 +48,8 @@ The default value is `0`: streams are scanned in bulk. !!! note "Performance" Parsing from a `std::ifstream` or `std::istringstream` is typically 1.5 to 2 times as fast as before, and reading - many small values from one stream with `operator>>` 1.4 to 4 times as fast. Parsing from a stream is then within - about 10 to 20 % of first reading the whole file into a `std::string` and parsing that. + many small values from one stream with `operator>>` 1.4 to 4 times as fast. Parsing from a stream then takes about + 1.15 to 1.45 times as long as first reading the whole file into a `std::string` and parsing that. A stream buffer without a get area (one that only overrides `underflow()` and `uflow()` and hands out every character from there) offers nothing to scan in bulk, so it is read one character at a time as before. diff --git a/docs/mkdocs/docs/features/files.md b/docs/mkdocs/docs/features/files.md index bf3632e89..c69879a45 100644 --- a/docs/mkdocs/docs/features/files.md +++ b/docs/mkdocs/docs/features/files.md @@ -32,11 +32,11 @@ json read_json_file(const std::string& path) column 1 instead of saying that the file is missing. A relative path is resolved against the working directory of the running program, which is often not the directory of the source file (see the [FAQ](../home/faq.md#parsing-a-file-fails-with-unexpected-end-of-input)). -- **Don't read the file into a string first.** Parsing from a `#!cpp std::ifstream` is only about 10 to 20 % slower - than reading the whole file into a string with one `read()` and parsing that, and it needs no memory for the copy (see - [input sources and performance](parsing/index.md#input-sources-and-performance)). The common way to read a file with - `#!cpp std::istreambuf_iterator` is so slow that it takes about twice as long as parsing from the stream. Read - the file into a string only if you need the text itself, for example for an error message. This advice is for +- **Read the file into a string only if the memory is no concern.** Parsing from a `#!cpp std::ifstream` takes about + 1.15 to 1.45 times as long as reading the whole file into a string with one `read()` and parsing that, but it needs no + memory for the copy (see [input sources and performance](parsing/index.md#input-sources-and-performance)). The common + way to read a file with `#!cpp std::istreambuf_iterator` is so slow that it takes about twice as long as parsing + from the stream. This advice is for `#!cpp json::parse`. [`json_document`](json_view/index.md) reads a stream into a buffer that it owns anyway, so there is no copy to save: reading the file into a `#!cpp std::string` yourself and passing that as an lvalue, which the document borrows, was about 6 to 12 % faster than parsing from the stream, with the same single buffer. diff --git a/docs/mkdocs/docs/features/parsing/index.md b/docs/mkdocs/docs/features/parsing/index.md index 984de9f7e..38e523f88 100644 --- a/docs/mkdocs/docs/features/parsing/index.md +++ b/docs/mkdocs/docs/features/parsing/index.md @@ -80,8 +80,16 @@ them faster than others: | `#!cpp FILE*` | with glibc and the Apple C library, the characters the `FILE` holds in its buffer are scanned in bulk like a stream's; elsewhere one character at a time; the file is locked once for the whole parse | | other iterator ranges (e.g., `#!cpp std::list`, `#!cpp std::istreambuf_iterator`), wide strings | one character at a time | -Parsing a file from a `#!cpp std::ifstream` is therefore only about 10 to 20 % slower than reading the whole file into a -`#!cpp std::string` first and parsing that, and it needs no memory for a copy of the file. The stream is never read +Input in one block of memory is read even faster with the default options (no +[parser callback](../../api/basic_json/parser_callback_t.md), no comments, no trailing commas, and for `sax_parse()` +`strict = true`): `parse()`, `accept()`, and `sax_parse()` then read the grammar and the tokens in one loop over the +memory. Only after an error do `parse()` and `sax_parse()` read the input again, to report the error exactly as before. +This faster path is not used when [`JSON_DIAGNOSTIC_POSITIONS`](../../api/macros/json_diagnostic_positions.md) is +enabled, because the positions are recorded by the default parser: the input is then parsed as before, at the same speed +as before. + +Parsing a file from a `#!cpp std::ifstream` therefore takes about 1.15 to 1.45 times as long as reading the whole file +into a `#!cpp std::string` first and parsing that, but it needs no memory for a copy of the file. The stream is never read ahead: after parsing, it is positioned exactly as if every character had been read one at a time, so [`operator>>`](../../api/operator_gtgt.md) can still read several values from one stream (see also [JSON Lines](json_lines.md)). diff --git a/docs/mkdocs/docs/features/performance.md b/docs/mkdocs/docs/features/performance.md index 570130055..b901e7ff3 100644 --- a/docs/mkdocs/docs/features/performance.md +++ b/docs/mkdocs/docs/features/performance.md @@ -29,9 +29,9 @@ up. Nothing is read ahead, so the stream is left exactly where it would be after [`operator>>`](../api/operator_gtgt.md) can still read several values from one stream. A stream buffer without a get area is read one character at a time. A `#!cpp FILE*` is locked once per parse instead of once per character, and with glibc and the Apple C library, the characters in its buffer are scanned in bulk as a stream's get area is. See -[input sources and performance](parsing/index.md#input-sources-and-performance) for the full table. According to the -description of [#5828](https://github.com/nlohmann/json/pull/5828), parsing from a stream is within about 10 to 20 % of -parsing an equivalent `#!cpp std::string`. +[input sources and performance](parsing/index.md#input-sources-and-performance) for the full table. Parsing from a +stream takes about 1.15 to 1.45 times as long as parsing an equivalent `#!cpp std::string`, which `parse()` reads with +a parser of its own (see there). Inputs that are still read one character at a time: iterator ranges that are not contiguous (e.g. `#!cpp std::list` or `#!cpp std::istreambuf_iterator`), wide strings, and user-defined adapters. An diff --git a/docs/mkdocs/docs/home/blog/how_3_13_0_got_faster.md b/docs/mkdocs/docs/home/blog/how_3_13_0_got_faster.md index 7f6417e38..e13fd94a8 100644 --- a/docs/mkdocs/docs/home/blog/how_3_13_0_got_faster.md +++ b/docs/mkdocs/docs/home/blog/how_3_13_0_got_faster.md @@ -5,14 +5,14 @@ + comparison), including the line counts in "The price". The numbers below are from develop 7fc8312c64 with the + open pull requests #6029, #6031, #6033 and #6039 merged (local branch local/all-prs-1107 at fcae242ac8, plus + #6039 uncommitted), measured 11-07: suite, timeline (the commits after 11-03 and 3.13.0; the older points are from + 10-27 and 11-03), compile times (5 rounds), the stream gap, and the comparison on the Mac and on x86-64. + Appendix D and the Intel MacBook Pro column of Appendix B are from 11-03 (the MacBook was not reachable), and so + is the check with GCC 16 and Clang 23 on the Mac in "Results on x86-64". The Rust times are from 10-29 (Mac) and + 11-03 (x86-64), the x86-64 conformance run from 10-30. Once #6031 is merged, remove it from PENDING in + scripts/figures/perf_blog.py. Merge tests/benchmarks/json_view/others before publishing (the links 404). --> Since 2016, the [README](https://github.com/nlohmann/json#readme) of this library has said this about speed: @@ -20,19 +20,20 @@ Since 2016, the [README](https://github.com/nlohmann/json#readme) of this librar > JSON support with a single header, then this library is the way to go. That sentence is still true, but the gap is a lot smaller now. Swap the 3.12.0 header for the 3.13.0 one, recompile, and -the 182 benchmarks of the library's own suite run 3.0× as fast on an Apple M1 Max (geometric mean; 3.1× on an Intel -MacBook Pro from 2016). Not a line of your code changes. Parsing typical documents got 3.1–4.3× as fast, and writing -them 3.0–6.7×. The new version also adds [`json_document`](../../features/json_view.md), a second way to hold a parsed +the 182 benchmarks of the library's own suite run 3.3× as fast on an Apple M1 Max (geometric mean; 3.1× on an Intel +MacBook Pro from 2016). Not a line of your code changes. Parsing typical documents got 3.5–5.1× as fast, and writing +them 2.9–6.6×. The new version also adds [`json_document`](../../features/json_view/index.md), a second way to hold a parsed document, which competes with the fastest C++ and Rust JSON libraries; [How it compares](#how-it-compares) has the -numbers, including where it loses. The price is compile time: two small example programs take 34–62% longer to compile. -A precompiled header or a C++20 module wins back most or all of that in debug builds, and 41–91% of it in optimized -builds ([The price](#the-price)). +numbers, including where it loses. The price is compile time: two small example programs take 36–68% longer to compile. +A precompiled header or a C++20 module wins back most or all of that in debug builds, and 41% to all of it in +optimized builds ([The price](#the-price)). This post is about *how*. Hardly any of the techniques are new: we borrowed them from [simdjson](https://github.com/simdjson/simdjson), [yyjson](https://github.com/ibireme/yyjson), [fast_float](https://github.com/fastfloat/fast_float), [Żmij](https://github.com/vitaut/zmij), [serde_json](https://github.com/serde-rs/json), [Glaze](https://github.com/stephenberry/glaze), -[SQLite](https://sqlite.org), [Boost.JSON](https://github.com/boostorg/json), or a textbook, and we name the source at +[SQLite](https://sqlite.org), [Boost.JSON](https://github.com/boostorg/json), [gnulib](https://www.gnu.org/software/gnulib/), +or a textbook, and we name the source at each step. What is worth writing about is the *combination*, and the conditions it had to work under. It is a header-only C++11 library whose 3.x API has been stable for almost nine years, and whose value type is a template over its string, number, object, array, and allocator types. Input comes from strings, streams, `FILE*`, iterator pairs, wide @@ -60,8 +61,8 @@ A](#a-test-files) says what makes each of them hard.

Speedup of 3.13.0 over 3.12.0 for a selection of workloads: the old time divided by the -new one, Google Benchmark suite on an Apple M1 Max, median of 8 runs. More is better; the vertical line at 1× is 3.12.0. -The times are in [Appendix B](#b-3120-against-3130).

+new one, Google Benchmark suite on an Apple M1 Max, median of 12 runs. More is better; the vertical line at 1× is +3.12.0. The times are in [Appendix B](#b-3120-against-3130).

The rows above are chosen to show the range. All 182 benchmarks of the suite: @@ -69,12 +70,13 @@ The rows above are chosen to show the range. All 182 benchmarks of the suite: --8<-- "images/perf_blog_distribution.svg" -

How many of the suite's 182 benchmarks got how much faster. The one below 1× is copying -`citm_catalog.json` without destroying the copy. Every row is in [Appendix B](#b-3120-against-3130).

+

How many of the suite's 182 benchmarks got how much faster. The two below 1× copy +`citm_catalog.json` and `twitter.json` without destroying the copy (0.95× and 0.99×). Every row is in [Appendix +B](#b-3120-against-3130).

The median benchmark got 2.9× as fast. On an Intel MacBook Pro (Skylake), the median is 2.9× as well, but parsing -floating-point numbers gained more (`canada.json` 6.1× instead of 3.4×) and writing integers less (`dump()` 1.4–2.3× -instead of 2.2–3.8×); [Appendix B](#b-3120-against-3130) has both columns. Copying and comparing values gained the +floating-point numbers gained more (`canada.json` 6.1× instead of 4.1×) and writing integers less (`dump()` 1.4–2.3× +instead of 2.2–3.7×); [Appendix B](#b-3120-against-3130) has both columns. Copying and comparing values gained the least, and the largest gains come from fixing algorithms rather than tuning them (theme 7). @@ -104,7 +106,7 @@ Eight themes did most of the work: ## Where the time went: a timeline The suite compares two points. To see which change did what, we compiled one small benchmark against the header of each -of the 351 commits on `develop` that changed `json.hpp` or `json_view.hpp` from 3.12.0 to November 3, and of 3.13.0, and +of the 358 commits on `develop` that changed `json.hpp` or `json_view.hpp` from 3.12.0 to November 7, and of 3.13.0, and ran all of them interleaved. Four of the eight workloads we followed: - `parse()` of `citm_catalog.json`: the lexer's structure and whitespace handling, and building many small objects; @@ -131,8 +133,8 @@ larger steps mean something. -

Speedup over 3.12.0 after each of the 351 commits that changed the headers up to November -3, from 3.12.0 (left) to 3.13.0 (right). More is better; each point is the median of 4 runs of one build, taken in +

Speedup over 3.12.0 after each of the 358 commits that changed the headers up to November +7, from 3.12.0 (left) to 3.13.0 (right). More is better; each point is the median of 4 runs of one build, taken in random order (with 4 runs, the mean of the two middle ones). The badges are theme numbers; "U" is a UTF-8 check that came and went. The other four workloads, and every labeled step with its pull request and size, are in [Appendix C](#c-the-timeline).

@@ -202,14 +204,16 @@ iterators over a `std::list`, or a user's own adapter. But it makes every ```mermaid flowchart LR src[/"input"/] --> q{{"what is it?"}} - q -->|"std::string, std::vector,
pointers, contiguous ranges"| c["contiguous:
scan the whole buffer"] + q -->|"std::string, std::vector,
their iterators, pointers,
contiguous ranges"| c["contiguous:
scan the whole buffer"] q -->|"std::istream"| w["window:
scan the streambuf's get area"] - q -->|"FILE*"| f["one lock per parse,
unlocked reads"] + q -->|"FILE*"| f["window:
scan the FILE's buffer"] q -->|"other iterators,
user adapters"| b["byte at a time"] ```

The four kinds of input the lexer distinguishes in 3.13.0. Everything on the fast paths -falls back to the byte path on anything unusual, so the result and the error messages stay the same.

+falls back to the byte path on anything unusual, so the result and the error messages stay the same. The `FILE*` +window needs glibc or Apple's C library; elsewhere, a `FILE*` is read one character at a time with one lock per +parse.

### Detecting the input in C++11 @@ -236,7 +240,8 @@ which also keeps MSVC from warning about constant conditions. `get()` still look token bookkeeping are now calls. For an adapter that can seek, their `std::true_type` overloads are empty and cost nothing, because the position and the text of a token are derived only when an error message needs them (theme 4). For a `std::string`, what remains is the branch on -`next_unget` and the adapter's bounds check and pointer increment. +`next_unget` and the adapter's bounds check and pointer increment. For the most common calls, not even that remains: +they don't use the lexer at all ([One loop instead of two](#one-loop-instead-of-two)). ### Contiguous input @@ -249,6 +254,43 @@ are scanned in bulk (themes malformed, so error messages and byte positions stay the same, with one deliberate correction (the column after a number at the end of a line). [Appendix J](#j-validation) describes how that was checked. +A pair of iterators is harder. Before C++20, `s.begin()` and `s.end()` of a `std::string` can't be told from the +iterators of any other random-access container, so `json::parse(s.begin(), s.end())` was read one character at a time, +while `json::parse(s)` got all the bulk scans. The library now matches the iterator types of `std::string` and of a +`std::vector` of one-byte integers exactly, and turns the pair into the pointer range it covers. That made +`parse(s.begin(), s.end())` 1.7–2.0× as fast on the M1, and `accept()` 2.7–3.1×. + +### One loop instead of two + +Even on a pointer range, the parser and the lexer still talked through an interface: the parser asks for a token, the +lexer finds it and hands it over, and the parser dispatches on its type. The lexer's state, the current character, a +pending `unget()`, and where the token starts, lives in members, so it goes through memory on every token. After all of +the above, `json::accept()` of `twitter.json` still took 2.8× as long as `json_document::accept()` (theme +8), which reads the same bytes. + +[yyjson](https://github.com/ibireme/yyjson)'s reader shows the alternative: one function that holds the input in a +local pointer and in which the grammar, the whitespace and the tokens are one loop. After a `:`, it tests for the +characters that can start a value right there, instead of returning a token type and dispatching on it. 3.13.0 adds +such a parser for input in one block of memory, `contiguous_parser`. Its stack of open arrays and objects is a 64-bit +word with one bit per level, so the kind of the enclosing container is a shift away and stays in a register; every 64 +levels, the word is pushed to a vector. It doesn't build values itself: it drives the library's own SAX handlers, so +`parse()` builds the same `json` with the same code as before. It is used by `parse()` without a callback, by +`accept()`, and by `sax_parse()` with the user's own handler, each with the default options; everything else keeps the +old parser. + +The hard part was the errors. A second parser would have to produce the same exception, message and position for +every malformed input, a large surface for small differences. So it doesn't report errors at all. It stops at the +token the old parser would reject, before it reports that token to the handler, and the old parser runs again on the +same input to report the error. `parse()` gives it a handler that only reports, and `sax_parse()` one that forwards +only `parse_error()` to the user's handler, so that no event arrives twice. An error at the end of a large input costs +`parse()` about 1.2× as much as before; valid input costs nothing extra. + +On the M1, `accept()` got 1.6–2.0× as fast, `sax_parse()` 1.4–1.5×, and `parse()` 10–16% faster, about the same with +GCC and Clang on x86-64. In `accept()`, which needs no values, the parser also skips the digits of a number without +computing its value, except for the rare float whose exponent may reach the largest `double`: another 16% on +`canada.json`. The cost is about 1,000 lines of header, and a translation unit that parses a string and dumps it +compiles 3% slower at `-O0` and 9% at `-O2`. + ### Streams An `std::istream` already has a buffer: the get area of its `streambuf`, `gptr()` to `egptr()`. The lexer now scans that @@ -276,7 +318,10 @@ Before the stream refills its get area, the adapter appends the part of the curr buffer; only an error message ever reads the token text back. Nothing is read ahead: the adapter advances `gptr()` by exactly what the lexer consumes, so the stream is left where it was before. On an M1 Max, parsing from an `std::ifstream` took 1.8–2.5× as long as reading the file into a string and parsing that, in the pull request's -measurement before the change; now it takes just 9–16% longer. +measurement before the change, and 9–16% longer after it. Since then, parsing a string got faster still, because the +fused parser of [One loop instead of two](#one-loop-instead-of-two) needs input in one block of memory, so a stream now +takes 25–38% longer than the string again (the file read with one `read()`, parsing `twitter.json`, +`citm_catalog.json`, and `canada.json`). ### `FILE*` @@ -284,11 +329,26 @@ measurement before the change; now it takes just 9–16% longer. `_lock_file` and `_fgetc_nolock` with the Microsoft runtime). `flockfile` is recursive, so the binary readers' `fread()` and a SAX handler's own `ftell()` keep working. Whereas parsing `citm_catalog.json` from a `FILE*` got 4.4× as fast on macOS in the pull request's measurement, with glibc it got only 1.1–1.3× as fast, because glibc's per-call locking is -already cheap. Two details: MemorySanitizer builds keep `fgetc`, because glibc's inline `getc_unlocked` reads a buffer -that uninstrumented glibc filled. And a SAX handler that waits for another thread using the same `FILE` now deadlocks, -as the documentation says. Both paths can be switched off, with +already cheap. + +That still left a call per character, while a stream had its get area scanned in bulk. But a `FILE` has a buffer too, +and `getc_unlocked()` is a macro that reads it: glibc's compares `_IO_read_ptr` with `_IO_read_end`, Apple's counts +down `_r` and advances `_p`. The adapter now reads those same fields and offers the lexer the rest of the buffer as a +window, as for a stream. It consumes exactly the characters `getc_unlocked()` would have returned, so the file is +left where it was before, and when the C library is about to refill the buffer, the part of the current token in it is +kept for error messages. The idea is gnulib's +[`freadptr()`](https://github.com/coreutils/gnulib/blob/master/lib/freadptr.c), which knows these fields for many C +libraries. Parsing from a `FILE*` got another 2.0–2.6× faster on the M1 and 1.7–2.2× with glibc on x86-64, and +`accept()` 2.9–4.4×; it is now about as fast as parsing from an `std::ifstream`. uClibc +defines `__GLIBC__` but has other fields, so it is excluded, and other C libraries keep reading one character at a +time. + +Two details: MemorySanitizer builds keep `fgetc`, because glibc's inline `getc_unlocked` reads a buffer that +uninstrumented glibc filled. And a SAX handler that waits for another thread using the same `FILE` now deadlocks, as the +documentation says. Both paths can be switched off, with [`JSON_DISABLE_STREAM_BULK_SCAN`](../../api/macros/json_disable_stream_bulk_scan.md) and -[`JSON_DISABLE_UNLOCKED_FILE_IO`](../../api/macros/json_disable_unlocked_file_io.md). +[`JSON_DISABLE_UNLOCKED_FILE_IO`](../../api/macros/json_disable_unlocked_file_io.md); the second turns the `FILE` +window off as well, as it needs the lock for the whole parse. ## 2 Work on words, not bytes { #theme-2 } @@ -325,6 +385,20 @@ Hacks](https://graphics.stanford.edu/~seander/bithacks.html#ZeroInWord). The sub it can flag a byte *after* a real hit, but never one before it: the lowest flag is always right, and the number of trailing zero bits divided by eight is the index of the first special byte. +The code above is the readable form, and it does more work than it needs to. The `& ~x` of the zero-byte test only +keeps bytes from 0x80 out of the result, and `has_non_ascii` flags exactly those bytes anyway. So all three `& ~x` +terms can go, and the whole test becomes one expression: + +```cpp +return ((q - ones) | (b - ones) | (v - 0x2020202020202020ull) | v) & high; +``` + +

The same test without the redundant `& ~x` terms.

+ +Clang finds this reduction on its own; GCC doesn't, and emitted 24 instructions per word instead of 16. With GCC on +x86-64, writing it out made validating `twitter.json` and `citm_catalog.json` 5–7% faster and `dump()` 2–3%. The +masks of both forms are the same for every pair of adjacent byte values and for 1.3 billion random words. +
--8<-- "images/perf_blog_swar.svg"
@@ -359,10 +433,16 @@ The same kind of word test now runs in several places: ### 16 bytes with SSE2 and NEON Where a vector unit is part of the baseline instruction set (SSE2 on x86-64, NEON on 64-bit Arm), the string paths take -16 bytes per step. Two well-known details are worth repeating. A signed comparison `byte < 0x20` catches control -characters *and* every byte from 0x80, because those are negative as `int8_t`, so four classes of bytes take three -comparisons. And NEON has no equivalent of x86's `pmovmskb`, which turns a vector of comparison results into a bit mask. -The usual replacement, by [Danila +16 bytes per step. Three details are worth repeating. A signed comparison `byte < 0x20` catches control characters +*and* every byte from 0x80, because those are negative as `int8_t`. Flipping bit 1 first folds the quote into that +comparison too: `c ^ 2` maps 0x00–0x1F onto themselves and the quote (0x22) onto 0x20, keeps the bytes from 0x80 +negative, and maps every other ASCII byte to 33 or more. So `(int8_t)(c ^ 2) < 33` finds three of the four classes of +bytes, and only the backslash needs a comparison of its own (Daniel Lemire, ["Detect control characters, quotes and +backslashes efficiently using +SWAR"](https://lemire.me/blog/2025/04/13/detect-control-characters-quotes-and-backslashes-efficiently-using-swar/), +2025; ruby/json uses the same trick in its SIMD scan). Neither GCC nor Clang finds this one on its own. And NEON has no +equivalent of x86's `pmovmskb`, which turns a vector of comparison results into a bit mask. The usual replacement, by +[Danila Kutenin](https://developer.arm.com/community/arm-community-blogs/b/servers-and-cloud-computing-blog/posts/porting-x86-vector-bitmask-optimizations-to-arm-neon), shifts each 16-bit lane right by four and narrows it to eight bits, which leaves four bits per input byte in a 64-bit integer: @@ -371,10 +451,11 @@ integer: while (e - p >= 16) { const uint8x16_t in = vld1q_u8(p); - const uint8x16_t quote_or_backslash = vorrq_u8(vceqq_u8(in, vdupq_n_u8('"')), - vceqq_u8(in, vdupq_n_u8('\\'))); - const uint8x16_t special = vorrq_u8(quote_or_backslash, - vcltq_s8(vreinterpretq_s8_u8(in), vdupq_n_s8(0x20))); + // the backslash, and (c ^ 2) < 33 as int8_t for the quote, the control + // characters and the bytes from 0x80 + const uint8x16_t special = vorrq_u8(vceqq_u8(in, vdupq_n_u8('\\')), + vcltq_s8(vreinterpretq_s8_u8(veorq_u8(in, vdupq_n_u8(2))), + vdupq_n_s8(33))); // each byte of special is 0x00 or 0xFF; shifting each 16-bit lane right by 4 and // keeping its low byte leaves 4 bits per input byte const uint8x8_t nibbles = vshrn_n_u16(vreinterpretq_u16_u8(special), 4); @@ -387,7 +468,7 @@ while (e - p >= 16) } ``` -

The NEON string scan: three comparisons for four classes of bytes, and a narrowing +

The NEON string scan: two comparisons for four classes of bytes, and a narrowing shift in place of `pmovmskb`.

On `twitter.json`, the vector scan made `json::parse()` 5% faster with Clang and 9% with GCC on an M1 Max; on long @@ -397,7 +478,7 @@ runs one word first. Inlining the vector code into the lexer cost 5% of validati no string of that file is long enough to reach it: the scan function, which runs once per token, saved more registers and needed a stack slot. -[`json_document`](../../features/json_view.md), the new document type of `json_view.hpp`, also skips the digits after a +[`json_document`](../../features/json_view/index.md), the new document type of `json_view.hpp`, also skips the digits after a decimal point 16 bytes at a time with SSE2: a compare and a bit mask instead of a branch per digit, about 33% of the instructions for a 12-digit fraction. Parsing `canada.json` got 22% faster on x86-64, a file of 10,000 floats 28–32%. @@ -738,7 +819,12 @@ arrays `[1,2]` at most 1.5%. The parser checks for the expected `:` or `,` before it falls into the lexer's general token switch (−7% on `citm_catalog.json`, a contribution by [@mvanslobbe](https://github.com/mvanslobbe)), and [`to_cbor()`](../../api/basic_json/to_cbor.md) no longer creates a temporary `basic_json` for every object key it writes -(−55% on `twitter.json`, by [@alexprabhat99](https://github.com/alexprabhat99)). +(−55% on `twitter.json`, by [@alexprabhat99](https://github.com/alexprabhat99)). And the binary readers wrote every +byte of a string twice: they grew the string with `resize()`, which fills it with zeros, and then copied the bytes over +the zeros. The zero fill alone was 5% of the instructions of `from_cbor()`. A string that the input holds in one block +is now appended from it directly, after its claimed length has been checked against the input, so a huge claimed +length still allocates nothing. Reading `twitter.json` and `citm_catalog.json` from CBOR and MessagePack got 5–9% +faster on the M1, 3–9% on x86-64. !!! note "The same idea, measured twice" @@ -1006,6 +1092,15 @@ oa.commit(out - start);

Encoding a run of integers through a cursor, with one capacity check for the whole run.

+The cursor needs the vector to be as long as the space it writes into, so the sink grew it with `resize()` to its whole +new capacity. That zeroes the new bytes, so every doubling zeroed megabytes of fresh memory at once: it faulted in all +the pages and pushed them out of the cache before the writer got there. The writers had gained much less on x86-64 than +on the M1 (writing an array of numbers as CBOR got 2.4× as fast on a Skylake laptop and 4.8× on the M1 Max), and this +was part of the reason: page faults, zeroing and copies on reallocation of a 9–80 MB output were 30–76% of the 3.13.0 +time on x86-64. The sink still reserves the same capacity, but now resizes the vector only to 64 KiB ahead of the +cursor, a window that is still in the cache when the writer's stores arrive. On x86-64, writing large arrays of numbers +got 9–26% faster; on the M1, 1–2.5%. + ### Integers without branches The last step also took the branches out of encoding an integer. After the bounds checks, mispredicted branches @@ -1132,7 +1227,7 @@ million small objects 1.39×. After all of the above, [`json::parse()`](../../api/basic_json/parse.md) is still bound by what it builds: one heap allocation per string, array and object, and a `std::map` node per member, all of which have to be freed again. Many programs only parse a document, read some fields and throw it away, or change a few values and write it back. For them, -3.13.0 adds [`json_document`](../../features/json_view.md) and `json_view` in a new header, ``. +3.13.0 adds [`json_document`](../../features/json_view/index.md) and `json_view` in a new header, ``. The two figures below show what each parser makes of this 54-byte text: ```json @@ -1215,7 +1310,7 @@ static_assert(sizeof(node) == 16, "node must stay 16 bytes"); ### It can be edited, too A read-only index is the easy case, and a fair objection is that `json_document` is only fast because it can't change. -[`json_editable_document`](../../features/json_view.md#editing-a-document) has `set()`, `insert()`, `erase()` and +[`json_editable_document`](../../features/json_view/editing.md) has `set()`, `insert()`, `erase()` and `push_back()`. An edit never writes into the source text and never moves the parsed index: - a new scalar is written over its own node, with new string and number text in an append-only arena; @@ -1291,9 +1386,8 @@ operating system. It is not neutral in every detail, though: fresh memory costs page faults. yyjson's normal read makes the same copy internally, which is why both ways take about as long. A server that validates a request and then passes it on needs the copy. A program that reads a file into a buffer it owns can skip it, so we also timed the in-place ways with the copy made before the timer starts. On the Mac, - yyjson then comes 2–4% closer and stays second, and on `twitter.json` it sums and selects 2–3% faster than - `json_document`. On x86-64, it ties `json_document` in *sum* with Clang and takes 1.06× and 1.19× its time with GCC 16 - and GCC 13. + yyjson then comes 3–5% closer, and on `twitter.json` it validates and selects 1–2% faster than `json_document`. On + x86-64, it ties `json_document` in *sum* with Clang and takes 1.04× and 1.15× its time with GCC 16 and GCC 13. - `json_document` reads the string in place and keeps pointing into it. A document that owns its text ([`parse_copy()`](../../api/basic_json_document/parse_copy.md)) costs one copy more: 3–5% on the Mac. - Reading from files and streams is not part of the comparison. @@ -1344,12 +1438,13 @@ lists only x86-64 Linux; we show it on the Mac anyway.

### Results on the Mac On the Apple M1 Max, among the ways that reject all four broken inputs, `json_document` has the lowest mean on the four -files in all six use cases, and yyjson is second in every column. That includes editing, where the editable document is +files in all six use cases, and yyjson is the next library in every column; in *validate*, `json::accept()` comes in +between (1.38× against yyjson's 1.41×). That includes editing, where the editable document is faster than yyjson's mutable document: the speed doesn't depend on being read-only. Some caveats belong next to that: -- **The lead is not the same on every file.** On `twitter.json`, yyjson is within 3–7% in *validate*, *sum*, and +- **The lead is not the same on every file.** On `twitter.json`, yyjson is within 4–7% in *validate*, *sum*, and *select*. Most of the lead comes from `citm_catalog.json`, the floats of `canada.json` (next point) and the size of `jeopardy.json`. - **Floats are converted only when read.** That helps `json_document` in *validate* and *select* on `canada.json`, where @@ -1357,44 +1452,45 @@ Some caveats belong next to that: only Boost.JSON gains much: it validates `canada.json` in 47% of the time. *sum* reads every number, so it is the fair comparison for floats; there, `json_document` is still slightly ahead of yyjson. - **Checking less pays in *select*.** If the input needn't be checked fully, simdjson's On-Demand API and Glaze reading - into structs select in 0.75× and 0.82× `json_document`'s time (Glaze is faster only on `citm_catalog.json` and - `canada.json`), and in 0.54–0.62× on x86-64: the right halves of the *select* column. + into structs select in 0.76× and 0.81× `json_document`'s time (Glaze is faster only on `citm_catalog.json` and + `canada.json`), and in 0.55–0.61× on x86-64: the right halves of the *select* column. - **Indentation.** Two of the four files are indented, which theme 2 helps. On minified copies of `twitter.json` and - `citm_catalog.json`, yyjson comes closer in *sum* (1.11 → 1.04) but not in *validate* (1.28 → 1.27), and + `citm_catalog.json`, yyjson comes closer in *sum* (1.11 → 1.01) and a little in *validate* (1.27 → 1.24), and `json_document` stays first. - **Number text can be copied.** With [`number_format::source`](../../api/basic_json_view/number_format.md), `json_document` writes each number by copying its text instead of formatting it, and yyjson and RapidJSON can read numbers as text and write them back unchanged. The output keeps the source's spelling of each number, which is all a - minifier needs. It makes writing `canada.json` with `json_document` 4.0× as fast and minifying it 1.9× as fast; the + minifier needs. It makes writing `canada.json` with `json_document` 4.1× as fast and minifying it 1.9× as fast; the "N" halves of *edit*, *minify*, and *write* show it. -- **Small documents.** On a 2.5 KB message, the fastest libraries take about a microsecond on the Mac and 1.2–2 on - x86-64. yyjson validates and sums it as fast as `json_document` on the Mac, and with GCC 16 on x86-64, simdjson and - yyjson sum it slightly faster. +- **Small documents.** On a 2.5 KB message, the fastest libraries take about a microsecond on the Mac and 1.1–2 on + x86-64. yyjson validates and sums it as fast as `json_document` on the Mac, and with GCC on x86-64, simdjson and + yyjson sum it as fast. ### Reading into structs A view can be converted into your own types with the same [`from_json()`](../../features/arbitrary_types.md) as `json`, including the ones the [`NLOHMANN_DEFINE_TYPE_*`](../../api/macros/nlohmann_define_type_non_intrusive.md) macros generate. That is as fast as picking the fields by hand from the view; only for the many small records of -`jeopardy.json` does it take 23% longer. On the Mac, Glaze, serde_json, and Boost.JSON's `parse_into`, reading into the -same structs and checking everything, take 1.7×, 2.2×, and 3.1× as long (geometric mean over the four files). On a +`jeopardy.json` does it take 22% longer. On the Mac, Glaze, serde_json, and Boost.JSON's `parse_into`, reading into the +same structs and checking everything, take 1.7×, 2.3×, and 3.1× as long (geometric mean over the four files). On a `json` value, reading into the structs takes about as long as `json::parse()` alone. ### nlohmann/json without `json_document` And nlohmann/json without `json_document`? `json` builds a tree of separate allocations, and it shows: for *select*, *edit*, and *minify* it takes several times as long as `json_document`, like Boost.JSON and RapidJSON. Where no tree is -needed, it is closer: on the Mac, a SAX handler is on par with Boost.JSON's, and -[`json::accept()`](../../api/basic_json/accept.md) takes 6% longer than Boost.JSON without number conversion (on x86-64, -Boost.JSON validates in 0.65–0.69× and sums in 0.75–0.79× the time). `dump()` writes faster than Boost.JSON, RapidJSON -and serde_json, and about as fast as Glaze. +needed, the fused parser ([One loop instead of two](#one-loop-instead-of-two)) puts it among the fastest: +[`json::accept()`](../../api/basic_json/accept.md) validates the four files in 1.38× `json_document`'s time on the Mac, +ahead of every other library, and a SAX handler sums them in 1.34×, behind only yyjson and simdjson. Boost.JSON takes +1.8× and 1.5× as long as `json` there, and 1.2–1.4× and 1.1–1.3× on x86-64. `dump()` writes faster than Boost.JSON, +RapidJSON and serde_json, and about as fast as Glaze. Much of Boost.JSON's lead in building a tree comes from its allocator: here it builds the tree in a -`monotonic_resource`, an arena that is freed in one go, which saves it 28–41%. With its default allocator, which +`monotonic_resource`, an arena that is freed in one go, which saves it 27–40%. With its default allocator, which allocates every string, array, and object on its own as `json` does, `boost::json::parse()` with precise numbers takes -as long as `json::parse()` on `twitter.json`, 5% longer on `citm_catalog.json`, and 17% less time on `canada.json` (on -the Mac, freeing the tree included). +13–17% longer than `json::parse()` on `twitter.json`, 19–20% longer on `citm_catalog.json`, and 2% less time on +`canada.json` (on the Mac, freeing the tree included). ### Results on x86-64 @@ -1412,30 +1508,34 @@ compilers disagree only about *sum*. the figure above. Less is better; hover over or tap a cell for the times and the way. The figures for GCC 13 and Clang 23 are in [Appendix E](#e-comparison-with-other-libraries).

-`json_document` has the lowest mean in five of the six columns with GCC, where simdjson is ahead in *sum*, and in all -six with Clang. This machine is noisy, though: between two runs, a library's time relative to `json_document`'s moved by -up to 9–10% (95th percentile; 2.5% on the Mac). So Clang's 7% lead in *sum* over sonic-rs is no result, and without -`twitter.json`, sonic-rs is first. In *validate*, the next library takes 1.8–1.9× as long, or 1.6–1.7× if every library -may reuse its parser, because validating no longer builds an index (theme -8). Behind those means, it loses on single files: +`json_document` has the lowest mean in five of the six columns with every compiler. The exception is *sum*, where +simdjson is ahead with GCC, and `json` with a SAX handler with GCC 13 and Clang 23 (with Clang by 5%, all of it on +`jeopardy.json`; below). This machine is noisy, though: between two runs, a library's time relative to +`json_document`'s moved by up to 7–8% (95th percentile; 2.4% on the Mac), so a lead of 5% is no result. In *validate*, +the next library takes 1.8–2.0× as long, or 1.6–1.7× if every library may reuse its parser, because validating no +longer builds an index (theme 8). The only way in between is +`json::accept()` at 1.3–1.7×, which builds nothing either ([One loop instead of two](#one-loop-instead-of-two)). +Behind those means, `json_document` loses on single files: - **One pass over every value, with GCC.** simdjson's On-Demand API sums all numbers of `twitter.json`, - `citm_catalog.json`, and `canada.json` in 0.83–0.99× `json_document`'s time with GCC 16 (0.86–0.91× with GCC 13). With + `citm_catalog.json`, and `canada.json` in 0.76–0.97× `json_document`'s time with GCC 16 (0.79–0.92× with GCC 13). With Clang, `json_document` is ahead there, except on `canada.json`, where yyjson, which converts the floats during the - parse, is faster than converting them on access. + parse, is faster than converting them on access, and on `citm_catalog.json`, where `json`'s SAX handler and + Boost.JSON's are 1–3% faster. - **Fresh large documents.** For the 56 MB `jeopardy.json`, a fresh document needs a fresh 52 MB index, and on Linux the page faults of that much new memory are a large part of the time: copying the file into fresh memory alone takes about 50% as long as `json_document`'s parse. Boost.JSON's SAX parser and sonic-rs, which build nothing, sum it in - 0.66–0.72× the time. Reusing the document cuts `json_document`'s time by 40–43%, to 51–53 ms, less than sonic-rs's 60 - ms. Validating needs no index: `json_document::accept()` takes 35 ms, and no library validates `jeopardy.json` faster, - even reused (the next is simdjson's reused parser at 47–49 ms). On the Mac, a fresh document costs hardly more than a - reused one. -- **Writing floats.** yyjson writes `canada.json` in 0.87–0.97× the time (and Glaze, with GCC 13, in 0.96×), because - `json_document` first converts most floats from their text. Writing the source text instead (`number_format::source`, - the "N" half) avoids that. -- **simdjson's DOM.** It selects from `citm_catalog.json` 16% faster with GCC 16 and 1–4% faster with GCC 13 and Clang - 23, and from `twitter.json` 1–6% faster. Boost.JSON, Glaze, sonic-cpp, and yyjson are 1–3% ahead in a few more cells, - which is within the noise. + 0.64–0.71× the time, and `json`'s SAX handler in 0.70–0.75×. Reusing the document cuts `json_document`'s time by + 41–43%, to 51 ms, less than sonic-rs's 60 ms. Validating needs no index: `json_document::accept()` takes 33–35 ms, + `json::accept()` 39–40 ms, and no other library validates `jeopardy.json` faster, even reused (the next is simdjson's + reused parser at 48–52 ms). On the Mac, a fresh document costs hardly more than a reused one. +- **Writing floats.** yyjson writes `canada.json` in 0.84–0.93× the time (and Glaze with GCC 13 and `json`'s `dump()` + with GCC 16, which start from `double`s, in 0.98× and 0.99×), because `json_document` first converts most floats from + their text. Writing the source text instead (`number_format::source`, the "N" half) avoids that. +- **simdjson's DOM.** It selects from `citm_catalog.json` 19% faster with GCC 16 and 7–13% faster with GCC 13 and Clang + 23, and from `twitter.json` 2–4% faster with GCC. Boost.JSON, Glaze, sonic-rs, sonic-cpp, and yyjson are ahead in a + few more cells, by 1–10%: summing `citm_catalog.json` (Boost.JSON with GCC), and selecting from or writing + `jeopardy.json`. Most of that is within the noise. The full tables, with each library's variants, are in [Appendix E](#e-comparison-with-other-libraries). @@ -1444,7 +1544,8 @@ The full tables, with each library's variants, are in [Appendix E](#e-comparison The four files are the ones 3.13.0 was tuned on, so we also ran *validate*, *sum*, *minify*, and *write* on the 19 other files of simdjson's [`jsonexamples`](https://github.com/simdjson/simdjson-data/tree/master/jsonexamples). By geometric mean, `json_document` stays the fastest in *validate*, *minify*, and *write* on every compiler, and in *sum* with Clang -and on the Mac; with GCC, simdjson sums in 0.86–0.87× its time. File by file, for *validate*: +and on the Mac; with GCC, simdjson sums in 0.87–0.88× its time. `json::accept()` validates them in 1.4–1.6× the time +of `json_document` on x86-64, close to simdjson (1.44–1.46×), the fastest other library. File by file, for *validate*:
--8<-- "images/perf_blog_heldout.svg" @@ -1454,8 +1555,10 @@ and on the Mac; with GCC, simdjson sums in 0.86–0.87× its time. File by file, fastest other library's, per file; below 1.0× it is the fastest. Less is better. The right column names the next library on x86-64 (GCC 16.2).

-`json_document` validates all 19 files fastest with GCC 16 and Clang 23, and 18 with GCC 13 and on the Mac: simdjson -validates `apache_builds` 8% faster on the Mac and `google_maps_api_response` 2% faster with GCC 13. Before validating +`json_document` validates 18 of the 19 files fastest with GCC 16, Clang 23, and on the Mac: simdjson ties on +`google_maps_api_response` with GCC 16, Boost.JSON on `mesh.pretty` with Clang 23, and simdjson validates +`apache_builds` 7% faster on the Mac. With GCC 13 it is 17: simdjson validates `google_maps_api_response` 6% faster, +and Boost.JSON `mesh.pretty` 10% faster (1% in the first of our two runs on November 7). Before validating without an index (theme 8) and skipping fraction digits 16 bytes at a time (theme 2), Boost.JSON validated the number-heavy files up to 1.5× as fast on x86-64. @@ -1490,8 +1593,8 @@ the pull requests that tried them.

## The price -None of this is free at compile time. `json.hpp` grew from 25,526 to 46,630 lines (`json_view.hpp` is a separate header -of 11,898 lines that you only pay for if you include it). To see what that means for a program, we compiled two small +None of this is free at compile time. `json.hpp` grew from 25,526 to 48,025 lines (`json_view.hpp` is a separate header +of 11,909 lines that you only pay for if you include it). To see what that means for a program, we compiled two small ones with both versions: - `count_numbers` reads `twitter.json` and adds up all of its numbers, like the *sum* use case in [How it @@ -1511,16 +1614,16 @@ better: Apple clang 21 and GCC 16.2, CPU time of the compiler, median of 5 inter one-off cost of building the precompiled header or the module is not included. Hover over a bar for the time in milliseconds; [Appendix G](#g-how-we-measured) has all times, the programs, and the commands.

-3.13.0 takes 34–62% longer to compile these programs. A good part of that is reading the header, and a precompiled +3.13.0 takes 36–68% longer to compile these programs. A good part of that is reading the header, and a precompiled header or a module does that once instead of in every translation unit: - **In debug builds,** which are what you wait for while you edit, a precompiled 3.13.0 compiles faster than 3.12.0 with - Apple clang, and within 8–15% of it with GCC. + Apple clang, and within 12–15% of it with GCC. - **In optimized builds,** less of the increase goes away, because the optimizer still works through all the code a - program instantiates. A precompiled header or a module wins back 41–91% of it. -- **The one-off cost** is 1.0 s (Apple clang) or 2.6 s (GCC) to build the precompiled header, and 1.6 s or 2.5 s to + program instantiates. A precompiled header or a module wins back 41% to all of it. +- **The one-off cost** is 0.9 s (Apple clang) or 2.3 s (GCC) to build the precompiled header, and 1.4 s or 2.3 s to build the module, once per set of compiler flags. A precompiled header pays for itself after two to four translation - units, a module after three to five. + units, a module after three to six. - **Modules have caveats.** Apple clang needs `-fcxx-modules`, [module support](../../features/modules.md) still depends heavily on the compiler version, and macros don't cross a module boundary: with `import nlohmann.json;`, the `NLOHMANN_DEFINE_TYPE_*` macros aren't available, which is why `server_config` writes `to_json()` and `from_json()` by @@ -1615,27 +1718,27 @@ The rows of the first chart: | workload | 3.12.0 | 3.13.0 | speedup | Intel | | --- | --: | --: | --: | --: | -| `json::parse()` of `twitter.json` | 3.30 ms | 1.05 ms | 3.1× | 2.6× | -| `json::parse()` of `citm_catalog.json` | 7.56 ms | 1.78 ms | 4.3× | 3.5× | -| `json::parse()` of `canada.json` | 15.5 ms | 4.63 ms | 3.4× | 6.1× | -| `json::parse()` of `canada.json`, indented by 4 spaces | 35.0 ms | 5.37 ms | 6.5× | 8.0× | -| `ordered_json::parse()` of `citm_catalog.json` | 11.5 ms | 1.68 ms | 6.9× | 6.6× | -| `json::parse()` of `twitter.json` from an `std::ifstream` | 3.43 ms | 1.37 ms | 2.5× | 2.3× | -| `json::parse()` of `citm_catalog.json` from a `FILE*` | 36.0 ms | 7.58 ms | 4.7× | 5.7× | -| `json::accept()` of `citm_catalog.json` | 6.53 ms | 0.923 ms | 7.1× | 8.4× | -| `dump()` of `twitter.json` | 1.44 ms | 0.214 ms | 6.7× | 5.7× | -| `dump()` of `canada.json` | 6.95 ms | 2.34 ms | 3.0× | 3.3× | -| `dump(4)` of `citm_catalog.json` | 1.99 ms | 0.423 ms | 4.7× | 4.1× | -| `to_cbor()` of `twitter.json` | 0.659 ms | 0.143 ms | 4.6× | 6.7× | -| `from_cbor()` of `twitter.json` from memory | 3.23 ms | 0.953 ms | 3.4× | 2.8× | -| `from_cbor()` of `twitter.json` from a `FILE*` | 10.4 ms | 1.57 ms | 6.6× | 6.5× | -| `diff()` of `canada.json` with every eighth scalar changed | 39.8 ms | 3.80 ms | 10.5× | 11.2× | -| iterating over every value of `canada.json` | 0.897 ms | 0.328 ms | 2.7× | 2.0× | -| copying `citm_catalog.json` and destroying the copy | 1.70 ms | 1.51 ms | 1.13× | 1.12× | -| `==` of `citm_catalog.json` and a copy | 0.280 ms | 0.263 ms | 1.06× | 0.95× | +| `json::parse()` of `twitter.json` | 3.21 ms | 0.921 ms | 3.5× | 2.6× | +| `json::parse()` of `citm_catalog.json` | 7.40 ms | 1.45 ms | 5.1× | 3.5× | +| `json::parse()` of `canada.json` | 15.2 ms | 3.73 ms | 4.1× | 6.1× | +| `json::parse()` of `canada.json`, indented by 4 spaces | 34.2 ms | 4.61 ms | 7.4× | 8.0× | +| `ordered_json::parse()` of `citm_catalog.json` | 11.0 ms | 1.34 ms | 8.2× | 6.6× | +| `json::parse()` of `twitter.json` from an `std::ifstream` | 3.40 ms | 1.38 ms | 2.5× | 2.3× | +| `json::parse()` of `citm_catalog.json` from a `FILE*` | 35.0 ms | 2.34 ms | 14.9× | 5.7× | +| `json::accept()` of `citm_catalog.json` | 6.48 ms | 0.474 ms | 13.7× | 8.4× | +| `dump()` of `twitter.json` | 1.41 ms | 0.214 ms | 6.6× | 5.7× | +| `dump()` of `canada.json` | 6.71 ms | 2.31 ms | 2.9× | 3.3× | +| `dump(4)` of `citm_catalog.json` | 1.95 ms | 0.422 ms | 4.6× | 4.1× | +| `to_cbor()` of `twitter.json` | 0.637 ms | 0.144 ms | 4.4× | 6.7× | +| `from_cbor()` of `twitter.json` from memory | 3.09 ms | 0.879 ms | 3.5× | 2.8× | +| `from_cbor()` of `twitter.json` from a `FILE*` | 9.92 ms | 1.07 ms | 9.2× | 6.5× | +| `diff()` of `canada.json` with every eighth scalar changed | 39.2 ms | 3.75 ms | 10.4× | 11.2× | +| iterating over every value of `canada.json` | 0.874 ms | 0.445 ms | 2.0× | 2.0× | +| copying `citm_catalog.json` and destroying the copy | 1.65 ms | 1.49 ms | 1.11× | 1.12× | +| `==` of `citm_catalog.json` and a copy | 0.264 ms | 0.261 ms | 1.01× | 0.95× |

Time per call with 3.12.0 and 3.13.0, Google Benchmark suite on an Apple M1 Max, -median of 8 runs; the speedup is the old time divided by the new one. The Intel column is the speedup on the Intel +median of 12 runs; the speedup is the old time divided by the new one. The Intel column is the speedup on the Intel MacBook Pro of [Appendix G](#g-how-we-measured). The parse rows do not include destroying the result (the suite pauses the timer for that).

@@ -1643,188 +1746,188 @@ the timer for that).

| benchmark | 3.12.0 | 3.13.0 | speedup | Intel | | --- | --: | --: | --: | --: | - | `Accept/canada` | 12.9 ms | 2.35 ms | 5.51× | 13× | - | `Accept/citm_catalog` | 6.53 ms | 923 µs | 7.07× | 8.45× | - | `Accept/floats` | 116 ms | 22.7 ms | 5.10× | 12.2× | - | `Accept/jeopardy` | 221 ms | 59.3 ms | 3.72× | 6.64× | - | `Accept/signed_ints` | 117 ms | 28.3 ms | 4.15× | 4.99× | - | `Accept/small_signed_ints` | 57.5 ms | 18 ms | 3.19× | 3.90× | - | `Accept/twitter` | 2.51 ms | 484 µs | 5.20× | 6.89× | - | `Accept/unsigned_ints` | 116 ms | 29.7 ms | 3.91× | 4.95× | - | `BinaryToCbor/1024` | 298 ns | 107 ns | 2.79× | 3.67× | - | `BinaryToCbor/128` | 249 ns | 117 ns | 2.13× | 2.27× | - | `BinaryToCbor/16384` | 952 ns | 414 ns | 2.30× | 3.46× | - | `BinaryToCbor/16` | 245 ns | 49.6 ns | 4.93× | 6.33× | - | `BinaryToCbor/2048` | 328 ns | 125 ns | 2.62× | 3.74× | - | `BinaryToCbor/256` | 265 ns | 90.9 ns | 2.91× | 3.33× | - | `BinaryToCbor/32768` | 1.54 µs | 803 ns | 1.92× | 2.11× | - | `BinaryToCbor/32` | 252 ns | 50.4 ns | 4.99× | 6.24× | - | `BinaryToCbor/4096` | 407 ns | 177 ns | 2.29× | 3.48× | - | `BinaryToCbor/512` | 290 ns | 102 ns | 2.84× | 3.02× | - | `BinaryToCbor/64` | 255 ns | 84.6 ns | 3.01× | 3.78× | - | `BinaryToCbor/8192` | 514 ns | 256 ns | 2.01× | 3.30× | - | `BinaryToCbor/8` | 248 ns | 49.4 ns | 5.01× | 6.18× | - | `Copy/canada` | 3.78 ms | 2.93 ms | 1.29× | 1.17× | - | `Copy/citm_catalog` | 1.7 ms | 1.51 ms | 1.13× | 1.12× | - | `Copy/twitter` | 840 µs | 767 µs | 1.09× | 1.14× | - | `CopyAssign/canada` | 3.86 ms | 2.94 ms | 1.31× | 1.19× | - | `CopyAssign/citm_catalog` | 1.77 ms | 1.59 ms | 1.11× | 1.12× | - | `CopyAssign/twitter` | 885 µs | 791 µs | 1.12× | 1.07× | - | `CopyOnly/canada` | 1.6 ms | 1.58 ms | 1.02× | 1.00× | - | `CopyOnly/citm_catalog` | 786 µs | 817 µs | 0.96× | 0.93× | - | `CopyOnly/twitter` | 424 µs | 421 µs | 1.01× | 1.02× | - | `CopyRing/canada` | 3.86 ms | 3 ms | 1.29× | 1.20× | - | `CopyRing/citm_catalog` | 1.84 ms | 1.61 ms | 1.15× | 1.20× | - | `CopyRing/twitter` | 952 µs | 818 µs | 1.16× | 1.15× | - | `DestroyOnly/canada` | 2.22 ms | 1.4 ms | 1.58× | 1.32× | - | `DestroyOnly/citm_catalog` | 926 µs | 711 µs | 1.30× | 1.20× | - | `DestroyOnly/twitter` | 416 µs | 336 µs | 1.24× | 1.15× | - | `Diff/canada` | 39.8 ms | 3.8 ms | 10.5× | 11.2× | - | `Diff/citm_catalog` | 7.19 ms | 1.12 ms | 6.40× | 7.78× | - | `Diff/twitter` | 5.11 ms | 661 µs | 7.73× | 8.79× | - | `Dump/canada / -` | 6.95 ms | 2.34 ms | 2.98× | 3.34× | - | `Dump/canada / 4` | 9.1 ms | 3.1 ms | 2.93× | 2.82× | - | `Dump/citm_catalog / -` | 1.42 ms | 296 µs | 4.81× | 3.93× | - | `Dump/citm_catalog / 4` | 1.99 ms | 423 µs | 4.70× | 4.09× | - | `Dump/floats / -` | 64.3 ms | 23.8 ms | 2.71× | 2.50× | - | `Dump/floats / 4` | 72.6 ms | 24.6 ms | 2.95× | 2.71× | - | `Dump/jeopardy / -` | 207 ms | 31.7 ms | 6.51× | 3.75× | - | `Dump/jeopardy / 4` | 228 ms | 35.4 ms | 6.45× | 2.61× | - | `Dump/signed_ints / -` | 24.1 ms | 10.7 ms | 2.24× | 1.44× | - | `Dump/signed_ints / 4` | 32.5 ms | 11.3 ms | 2.87× | 2.01× | - | `Dump/small_signed_ints / -` | 18.1 ms | 8.12 ms | 2.23× | 1.81× | - | `Dump/small_signed_ints / 4` | 25.5 ms | 8.81 ms | 2.90× | 2.21× | - | `Dump/twitter / -` | 1.44 ms | 214 µs | 6.70× | 5.75× | - | `Dump/twitter / 4` | 1.63 ms | 253 µs | 6.45× | 5.18× | - | `Dump/unsigned_ints / -` | 24 ms | 8.12 ms | 2.95× | 1.58× | - | `Dump/unsigned_ints / 4` | 32.3 ms | 8.59 ms | 3.76× | 2.30× | - | `Equal/canada` | 474 µs | 349 µs | 1.36× | 1.38× | - | `Equal/citm_catalog` | 280 µs | 263 µs | 1.06× | 0.95× | - | `Equal/twitter` | 146 µs | 131 µs | 1.11× | 1.02× | - | `Flatten/canada` | 29.4 ms | 11.1 ms | 2.65× | 2.68× | - | `Flatten/citm_catalog` | 6.72 ms | 3.07 ms | 2.19× | 2.45× | - | `Flatten/twitter` | 3.66 ms | 2.11 ms | 1.74× | 2.19× | - | `FlattenOrdered/citm_catalog` | 262 ms | 1.43 ms | 184× | 185× | - | `FlattenOrdered/twitter` | 51.3 ms | 890 µs | 57.6× | 46.1× | - | `FromBinaryBuffer/bjdata / canada` | 8.82 ms | 4.17 ms | 2.12× | 2.02× | - | `FromBinaryBuffer/bjdata / twitter` | 3.32 ms | 976 µs | 3.40× | 2.87× | - | `FromBinaryBuffer/bjdata_optimized / canada` | 9.24 ms | 2.48 ms | 3.73× | 3.51× | - | `FromBinaryBuffer/bjdata_optimized / twitter` | 3.31 ms | 986 µs | 3.35× | 2.86× | - | `FromBinaryBuffer/bson / canada` | 10 ms | 4.32 ms | 2.33× | 2.20× | - | `FromBinaryBuffer/bson / citm_catalog` | 4.08 ms | 1.61 ms | 2.54× | 2.59× | - | `FromBinaryBuffer/bson / twitter` | 3.26 ms | 937 µs | 3.48× | 3.08× | - | `FromBinaryBuffer/cbor / canada` | 8.9 ms | 2.12 ms | 4.21× | 3.86× | - | `FromBinaryBuffer/cbor / citm_catalog` | 3.94 ms | 1.45 ms | 2.71× | 2.81× | - | `FromBinaryBuffer/cbor / floats` | 30.5 ms | 5.48 ms | 5.56× | 3.64× | - | `FromBinaryBuffer/cbor / jeopardy` | 373 ms | 115 ms | 3.25× | 3.43× | - | `FromBinaryBuffer/cbor / signed_ints` | 36.7 ms | 9.89 ms | 3.71× | 2.37× | - | `FromBinaryBuffer/cbor / twitter` | 3.23 ms | 953 µs | 3.39× | 2.83× | - | `FromBinaryBuffer/msgpack / canada` | 8.86 ms | 2.12 ms | 4.17× | 3.92× | - | `FromBinaryBuffer/msgpack / citm_catalog` | 3.85 ms | 1.45 ms | 2.65× | 2.94× | - | `FromBinaryBuffer/msgpack / jeopardy` | 373 ms | 111 ms | 3.36× | 3.51× | - | `FromBinaryBuffer/msgpack / twitter` | 3.24 ms | 955 µs | 3.39× | 3.02× | - | `FromBinaryBuffer/ubjson / canada` | 8.84 ms | 4.2 ms | 2.10× | 2.13× | - | `FromBinaryBuffer/ubjson / citm_catalog` | 4.07 ms | 1.79 ms | 2.28× | 2.44× | - | `FromBinaryBuffer/ubjson / jeopardy` | 379 ms | 117 ms | 3.24× | 3.40× | - | `FromBinaryBuffer/ubjson / twitter` | 3.3 ms | 981 µs | 3.36× | 2.90× | - | `FromBinaryBuffer/ubjson_optimized / canada` | 8.89 ms | 2.43 ms | 3.66× | 3.67× | - | `FromBinaryBuffer/ubjson_optimized / twitter` | 3.3 ms | 975 µs | 3.38× | 2.88× | - | `FromBinaryFile/bjdata / twitter` | 10.9 ms | 1.95 ms | 5.61× | 5.89× | - | `FromBinaryFile/bson / twitter` | 10.7 ms | 1.85 ms | 5.80× | 6.21× | - | `FromBinaryFile/cbor / canada` | 14.9 ms | 4.49 ms | 3.32× | 3.68× | - | `FromBinaryFile/cbor / twitter` | 10.4 ms | 1.57 ms | 6.59× | 6.46× | - | `FromBinaryFile/ubjson / canada` | 14.3 ms | 6.43 ms | 2.23× | 2.50× | - | `FromBinaryFile/ubjson / twitter` | 10.9 ms | 1.97 ms | 5.54× | 5.90× | - | `FromBinaryShape/containers / bjdata` | 14.7 ms | 7.23 ms | 2.03× | 2.05× | - | `FromBinaryShape/containers / bson` | 17.6 ms | 7.89 ms | 2.23× | 2.20× | - | `FromBinaryShape/containers / cbor` | 14.6 ms | 4.16 ms | 3.52× | 3.49× | - | `FromBinaryShape/containers / msgpack` | 14.6 ms | 3.89 ms | 3.75× | 3.52× | - | `FromBinaryShape/containers / ubjson_optimized` | 15.5 ms | 4.56 ms | 3.40× | 3.34× | - | `FromBinaryShape/containers / ubjson` | 15 ms | 7.24 ms | 2.07× | 2.03× | - | `FromBinaryShape/nested / bjdata` | 96.8 µs | 38.3 µs | 2.53× | 2.50× | - | `FromBinaryShape/nested / bson` | 101 µs | 42.6 µs | 2.38× | 2.42× | - | `FromBinaryShape/nested / cbor` | 94.9 µs | 35.8 µs | 2.65× | 2.57× | - | `FromBinaryShape/nested / msgpack` | 92.6 µs | 35.1 µs | 2.64× | 2.60× | - | `FromBinaryShape/nested / ubjson` | 96.1 µs | 38.3 µs | 2.51× | 2.50× | - | `FromBinaryShape/scalars / bjdata` | 25.3 ms | 11.6 ms | 2.18× | 2.22× | - | `FromBinaryShape/scalars / cbor` | 26.2 ms | 5.89 ms | 4.45× | 3.56× | - | `FromBinaryShape/scalars / msgpack` | 25.1 ms | 5.65 ms | 4.44× | 3.69× | - | `FromBinaryShape/scalars / ubjson` | 25.3 ms | 11.6 ms | 2.18× | 2.03× | - | `FromCborChunkedString/10000 chunks` | 91.8 µs | 82.9 µs | 1.11× | 1.09× | - | `FromMsgpack/canada` | 14.9 ms | 4.56 ms | 3.26× | 3.63× | - | `FromMsgpack/citm_catalog` | 9.36 ms | 2.26 ms | 4.14× | 4.60× | - | `FromMsgpack/floats` | 61.3 ms | 28.7 ms | 2.14× | 2.89× | - | `FromMsgpack/jeopardy` | 1,170 ms | 190 ms | 6.14× | 6.80× | - | `FromMsgpack/signed_ints` | 63.9 ms | 32.9 ms | 1.94× | 2.44× | - | `FromMsgpack/small_signed_ints` | 64.5 ms | 34.4 ms | 1.87× | 2.33× | - | `FromMsgpack/twitter` | 10.3 ms | 1.49 ms | 6.92× | 6.76× | - | `FromMsgpack/unsigned_ints` | 57.8 ms | 28.3 ms | 2.04× | 2.77× | - | `GetArray>` | 2.27 µs | 654 ns | 3.48× | 5.38× | - | `GetArray>` | 8.29 µs | 1.18 µs | 7.05× | 4.75× | - | `GetArray>` | 60 µs | 42.5 µs | 1.41× | 1.30× | - | `GetArray>` | 6.79 µs | 682 ns | 9.95× | 4.10× | - | `GetMap/citm_catalog` | 3.6 ms | 2.49 ms | 1.45× | 1.48× | - | `GetVectorDouble/floats` | 6.84 ms | 656 µs | 10.4× | 2.98× | - | `GetVectorInt/signed_ints` | 8.22 ms | 3.46 ms | 2.37× | 2.02× | - | `Iterate/canada` | 897 µs | 328 µs | 2.73× | 2.02× | - | `Iterate/citm_catalog` | 305 µs | 171 µs | 1.78× | 1.53× | - | `Iterate/twitter` | 90 µs | 62 µs | 1.45× | 1.20× | - | `JsonPointerAt/citm_catalog` | 1.9 ms | 1.18 ms | 1.61× | 1.47× | - | `JsonPointerAt/twitter` | 818 µs | 612 µs | 1.34× | 1.14× | - | `JsonPointerContains/citm_catalog` | 2.82 ms | 1.27 ms | 2.22× | 2.51× | - | `JsonPointerContains/twitter` | 1.34 ms | 629 µs | 2.12× | 2.16× | - | `JsonPointerParse/citm_catalog` | 5.81 ms | 2.25 ms | 2.59× | 3.74× | - | `JsonPointerParse/twitter` | 2.48 ms | 1.02 ms | 2.43× | 3.18× | - | `JsonPointerToString/citm_catalog` | 6.79 ms | 1.94 ms | 3.50× | 4.61× | - | `JsonPointerToString/twitter` | 2.23 ms | 834 µs | 2.67× | 2.66× | - | `ParseFILE/canada` | 54.2 ms | 14.7 ms | 3.69× | 5.46× | - | `ParseFILE/citm_catalog` | 36 ms | 7.58 ms | 4.74× | 5.73× | - | `ParseFILE/twitter` | 14.1 ms | 3.45 ms | 4.08× | 4.24× | - | `ParseFile/canada` | 18.3 ms | 6.47 ms | 2.83× | 4.67× | - | `ParseFile/citm_catalog` | 8.13 ms | 2.52 ms | 3.22× | 2.98× | - | `ParseFile/floats` | 131 ms | 48.1 ms | 2.73× | 5.68× | - | `ParseFile/jeopardy` | 338 ms | 162 ms | 2.09× | 2.23× | - | `ParseFile/signed_ints` | 129 ms | 46.2 ms | 2.78× | 3.41× | - | `ParseFile/small_signed_ints` | 64.7 ms | 33.4 ms | 1.94× | 2.57× | - | `ParseFile/twitter` | 3.43 ms | 1.37 ms | 2.49× | 2.33× | - | `ParseFile/unsigned_ints` | 124 ms | 47.4 ms | 2.61× | 3.52× | - | `ParseIndented/canada / 4` | 35 ms | 5.37 ms | 6.51× | 8.02× | - | `ParseIndented/citm_catalog / 4` | 7.52 ms | 1.81 ms | 4.15× | 3.49× | - | `ParseIndented/jeopardy / 4` | 345 ms | 133 ms | 2.59× | 2.46× | - | `ParseIndented/twitter / 4` | 3.72 ms | 1.13 ms | 3.30× | 2.60× | - | `ParseStreamValues/ndjson` | 7.16 ms | 3.77 ms | 1.90× | 2.06× | - | `ParseStreamValues/numbers` | 1.93 ms | 383 µs | 5.03× | 6.06× | - | `ParseString/canada` | 15.5 ms | 4.63 ms | 3.35× | 6.13× | - | `ParseString/citm_catalog` | 7.56 ms | 1.78 ms | 4.25× | 3.46× | - | `ParseString/floats` | 122 ms | 28.3 ms | 4.30× | 8.68× | - | `ParseString/jeopardy` | 317 ms | 131 ms | 2.42× | 2.32× | - | `ParseString/signed_ints` | 123 ms | 32 ms | 3.84× | 4.29× | - | `ParseString/small_signed_ints` | 62.7 ms | 25 ms | 2.51× | 3.38× | - | `ParseString/twitter` | 3.3 ms | 1.05 ms | 3.14× | 2.60× | - | `ParseString/unsigned_ints` | 121 ms | 32.9 ms | 3.68× | 4.23× | - | `ParseStringOrdered/canada` | 15.4 ms | 4.53 ms | 3.40× | 6.21× | - | `ParseStringOrdered/citm_catalog` | 11.5 ms | 1.68 ms | 6.85× | 6.59× | - | `ParseStringOrdered/jeopardy` | 374 ms | 113 ms | 3.29× | 3.38× | - | `ParseStringOrdered/twitter` | 4.6 ms | 949 µs | 4.85× | 4.93× | - | `Patch/canada` | 10.4 ms | 3.48 ms | 2.98× | 2.46× | - | `Patch/citm_catalog` | 2.75 ms | 1.74 ms | 1.58× | 1.38× | - | `Patch/twitter` | 1.58 ms | 889 µs | 1.78× | 1.45× | - | `SaxParse/canada` | 13.1 ms | 3.27 ms | 4.01× | 8.84× | - | `SaxParse/citm_catalog` | 6.55 ms | 967 µs | 6.77× | 6.85× | - | `SaxParse/twitter` | 2.53 ms | 483 µs | 5.24× | 5.91× | - | `ToCbor/canada` | 1.41 ms | 557 µs | 2.54× | 2.27× | - | `ToCbor/citm_catalog` | 1.05 ms | 259 µs | 4.04× | 5.60× | - | `ToCbor/floats` | 9.05 ms | 1.9 ms | 4.76× | 1.94× | - | `ToCbor/jeopardy` | 73.9 ms | 22.1 ms | 3.35× | 2.87× | - | `ToCbor/signed_ints` | 11.5 ms | 2.83 ms | 4.08× | 1.83× | - | `ToCbor/small_signed_ints` | 10.4 ms | 2.48 ms | 4.19× | 2.78× | - | `ToCbor/twitter` | 659 µs | 143 µs | 4.59× | 6.67× | - | `ToCbor/unsigned_ints` | 8.18 ms | 2.82 ms | 2.90× | 1.48× | - | `ToJsonStrings/copy` | 6.12 ms | 5.65 ms | 1.08× | 1.05× | - | `ToJsonStrings/move` | 6.13 ms | 3.13 ms | 1.96× | 1.78× | - | `Unflatten/canada` | 42.5 ms | 11.1 ms | 3.83× | 4.32× | - | `Unflatten/citm_catalog` | 10.2 ms | 3.62 ms | 2.81× | 3.32× | - | `Unflatten/twitter` | 4.75 ms | 2.21 ms | 2.15× | 2.42× | + | `Accept/canada` | 12.8 ms | 1.34 ms | 9.51× | 13× | + | `Accept/citm_catalog` | 6.48 ms | 474 µs | 13.7× | 8.45× | + | `Accept/floats` | 114 ms | 17.2 ms | 6.63× | 12.2× | + | `Accept/jeopardy` | 218 ms | 27.9 ms | 7.82× | 6.64× | + | `Accept/signed_ints` | 116 ms | 23.4 ms | 4.96× | 4.99× | + | `Accept/small_signed_ints` | 56.5 ms | 13.2 ms | 4.29× | 3.90× | + | `Accept/twitter` | 2.49 ms | 234 µs | 10.6× | 6.89× | + | `Accept/unsigned_ints` | 115 ms | 22.8 ms | 5.03× | 4.95× | + | `BinaryToCbor/1024` | 315 ns | 108 ns | 2.92× | 3.67× | + | `BinaryToCbor/128` | 266 ns | 114 ns | 2.33× | 2.27× | + | `BinaryToCbor/16384` | 950 ns | 418 ns | 2.27× | 3.46× | + | `BinaryToCbor/16` | 246 ns | 49.9 ns | 4.93× | 6.33× | + | `BinaryToCbor/2048` | 340 ns | 127 ns | 2.68× | 3.74× | + | `BinaryToCbor/256` | 280 ns | 91.8 ns | 3.05× | 3.33× | + | `BinaryToCbor/32768` | 1.58 µs | 838 ns | 1.88× | 2.11× | + | `BinaryToCbor/32` | 262 ns | 50.3 ns | 5.21× | 6.24× | + | `BinaryToCbor/4096` | 432 ns | 174 ns | 2.48× | 3.48× | + | `BinaryToCbor/512` | 297 ns | 102 ns | 2.91× | 3.02× | + | `BinaryToCbor/64` | 259 ns | 84.3 ns | 3.08× | 3.78× | + | `BinaryToCbor/8192` | 527 ns | 254 ns | 2.08× | 3.30× | + | `BinaryToCbor/8` | 251 ns | 49.9 ns | 5.02× | 6.18× | + | `Copy/canada` | 3.69 ms | 2.9 ms | 1.27× | 1.17× | + | `Copy/citm_catalog` | 1.65 ms | 1.49 ms | 1.11× | 1.12× | + | `Copy/twitter` | 811 µs | 729 µs | 1.11× | 1.14× | + | `CopyAssign/canada` | 3.74 ms | 2.94 ms | 1.27× | 1.19× | + | `CopyAssign/citm_catalog` | 1.65 ms | 1.54 ms | 1.08× | 1.12× | + | `CopyAssign/twitter` | 818 µs | 752 µs | 1.09× | 1.07× | + | `CopyOnly/canada` | 1.54 ms | 1.52 ms | 1.01× | 1.00× | + | `CopyOnly/citm_catalog` | 755 µs | 795 µs | 0.95× | 0.93× | + | `CopyOnly/twitter` | 407 µs | 410 µs | 0.99× | 1.02× | + | `CopyRing/canada` | 3.75 ms | 2.93 ms | 1.28× | 1.20× | + | `CopyRing/citm_catalog` | 1.75 ms | 1.55 ms | 1.13× | 1.20× | + | `CopyRing/twitter` | 876 µs | 784 µs | 1.12× | 1.15× | + | `DestroyOnly/canada` | 2.16 ms | 1.38 ms | 1.56× | 1.32× | + | `DestroyOnly/citm_catalog` | 896 µs | 682 µs | 1.31× | 1.20× | + | `DestroyOnly/twitter` | 406 µs | 327 µs | 1.24× | 1.15× | + | `Diff/canada` | 39.2 ms | 3.75 ms | 10.4× | 11.2× | + | `Diff/citm_catalog` | 6.92 ms | 1.09 ms | 6.33× | 7.78× | + | `Diff/twitter` | 4.93 ms | 640 µs | 7.71× | 8.79× | + | `Dump/canada / -` | 6.71 ms | 2.31 ms | 2.90× | 3.34× | + | `Dump/canada / 4` | 8.82 ms | 3.03 ms | 2.91× | 2.82× | + | `Dump/citm_catalog / -` | 1.39 ms | 296 µs | 4.71× | 3.93× | + | `Dump/citm_catalog / 4` | 1.95 ms | 422 µs | 4.62× | 4.09× | + | `Dump/floats / -` | 63.5 ms | 23.8 ms | 2.67× | 2.50× | + | `Dump/floats / 4` | 72 ms | 24.7 ms | 2.92× | 2.71× | + | `Dump/jeopardy / -` | 202 ms | 30.6 ms | 6.59× | 3.75× | + | `Dump/jeopardy / 4` | 220 ms | 34.4 ms | 6.42× | 2.61× | + | `Dump/signed_ints / -` | 23.7 ms | 10.7 ms | 2.21× | 1.44× | + | `Dump/signed_ints / 4` | 32 ms | 11.4 ms | 2.82× | 2.01× | + | `Dump/small_signed_ints / -` | 17.9 ms | 7.93 ms | 2.25× | 1.81× | + | `Dump/small_signed_ints / 4` | 25.1 ms | 8.81 ms | 2.84× | 2.21× | + | `Dump/twitter / -` | 1.41 ms | 214 µs | 6.60× | 5.75× | + | `Dump/twitter / 4` | 1.59 ms | 249 µs | 6.38× | 5.18× | + | `Dump/unsigned_ints / -` | 23.6 ms | 8.07 ms | 2.92× | 1.58× | + | `Dump/unsigned_ints / 4` | 31.7 ms | 8.51 ms | 3.73× | 2.30× | + | `Equal/canada` | 463 µs | 336 µs | 1.38× | 1.38× | + | `Equal/citm_catalog` | 264 µs | 261 µs | 1.01× | 0.95× | + | `Equal/twitter` | 139 µs | 129 µs | 1.08× | 1.02× | + | `Flatten/canada` | 28.7 ms | 11.2 ms | 2.56× | 2.68× | + | `Flatten/citm_catalog` | 6.44 ms | 3.01 ms | 2.14× | 2.45× | + | `Flatten/twitter` | 3.53 ms | 2.05 ms | 1.72× | 2.19× | + | `FlattenOrdered/citm_catalog` | 256 ms | 1.41 ms | 182× | 185× | + | `FlattenOrdered/twitter` | 50 ms | 864 µs | 57.9× | 46.1× | + | `FromBinaryBuffer/bjdata / canada` | 8.15 ms | 4.17 ms | 1.95× | 2.02× | + | `FromBinaryBuffer/bjdata / twitter` | 3.18 ms | 893 µs | 3.56× | 2.87× | + | `FromBinaryBuffer/bjdata_optimized / canada` | 8.74 ms | 2.42 ms | 3.61× | 3.51× | + | `FromBinaryBuffer/bjdata_optimized / twitter` | 3.16 ms | 885 µs | 3.57× | 2.86× | + | `FromBinaryBuffer/bson / canada` | 9.33 ms | 4.27 ms | 2.18× | 2.20× | + | `FromBinaryBuffer/bson / citm_catalog` | 3.92 ms | 1.61 ms | 2.43× | 2.59× | + | `FromBinaryBuffer/bson / twitter` | 3.18 ms | 910 µs | 3.49× | 3.08× | + | `FromBinaryBuffer/cbor / canada` | 8.39 ms | 2.08 ms | 4.03× | 3.86× | + | `FromBinaryBuffer/cbor / citm_catalog` | 3.71 ms | 1.32 ms | 2.81× | 2.81× | + | `FromBinaryBuffer/cbor / floats` | 29.2 ms | 5.48 ms | 5.32× | 3.64× | + | `FromBinaryBuffer/cbor / jeopardy` | 353 ms | 101 ms | 3.50× | 3.43× | + | `FromBinaryBuffer/cbor / signed_ints` | 36 ms | 9.78 ms | 3.68× | 2.37× | + | `FromBinaryBuffer/cbor / twitter` | 3.09 ms | 879 µs | 3.52× | 2.83× | + | `FromBinaryBuffer/msgpack / canada` | 8.26 ms | 2.1 ms | 3.94× | 3.92× | + | `FromBinaryBuffer/msgpack / citm_catalog` | 3.72 ms | 1.29 ms | 2.89× | 2.94× | + | `FromBinaryBuffer/msgpack / jeopardy` | 357 ms | 96.9 ms | 3.68× | 3.51× | + | `FromBinaryBuffer/msgpack / twitter` | 3.06 ms | 850 µs | 3.60× | 3.02× | + | `FromBinaryBuffer/ubjson / canada` | 8.13 ms | 4.14 ms | 1.96× | 2.13× | + | `FromBinaryBuffer/ubjson / citm_catalog` | 3.82 ms | 1.66 ms | 2.31× | 2.44× | + | `FromBinaryBuffer/ubjson / jeopardy` | 366 ms | 101 ms | 3.61× | 3.40× | + | `FromBinaryBuffer/ubjson / twitter` | 3.15 ms | 896 µs | 3.52× | 2.90× | + | `FromBinaryBuffer/ubjson_optimized / canada` | 8.51 ms | 2.39 ms | 3.56× | 3.67× | + | `FromBinaryBuffer/ubjson_optimized / twitter` | 3.12 ms | 882 µs | 3.54× | 2.88× | + | `FromBinaryFile/bjdata / twitter` | 10.4 ms | 1.45 ms | 7.18× | 5.89× | + | `FromBinaryFile/bson / twitter` | 10.3 ms | 1.24 ms | 8.33× | 6.21× | + | `FromBinaryFile/cbor / canada` | 14.3 ms | 2.41 ms | 5.96× | 3.68× | + | `FromBinaryFile/cbor / twitter` | 9.92 ms | 1.07 ms | 9.23× | 6.46× | + | `FromBinaryFile/ubjson / canada` | 13.6 ms | 6.23 ms | 2.17× | 2.50× | + | `FromBinaryFile/ubjson / twitter` | 10.5 ms | 1.46 ms | 7.20× | 5.90× | + | `FromBinaryShape/containers / bjdata` | 14.3 ms | 7.24 ms | 1.98× | 2.05× | + | `FromBinaryShape/containers / bson` | 17.4 ms | 7.98 ms | 2.18× | 2.20× | + | `FromBinaryShape/containers / cbor` | 13.9 ms | 3.93 ms | 3.54× | 3.49× | + | `FromBinaryShape/containers / msgpack` | 13.8 ms | 3.88 ms | 3.55× | 3.52× | + | `FromBinaryShape/containers / ubjson_optimized` | 15 ms | 4.49 ms | 3.34× | 3.34× | + | `FromBinaryShape/containers / ubjson` | 14.4 ms | 7.27 ms | 1.98× | 2.03× | + | `FromBinaryShape/nested / bjdata` | 96.4 µs | 38.2 µs | 2.52× | 2.50× | + | `FromBinaryShape/nested / bson` | 103 µs | 42.5 µs | 2.41× | 2.42× | + | `FromBinaryShape/nested / cbor` | 93.8 µs | 35.4 µs | 2.65× | 2.57× | + | `FromBinaryShape/nested / msgpack` | 92 µs | 34.9 µs | 2.64× | 2.60× | + | `FromBinaryShape/nested / ubjson` | 96.5 µs | 37.9 µs | 2.54× | 2.50× | + | `FromBinaryShape/scalars / bjdata` | 24.8 ms | 11.5 ms | 2.16× | 2.22× | + | `FromBinaryShape/scalars / cbor` | 25.7 ms | 5.69 ms | 4.51× | 3.56× | + | `FromBinaryShape/scalars / msgpack` | 24.4 ms | 5.57 ms | 4.39× | 3.69× | + | `FromBinaryShape/scalars / ubjson` | 24.9 ms | 11.6 ms | 2.15× | 2.03× | + | `FromCborChunkedString/10000 chunks` | 90.9 µs | 61.5 µs | 1.48× | 1.09× | + | `FromMsgpack/canada` | 14.4 ms | 2.4 ms | 5.97× | 3.63× | + | `FromMsgpack/citm_catalog` | 9.04 ms | 1.67 ms | 5.42× | 4.60× | + | `FromMsgpack/floats` | 59.8 ms | 28.2 ms | 2.12× | 2.89× | + | `FromMsgpack/jeopardy` | 1,140 ms | 112 ms | 10.2× | 6.80× | + | `FromMsgpack/signed_ints` | 63.1 ms | 32.7 ms | 1.93× | 2.44× | + | `FromMsgpack/small_signed_ints` | 63.4 ms | 35.3 ms | 1.80× | 2.33× | + | `FromMsgpack/twitter` | 9.99 ms | 1.01 ms | 9.87× | 6.76× | + | `FromMsgpack/unsigned_ints` | 56.1 ms | 28.2 ms | 1.99× | 2.77× | + | `GetArray>` | 2.24 µs | 641 ns | 3.50× | 5.38× | + | `GetArray>` | 8.16 µs | 1.17 µs | 6.96× | 4.75× | + | `GetArray>` | 58.8 µs | 41.6 µs | 1.42× | 1.30× | + | `GetArray>` | 6.73 µs | 671 ns | 10.0× | 4.10× | + | `GetMap/citm_catalog` | 3.44 ms | 2.44 ms | 1.41× | 1.48× | + | `GetVectorDouble/floats` | 6.7 ms | 651 µs | 10.3× | 2.98× | + | `GetVectorInt/signed_ints` | 8.07 ms | 3.41 ms | 2.37× | 2.02× | + | `Iterate/canada` | 874 µs | 445 µs | 1.96× | 2.02× | + | `Iterate/citm_catalog` | 302 µs | 158 µs | 1.91× | 1.53× | + | `Iterate/twitter` | 87.3 µs | 58.9 µs | 1.48× | 1.20× | + | `JsonPointerAt/citm_catalog` | 1.85 ms | 1.16 ms | 1.60× | 1.47× | + | `JsonPointerAt/twitter` | 791 µs | 600 µs | 1.32× | 1.14× | + | `JsonPointerContains/citm_catalog` | 2.74 ms | 1.25 ms | 2.18× | 2.51× | + | `JsonPointerContains/twitter` | 1.32 ms | 620 µs | 2.13× | 2.16× | + | `JsonPointerParse/citm_catalog` | 5.73 ms | 2.21 ms | 2.59× | 3.74× | + | `JsonPointerParse/twitter` | 2.47 ms | 1.01 ms | 2.45× | 3.18× | + | `JsonPointerToString/citm_catalog` | 6.65 ms | 1.9 ms | 3.51× | 4.61× | + | `JsonPointerToString/twitter` | 2.14 ms | 812 µs | 2.63× | 2.66× | + | `ParseFILE/canada` | 52.9 ms | 6.02 ms | 8.79× | 5.46× | + | `ParseFILE/citm_catalog` | 35 ms | 2.34 ms | 14.9× | 5.73× | + | `ParseFILE/twitter` | 13.8 ms | 1.35 ms | 10.2× | 4.24× | + | `ParseFile/canada` | 17.7 ms | 6.23 ms | 2.84× | 4.67× | + | `ParseFile/citm_catalog` | 7.86 ms | 2.47 ms | 3.18× | 2.98× | + | `ParseFile/floats` | 129 ms | 48.4 ms | 2.67× | 5.68× | + | `ParseFile/jeopardy` | 330 ms | 156 ms | 2.12× | 2.23× | + | `ParseFile/signed_ints` | 128 ms | 46.6 ms | 2.74× | 3.41× | + | `ParseFile/small_signed_ints` | 64.5 ms | 33.4 ms | 1.93× | 2.57× | + | `ParseFile/twitter` | 3.4 ms | 1.38 ms | 2.46× | 2.33× | + | `ParseFile/unsigned_ints` | 123 ms | 47.3 ms | 2.61× | 3.52× | + | `ParseIndented/canada / 4` | 34.2 ms | 4.61 ms | 7.41× | 8.02× | + | `ParseIndented/citm_catalog / 4` | 7.45 ms | 1.46 ms | 5.11× | 3.49× | + | `ParseIndented/jeopardy / 4` | 339 ms | 114 ms | 2.96× | 2.46× | + | `ParseIndented/twitter / 4` | 3.61 ms | 975 µs | 3.70× | 2.60× | + | `ParseStreamValues/ndjson` | 7.08 ms | 3.72 ms | 1.91× | 2.06× | + | `ParseStreamValues/numbers` | 1.93 ms | 388 µs | 4.97× | 6.06× | + | `ParseString/canada` | 15.2 ms | 3.73 ms | 4.08× | 6.13× | + | `ParseString/citm_catalog` | 7.4 ms | 1.45 ms | 5.11× | 3.46× | + | `ParseString/floats` | 120 ms | 25 ms | 4.80× | 8.68× | + | `ParseString/jeopardy` | 303 ms | 113 ms | 2.68× | 2.32× | + | `ParseString/signed_ints` | 121 ms | 28.7 ms | 4.22× | 4.29× | + | `ParseString/small_signed_ints` | 60.8 ms | 17.7 ms | 3.43× | 3.38× | + | `ParseString/twitter` | 3.21 ms | 921 µs | 3.49× | 2.60× | + | `ParseString/unsigned_ints` | 120 ms | 28.5 ms | 4.21× | 4.23× | + | `ParseStringOrdered/canada` | 15.3 ms | 3.78 ms | 4.04× | 6.21× | + | `ParseStringOrdered/citm_catalog` | 11 ms | 1.34 ms | 8.18× | 6.59× | + | `ParseStringOrdered/jeopardy` | 360 ms | 98.1 ms | 3.67× | 3.38× | + | `ParseStringOrdered/twitter` | 4.41 ms | 804 µs | 5.49× | 4.93× | + | `Patch/canada` | 10.1 ms | 3.41 ms | 2.97× | 2.46× | + | `Patch/citm_catalog` | 2.54 ms | 1.65 ms | 1.54× | 1.38× | + | `Patch/twitter` | 1.49 ms | 870 µs | 1.72× | 1.45× | + | `SaxParse/canada` | 12.9 ms | 2.5 ms | 5.15× | 8.84× | + | `SaxParse/citm_catalog` | 6.44 ms | 655 µs | 9.82× | 6.85× | + | `SaxParse/twitter` | 2.49 ms | 334 µs | 7.45× | 5.91× | + | `ToCbor/canada` | 1.39 ms | 555 µs | 2.51× | 2.27× | + | `ToCbor/citm_catalog` | 1.03 ms | 260 µs | 3.97× | 5.60× | + | `ToCbor/floats` | 8.94 ms | 1.85 ms | 4.84× | 1.94× | + | `ToCbor/jeopardy` | 71.5 ms | 21.1 ms | 3.39× | 2.87× | + | `ToCbor/signed_ints` | 11.4 ms | 2.74 ms | 4.15× | 1.83× | + | `ToCbor/small_signed_ints` | 10.3 ms | 2.38 ms | 4.33× | 2.78× | + | `ToCbor/twitter` | 637 µs | 144 µs | 4.41× | 6.67× | + | `ToCbor/unsigned_ints` | 8.05 ms | 2.74 ms | 2.94× | 1.48× | + | `ToJsonStrings/copy` | 5.86 ms | 5.6 ms | 1.05× | 1.05× | + | `ToJsonStrings/move` | 5.92 ms | 3.05 ms | 1.94× | 1.78× | + | `Unflatten/canada` | 41.8 ms | 10.8 ms | 3.86× | 4.32× | + | `Unflatten/citm_catalog` | 9.8 ms | 3.54 ms | 2.77× | 3.32× | + | `Unflatten/twitter` | 4.57 ms | 2.17 ms | 2.11× | 2.42× | ### C. The timeline @@ -1866,18 +1969,21 @@ six code layouts: they were equal within 0.2%. | | 4 | [#5809][5809] | positions derived only on error | −12% | | | 2 | [#5810][5810] | indentation skipped eight bytes at a time | −12% | | | 4 | [#5882][5882] | arrays allocated once, at their final size | −6% | +| | 1 | [#6031][6031] | one loop for parser and lexer on contiguous input | −12% | | `parse()` `canada.json` | 4 | [#5234][5234] | the token buffer is filled only for error messages | −10% | | | 1 | [#5283][5283] | fast paths for contiguous input | −24% | | | 3 | [#5617][5617] | Eisel-Lemire instead of `strtod` | −9% | | | 3 | [#5738][5738] | own float parser, string scan, `\u` table | −14% | | | 3 | [#5851][5851] | digits accumulated while validating, eight at a time | −12% | | | 4 | [#5882][5882] | arrays allocated once, at their final size | −15% | +| | 1 | [#6031][6031] | one loop for parser and lexer on contiguous input | −16% | | `accept()` `twitter.json` | 4 | [#5234][5234] | the token buffer is filled only for error messages | −18% | | | 1 | [#5283][5283] | fast paths for contiguous input | −53% | | | 4 | [#5592][5592] | check for the expected `:` or `,` before the lexer's token switch | −11% | | | 4 | [#5809][5809] | positions derived only on error | −23% | | | 2 | [#5810][5810] | indentation skipped eight bytes at a time | −9% | | | 2 | [#5853][5853] | strings scanned 16 bytes at a time with SSE2 or NEON | −11% | +| | 1 | [#6031][6031] | one loop for parser and lexer on contiguous input | −51% | | `parse()` `twitter.json`, `std::ifstream` | 1 | [#5828][5828] | scanning the stream's get area in bulk | −48% | | | 1 | [#5884][5884] | inline get-area path, binary reads | −5% | | `dump()` `twitter.json` | 6 | [#5285][5285] | a write buffer and bulk copies of strings | −70% | @@ -1890,12 +1996,14 @@ six code layouts: they were equal within 0.2%. | | 4 | [#5501][5501] | the result moved instead of copied | −33% | | | U | [#5185][5185], [#5531][5531] | UTF-8 validation of every text string | +37% | | | U | [#5746][5746] | the validation made an option ([#5741][5741]) | −27% | +| | 4 | [#6028][6028] | binary strings appended without filling them with zeros first | −6% | | `to_cbor()` `twitter.json` | 4 | [#5328][5328] | no temporary `basic_json` per object key (by [@alexprabhat99](https://github.com/alexprabhat99)) | −55% | | | 6 | [#5824][5824] | a cursor instead of `vector::insert()` | −38% | | | 6 | [#5885][5885] | runs of numbers encoded in a loop | −32% |

The labeled steps of the timeline: the change in time at the first commit of each -pull request, against the commit before it. [#5592][5592] is by [@mvanslobbe](https://github.com/mvanslobbe).

+pull request, against the commit before it; for [#6031][6031], which was not merged yet, the step to 3.13.0. +[#5592][5592] is by [@mvanslobbe](https://github.com/mvanslobbe).

### D. Algorithmic fixes @@ -1931,8 +2039,8 @@ every round, in a different order each round (a shuffle with a fixed seed), each time is the best of 2 × 30 rounds (2 × 6 for `jeopardy.json`). Boost.JSON uses a monotonic resource and precise number parsing, RapidJSON `kParseFullPrecisionFlag` (except in *validate*, which reads no number), serde_json `float_roundtrip`: every number a library converts has to be exact. That rule, like the others here, is our choice. -Between the two runs, a library's time relative to `json_document`'s moved by 0.8% at the median and 2.5% at the 95th -percentile on the Mac, and by 2.5–3% and 9–10% on x86-64. +Between the two runs, a C++ library's time relative to `json_document`'s moved by 0.6% at the median and 2.4% at the +95th percentile on the Mac, and by 1.7–2.0% and 7–8% on x86-64 (the Rust programs were not run again). **Validation levels.** A way validates fully if it rejects all four broken inputs (cut short by one byte, a stray comma, an invalid UTF-8 byte in a string, garbage after the value); "U" accepts the invalid UTF-8 byte; "P" accepts one of the @@ -1988,96 +2096,96 @@ cell for the times and the way.

| library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | accept | 170 | 313 | 886 | 20,873 | 0.9 | - | yyjson | insitu (copy untimed) | 172 | 451 | 1,457 | 30,240 | 0.9 | - | simdjson | DOM | 212 | 452 | 1,888 | 28,843 | 1.1 | + | **nlohmann/json `json_document`** | accept | 172 | 313 | 905 | 20,926 | 0.9 | + | yyjson | insitu (copy), read | 183 | 476 | 1,487 | 30,922 | 0.9 | + | nlohmann/json `json` | accept | 234 | 456 | 1,253 | 27,563 | 1.1 | + | simdjson | DOM | 215 | 460 | 1,890 | 28,890 | 1.1 | | sonic-rs (Rust) | Value | 326 | 681 | 1,939 | 31,450 | 1.4 | - | Glaze | validate_json | 331 | 862 | 1,326 | 45,192 | 1.4 | + | Glaze | validate_json | 333 | 854 | 1,302 | 46,251 | 1.4 | | simd-json (Rust) | tape (copy) | 289 | 698 | 2,278 | 38,874 | 1.7 | - | sonic-cpp | Document [U] | – (U 382) | – (U 985) | – (U 2,578) | – (U 41,617) | – (U 1.6) | + | sonic-cpp | Document [U] | – (U 382) | – (U 985) | – (U 2,579) | – (U 40,996) | – (U 1.7) | | serde_json (Rust) | IgnoredAny [U], from_utf8 + IgnoredAny | 452 (U 354) | 1,103 (U 1,047) | 1,556 (U 1,451) | 46,517 (U 44,984) | 2.0 (U 1.7) | - | Boost.JSON | SAX, SAX (numbers: none) | 535 | 994 | 1,467 | 53,939 | 2.3 | - | nlohmann/json `json` | accept | 451 | 888 | 2,405 | 55,286 | 2.4 | - | RapidJSON | SAX (default precision), SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,307 (U 686) | 1,397 (U 1,032) | 1,982 | 134,679 (U 63,589) | 6.0 (U 2.6) | + | Boost.JSON | SAX, SAX (numbers: none) | 540 | 990 | 1,449 | 54,480 | 2.4 | + | RapidJSON | SAX (default precision), SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,318 (U 706) | 1,391 (U 1,033) | 1,971 | 133,695 (U 64,732) | 6.1 (U 2.7) | **sum** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse | 224 | 485 | 1,816 | 28,987 | 1.2 | - | yyjson | insitu (copy untimed) | 219 | 551 | 1,906 | 37,512 | 1.1 | - | simdjson | DOM, On-Demand | 249 | 571 | 2,374 | 35,111 | 1.3 | + | **nlohmann/json `json_document`** | parse | 219 | 493 | 1,803 | 28,898 | 1.2 | + | yyjson | insitu (copy), read | 231 | 571 | 1,875 | 37,817 | 1.1 | + | simdjson | DOM, On-Demand | 249 | 572 | 2,398 | 34,994 | 1.3 | + | nlohmann/json `json` | sax | 303 | 602 | 2,208 | 44,688 | 1.6 | | sonic-rs (Rust) | visitor | 364 | 778 | 2,703 | 41,361 | 1.7 | | simd-json (Rust) | visitor (copy) | 354 | 866 | 2,717 | 47,518 | 2.0 | - | sonic-cpp | Document [U] | – (U 428) | – (U 1,087) | – (U 2,993) | – (U 48,688) | – (U 1.9) | - | nlohmann/json `json` | sax | 465 | 925 | 3,072 | 64,089 | 2.4 | - | Boost.JSON | SAX | 535 | 1,010 | 3,067 | 53,704 | 2.3 | + | sonic-cpp | Document [U] | – (U 428) | – (U 1,098) | – (U 2,975) | – (U 48,487) | – (U 1.9) | + | Boost.JSON | SAX | 538 | 1,028 | 3,084 | 54,765 | 2.3 | | serde_json (Rust) | visitor | 652 | 1,242 | 4,772 | 66,568 | 2.5 | - | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 968 | 2,049 | 6,331 | 99,763 | 4.9 (P 3.5) | - | RapidJSON | SAX, SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy untimed) (no encoding check) [U] | 1,329 (U 735) | 1,455 (U 1,136) | 6,453 | 136,103 (U 69,604) | 6.1 (U 2.9) | + | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 974 | 2,057 | 6,338 | 100,272 | 4.9 (P 3.5) | + | RapidJSON | SAX, SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy) (no encoding check) [U] | 1,332 (U 738) | 1,472 (U 1,157) | 6,448 | 136,330 (U 71,646) | 6.2 (U 2.9) | **select** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse | 184 | 363 | 956 | 24,991 | 1.0 | - | yyjson | insitu (copy untimed) | 178 | 456 | 1,461 | 32,514 | 1.0 | - | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P], On-Demand structs [P] | 196 (P 127) | 450 (P 354) | 1,886 (P 566) | 30,504 (P 19,562) | 1.2 (P 0.8) | - | Glaze | structs (validate_skipped), structs [P] | 311 (P 241) | 854 (P 255) | 1,316 (P 313) | 46,924 (P 37,578) | 1.4 (P 1.2) | + | **nlohmann/json `json_document`** | parse | 183 | 363 | 944 | 24,801 | 1.0 | + | yyjson | insitu (copy), read, read (raw numbers) | 191 | 480 | 1,489 | 32,777 | 1.1 | + | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P], On-Demand structs [P] | 192 (P 128) | 454 (P 356) | 1,893 (P 571) | 30,714 (P 19,633) | 1.2 (P 0.8) | + | Glaze | structs (validate_skipped), structs [P] | 314 (P 238) | 852 (P 253) | 1,303 (P 310) | 47,692 (P 36,013) | 1.4 (P 1.2) | | sonic-rs (Rust) | Value | 333 | 691 | 1,936 | 40,660 | 1.7 | - | sonic-cpp | Document [U] | – (U 385) | – (U 990) | – (U 2,586) | – (U 45,858) | – (U 1.7) | + | sonic-cpp | Document [U] | – (U 385) | – (U 993) | – (U 2,611) | – (U 46,356) | – (U 1.7) | | simd-json (Rust) | structs (copy) | 364 | 914 | 2,657 | 57,697 | 2.1 | | serde_json (Rust) | from_utf8 + structs, structs [U] | 480 (U 410) | 1,125 (U 1,084) | 1,560 (U 1,455) | 62,378 | 2.3 (U 1.9) | - | Boost.JSON | parse, parse_into structs | 617 | 1,205 | 3,650 | 67,255 | 2.7 | - | RapidJSON | Document (string stream), insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,304 (U 679) | 1,554 (U 1,126) | 6,776 | 141,509 (U 65,625) | 6.5 (U 2.6) | - | nlohmann/json `json` | parse, structs (from_json) | 1,360 | 2,416 | 6,047 | 179,533 | 7.6 | + | Boost.JSON | parse, parse_into structs | 623 | 1,208 | 3,638 | 67,923 | 2.7 | + | nlohmann/json `json` | parse | 1,208 | 2,128 | 5,088 | 163,712 | 6.6 | + | RapidJSON | Document (string stream), Document (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,314 (U 701) | 1,578 (U 1,166) | 6,814 | 144,649 (U 67,617) | 6.6 (U 2.8) | **edit** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 291 | 560 | 2,765 (N 1,484) | 58,057 | 1.9 | - | yyjson | insitu (copy untimed) + mut copy | 427 | 882 | 3,642 | 84,239 | 2.4 | - | sonic-cpp | Document [U] | – (U 486) | – (U 1,224) | – (U 5,638) | – (U 62,688) | – (U 2.6) | + | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 288 | 559 | 2,737 (N 1,504) | 58,019 | 1.9 | + | yyjson | insitu (copy) + mut copy, mut copy | 440 | 904 | 3,692 | 84,466 | 2.4 | + | sonic-cpp | Document [U] | – (U 488) | – (U 1,218) | – (U 5,662) | – (U 63,697) | – (U 2.6) | | sonic-rs (Rust) | Value | 634 | 1,257 | 4,396 | 140,936 | 3.8 | | simd-json (Rust) | borrowed (copy) | 948 | 2,102 | 7,654 | 110,693 | 5.4 | - | Boost.JSON | parse | 1,368 | 1,992 | 6,573 | 155,237 | 6.6 | - | nlohmann/json `json` | ordered_json, parse | 1,273 | 2,344 | 8,334 | 203,232 | 7.1 | - | Glaze | generic (strict), generic [P] | 1,539 | 3,235 | 11,083 | 178,333 | 8.3 | - | RapidJSON | Document, Document (string stream), insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,922 (U 1,344) | 2,388 (U 1,964) | 13,836 | 221,270 (U 144,741) | 10.3 (U 6.5) | + | nlohmann/json `json` | ordered_json, parse | 1,115 | 2,065 | 7,348 | 162,216 | 6.3 | + | Boost.JSON | parse | 1,355 | 1,997 | 6,522 | 157,849 | 6.6 | + | Glaze | generic (strict), generic [P] | 1,527 | 3,216 | 11,033 | 183,648 | 8.4 | + | RapidJSON | Document, Document (string stream), insitu (copy), insitu (copy) (no encoding check) [U] | 1,924 (U 1,356) | 2,393 (U 1,992) | 13,711 | 224,328 (U 147,902) | 10.5 (U 6.5) | | serde_json (Rust) | Value | 2,009 | 3,316 | 9,666 | 251,931 | 9.6 | **minify** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 259 | 493 | 2,582 (N 1,360) | 37,882 | 1.4 | - | yyjson | insitu (copy untimed) + write, read (raw numbers) + write [N] | 279 | 625 | 3,196 (N 2,550) | 50,821 | 1.6 | - | simdjson | DOM + to_string, minify [P] | 423 (P 62.3) | 848 (P 171) | 5,120 (P 227) | 61,059 (P 5,762) | 2.4 (P 0.3) | + | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 261 (N 252) | 496 | 2,570 (N 1,343) | 37,624 | 1.5 | + | yyjson | insitu (copy) + write, read (raw numbers) + write [N], read + write | 298 | 642 | 3,222 (N 2,523) | 51,001 | 1.6 | + | simdjson | DOM + to_string, minify [P] | 425 (P 62.5) | 850 (P 168) | 5,094 (P 227) | 61,202 (P 5,756) | 2.3 (P 0.3) | | sonic-rs (Rust) | Value | 535 | 1,134 | 4,377 | 64,832 | 3.0 | - | sonic-cpp | Document + Serialize [U] | – (U 500) | – (U 1,220) | – (U 5,676) | – (U 61,236) | – (U 2.5) | + | sonic-cpp | Document + Serialize [U] | – (U 504) | – (U 1,217) | – (U 5,634) | – (U 61,988) | – (U 2.5) | | simd-json (Rust) | borrowed (copy) | 952 | 2,111 | 7,658 | 108,130 | 5.5 | - | Boost.JSON | parse + serialize | 1,393 | 1,986 | 6,542 | 154,677 | 6.7 | - | RapidJSON | Document + Writer, SAX to Writer, SAX to Writer (raw numbers) (no encoding check) [U N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 1,525 (U 1,058) | 1,808 (U 1,485) | 14,460 (U N 10,908) | 174,558 (U 123,119) | 8.1 (U 5.0) | - | nlohmann/json `json` | parse + dump | 1,600 | 2,706 | 8,389 | 197,745 | 8.8 | - | Glaze | generic (strict), minify_json [P] | 1,505 (P 281) | 3,225 (P 729) | 11,092 (P 1,722) | 168,855 (P 39,976) | 8.1 (P 1.3) | + | Boost.JSON | parse + serialize | 1,407 | 2,003 | 6,555 | 154,865 | 6.8 | + | nlohmann/json `json` | parse + dump | 1,446 | 2,406 | 7,328 | 182,132 | 7.7 | + | RapidJSON | Document + Writer, SAX to Writer, SAX to Writer (raw numbers) [N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 1,523 (U 1,044) | 1,803 (U 1,499) | 14,378 (N 11,568) | 174,958 (U 123,908) | 8.0 (U 4.9) | + | Glaze | generic (strict), minify_json [P] | 1,512 (P 284) | 3,245 (P 747) | 11,112 (P 1,746) | 172,173 (P 40,439) | 8.1 (P 1.4) | | serde_json (Rust) | Value | 2,004 | 3,290 | 9,792 | 227,369 | 9.5 | **write** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 74.3 | 134 | 1,621 (N 401) | 14,757 | 0.5 | - | yyjson | write | 103 | 169 | 1,731 | 20,087 | 0.7 | - | sonic-cpp | Serialize | 108 | 230 | 3,093 | 19,651 | 0.8 | - | nlohmann/json `json` | dump | 223 | 287 | 2,276 | 31,825 | 1.2 | - | simdjson | to_string | 199 | 385 | 3,241 | 32,208 | 1.3 | - | Glaze | generic, generic (strict) | 216 | 469 | 1,720 | 33,934 | 1.3 | + | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 76.2 (N 72.8) | 139 | 1,625 (N 398) | 14,861 | 0.5 | + | yyjson | write | 101 | 167 | 1,719 | 19,937 | 0.7 | + | sonic-cpp | Serialize | 114 | 240 | 3,109 | 20,327 | 0.9 | + | nlohmann/json `json` | dump | 216 | 287 | 2,274 | 30,928 | 1.2 | + | Glaze | generic, generic (strict) | 212 | 476 | 1,702 | 34,032 | 1.3 | + | simdjson | to_string | 201 | 416 | 3,186 | 32,185 | 1.3 | | sonic-rs (Rust) | Value | 212 | 446 | 2,419 | 33,366 | 1.5 | | serde_json (Rust) | Value | 322 | 490 | 2,286 | 49,967 | 2.0 | | simd-json (Rust) | borrowed | 355 | 478 | 2,728 | 47,412 | 1.8 | - | Boost.JSON | serialize | 507 | 508 | 2,923 | 62,583 | 2.9 | - | RapidJSON | Writer | 603 | 830 | 6,995 | 81,150 | 3.9 | + | Boost.JSON | serialize | 499 | 511 | 2,873 | 63,201 | 2.9 | + | RapidJSON | Writer | 596 | 836 | 6,928 | 80,160 | 4.0 | ??? info "Times in µs on x86-64 with GCC 16.2" @@ -2085,96 +2193,96 @@ cell for the times and the way.

| library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | accept | 258 | 513 | 934 | 34,514 | 1.2 | - | yyjson | insitu (copy untimed), read (raw numbers) | 352 | 837 | 2,199 | 93,043 | 1.5 | + | **nlohmann/json `json_document`** | accept | 254 | 515 | 892 | 33,006 | 1.2 | + | nlohmann/json `json` | accept | 370 | 883 | 2,441 | 39,142 | 1.3 | | sonic-rs (Rust) | IgnoredAny | 501 | 970 | 2,249 | 54,369 | 1.8 | - | Boost.JSON | SAX, SAX (numbers: none) | 690 | 917 | 1,676 | 62,781 | 2.9 | - | simdjson | DOM | 301 | 695 | 3,337 | 120,982 | 1.7 | - | sonic-cpp | Document [U] | – (U 403) | – (U 932) | – (U 3,349) | – (U 98,511) | – (U 1.7) | + | Boost.JSON | SAX, SAX (numbers: none) | 683 | 913 | 1,642 | 57,932 | 2.9 | + | yyjson | insitu (copy), read, read (raw numbers) | 393 | 930 | 2,140 | 122,230 | 1.6 | + | simdjson | DOM | 297 | 687 | 3,165 | 111,631 | 1.7 | + | sonic-cpp | Document [U] | – (U 404) | – (U 923) | – (U 3,216) | – (U 93,142) | – (U 1.7) | | serde_json (Rust) | IgnoredAny [U], from_utf8 + IgnoredAny | 624 (U 484) | 1,440 (U 1,370) | 2,406 (U 2,314) | 64,720 (U 58,247) | 2.4 (U 1.9) | - | Glaze | validate_json | 712 | 1,983 | 2,625 | 76,759 | 2.5 | - | nlohmann/json `json` | accept | 683 | 1,419 | 4,559 | 74,331 | 3.1 | + | Glaze | validate_json | 705 | 1,971 | 2,532 | 74,805 | 2.5 | | simd-json (Rust) | tape (copy) | 567 | 1,430 | 4,359 | 207,551 | 2.9 | - | RapidJSON | SAX (default precision) (no encoding check) [U], SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,166 (U 1,012) | 1,553 (U 1,434) | 3,875 | 114,704 (U 102,635) | 4.8 (U 3.2) | + | RapidJSON | SAX (default precision) (no encoding check) [U], SAX (string stream) (no encoding check) [U], SAX (string stream, default precision), insitu (copy), insitu (copy) (no encoding check) [U] | 1,215 (U 1,052) | 1,550 (U 1,427) | 3,625 | 125,139 (U 104,342) | 4.9 (U 3.2) | **sum** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | simdjson | On-Demand | 348 | 805 | 3,452 | 92,769 | 1.9 | - | **nlohmann/json `json_document`** | parse | 398 | 972 | 3,501 | 89,756 | 2.0 | - | yyjson | insitu (copy untimed) | 415 | 986 | 3,818 | 97,586 | 1.9 | + | simdjson | On-Demand | 344 | 809 | 3,405 | 90,960 | 1.9 | + | **nlohmann/json `json_document`** | parse | 384 | 1,066 | 3,526 | 88,527 | 1.9 | + | nlohmann/json `json` | sax | 533 | 1,113 | 4,134 | 66,403 | 2.3 | | sonic-rs (Rust) | visitor | 501 | 1,123 | 4,397 | 59,583 | 2.5 | - | sonic-cpp | Document [U] | – (U 456) | – (U 1,115) | – (U 3,980) | – (U 105,081) | – (U 2.0) | - | Boost.JSON | SAX | 699 | 957 | 5,835 | 59,656 | 3.0 | - | nlohmann/json `json` | sax | 814 | 1,666 | 5,690 | 97,414 | 4.0 | + | sonic-cpp | Document [U] | – (U 458) | – (U 1,120) | – (U 3,887) | – (U 107,494) | – (U 2.0) | + | yyjson | insitu (copy), read | 445 | 1,093 | 3,948 | 133,860 | 1.9 | + | Boost.JSON | SAX | 690 | 956 | 5,762 | 62,051 | 2.9 | | simd-json (Rust) | visitor (copy) | 681 | 1,650 | 5,083 | 210,185 | 3.5 | - | RapidJSON | SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,221 (U 1,063) | 1,717 (U 1,635) | 9,435 | 112,158 (U 105,845) | 5.1 (U 3.5) | | serde_json (Rust) | visitor | 1,311 | 2,288 | 7,127 | 129,497 | 4.6 | - | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 2,483 | 4,413 | 10,532 | 231,505 | 8.5 (P 6.4) | + | RapidJSON | SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,256 (U 1,099) | 1,713 (U 1,635) | 9,547 (U 9,105) | 127,564 (U 113,500) | 5.1 (U 3.4) | + | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 2,317 | 4,068 | 10,333 | 237,723 | 8.3 (P 6.3) | **select** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse, structs (from_json) | 333 | 828 | 1,368 | 89,876 | 1.7 | - | yyjson | insitu (copy untimed), read (raw numbers) | 366 | 840 | 2,204 | 96,172 | 1.7 | + | **nlohmann/json `json_document`** | parse | 325 | 863 | 1,302 | 87,940 | 1.6 | + | yyjson | insitu (copy), read, read (raw numbers) | 402 | 954 | 2,127 | 140,491 | 1.7 | | sonic-rs (Rust) | structs | 504 | 1,033 | 2,328 | 90,486 | 2.0 | - | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P] | 313 (P 180) | 699 (P 496) | 3,325 (P 690) | 122,556 (P 48,272) | 1.9 (P 1.1) | - | sonic-cpp | Document [U] | – (U 407) | – (U 948) | – (U 3,464) | – (U 110,885) | – (U 1.8) | + | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P] | 311 (P 178) | 698 (P 494) | 3,141 (P 674) | 130,228 (P 48,492) | 1.9 (P 1.1) | + | sonic-cpp | Document [U] | – (U 408) | – (U 942) | – (U 3,166) | – (U 110,763) | – (U 1.8) | + | Glaze | structs (validate_skipped), structs [P] | 608 (P 345) | 1,978 (P 401) | 2,521 (P 415) | 90,807 (P 67,456) | 2.1 (P 1.5) | | serde_json (Rust) | from_utf8 + structs, structs [U] | 701 | 1,532 | 2,529 (U 2,402) | 107,316 | 3.0 | - | Glaze | structs (validate_skipped), structs [P] | 606 (P 344) | 2,476 (P 402) | 2,557 (P 417) | 89,957 (P 67,467) | 2.1 (P 1.5) | + | Boost.JSON | parse, parse_into structs | 883 | 1,286 | 6,690 | 101,286 | 3.6 | | simd-json (Rust) | structs (copy) | 679 | 1,731 | 5,144 | 239,164 | 3.5 | - | Boost.JSON | parse, parse_into structs | 887 | 1,270 | 7,292 | 95,866 | 3.7 | - | RapidJSON | Document (string stream), insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,180 (U 1,022) | 1,693 | 10,390 | 116,394 (U 108,290) | 4.9 (U 3.4) | - | nlohmann/json `json` | parse, structs (from_json) | 3,360 | 5,268 | 12,006 | 410,221 | 17.7 | + | RapidJSON | Document (string stream), Document (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,217 (U 1,056) | 1,807 | 9,688 | 152,275 | 5.0 (U 3.5) | + | nlohmann/json `json` | parse, structs (from_json) | 2,984 | 4,548 | 9,124 | 383,108 | 15.2 | **edit** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 536 | 1,162 | 5,567 (N 2,188) | 192,323 | 3.0 | - | sonic-cpp | Document [U] | – (U 620) | – (U 1,438) | – (U 8,495) | – (U 186,078) | – (U 3.4) | - | yyjson | insitu (copy untimed) + mut copy | 746 | 1,526 | 7,479 | 275,025 | 3.6 | + | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 538 | 1,214 | 5,640 (N 2,140) | 193,024 | 3.1 | + | sonic-cpp | Document [U] | – (U 620) | – (U 1,426) | – (U 8,466) | – (U 181,035) | – (U 3.3) | + | yyjson | insitu (copy) + mut copy, mut copy | 786 | 1,642 | 7,599 | 303,303 | 3.8 | | sonic-rs (Rust) | Value | 1,197 | 2,389 | 7,744 | 390,952 | 6.9 | - | Boost.JSON | parse | 1,767 | 2,493 | 12,767 | 331,310 | 8.5 | - | RapidJSON | Document (string stream), insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,865 (U 1,737) | 2,616 | 18,812 | 245,724 (U 234,669) | 8.7 (U 7.2) | + | Boost.JSON | parse | 1,859 | 2,513 | 12,765 | 348,703 | 8.8 | + | RapidJSON | Document (string stream), Document (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,896 (U 1,749) | 2,754 | 19,359 | 269,071 (U 259,148) | 9.1 (U 7.5) | | simd-json (Rust) | borrowed (copy), owned (copy) | 1,862 | 4,194 | 14,896 | 391,369 | 9.0 | - | nlohmann/json `json` | ordered_json | 2,832 | 4,970 | 15,806 | 647,704 | 13.1 | - | Glaze | generic (strict), generic [P] | 3,389 | 6,002 | 21,598 | 607,767 | 14.8 | + | nlohmann/json `json` | ordered_json, parse | 2,535 | 4,484 | 13,526 | 635,912 | 12.4 | + | Glaze | generic (strict), generic [P] | 3,364 | 6,036 | 21,592 | 652,302 (P 631,009) | 15.6 | | serde_json (Rust) | Value | 4,042 | 6,586 | 16,631 | 632,766 | 17.6 | **minify** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 518 (N 496) | 1,045 | 5,240 (N 2,196) | 143,737 | 2.5 (N 2.4) | - | yyjson | insitu (copy untimed) + write, insitu (copy) + write, read (raw numbers) + write [N] | 626 | 1,160 | 6,701 (N 2,901) | 156,605 | 2.8 | - | sonic-cpp | Document + Serialize [U] | – (U 675) | – (U 1,417) | – (U 8,958) | – (U 164,630) | – (U 3.3) | - | simdjson | DOM + to_string, minify [P] | 714 (P 99.9) | 1,318 (P 278) | 9,135 (P 312) | 269,597 (P 42,644) | 3.7 (P 0.5) | + | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 478 | 1,152 | 5,209 (N 2,150) | 152,631 (N 145,664) | 2.6 (N 2.4) | + | yyjson | insitu (copy) + write, read (raw numbers) + write [N], read + write | 610 | 1,277 (N 1,221) | 6,630 (N 2,860) | 199,086 | 3.0 | + | sonic-cpp | Document + Serialize [U] | – (U 636) | – (U 1,498) | – (U 8,354) | – (U 173,180) | – (U 3.3) | + | simdjson | DOM + to_string, minify [P] | 666 (P 93.3) | 1,354 (P 279) | 8,606 (P 314) | 280,739 (P 46,006) | 3.9 (P 0.5) | | sonic-rs (Rust) | Value | 1,000 | 2,097 | 7,795 | 215,280 | 5.4 | - | Boost.JSON | parse + serialize | 1,974 | 2,525 | 12,748 | 314,299 | 8.6 | - | RapidJSON | SAX to Writer (raw numbers) [N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 1,949 (U 1,880) | 2,382 | 19,548 (N 14,400) | 231,979 (U 224,249) | 8.2 (U 6.2) | + | Boost.JSON | parse + serialize | 1,783 | 2,498 | 12,367 | 329,300 | 8.9 | + | RapidJSON | SAX to Writer (raw numbers) [N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 1,851 (U 1,710) | 2,429 | 18,810 (N 14,205) | 229,769 | 9.0 (U 6.7) | | simd-json (Rust) | borrowed (copy) | 1,889 | 4,196 | 15,716 | 414,377 | 9.2 | - | Glaze | generic (strict), minify_json [P] | 3,685 (P 442) | 5,942 (P 1,292) | 22,138 (P 2,726) | 450,322 (P 97,377) | 14.0 (P 1.9) | + | nlohmann/json `json` | parse + dump | 3,369 | 5,399 | 13,402 | 493,302 | 18.4 | + | Glaze | generic (strict), minify_json [P] | 3,243 (P 417) | 6,175 (P 1,299) | 20,961 (P 2,699) | 451,368 (P 93,794) | 15.3 (P 2.1) | | serde_json (Rust) | Value | 4,012 | 6,583 | 17,306 | 509,702 | 16.5 | - | nlohmann/json `json` | parse + dump | 4,196 | 5,806 | 16,626 | 529,560 | 19.2 | **write** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 156 (N 140) | 251 (N 230) | 3,842 (N 823) | 67,769 (N 65,376) | 0.9 (N 0.8) | - | yyjson | write | 215 | 319 | 3,360 | 66,669 | 1.3 | - | sonic-cpp | Serialize | 249 | 509 | 5,074 | 69,916 | 1.6 | - | nlohmann/json `json` | dump | 444 | 640 | 4,089 | 117,316 | 1.8 | - | simdjson | to_string | 361 | 614 | 5,609 | 158,492 | 1.8 | - | Glaze | generic | 381 | 730 | 4,071 | 131,946 | 2.0 | + | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 154 (N 139) | 251 (N 229) | 3,946 (N 831) | 64,776 | 0.9 (N 0.8) | + | yyjson | write | 185 | 318 | 3,330 | 67,531 | 1.3 | + | sonic-cpp | Serialize | 258 | 508 | 5,077 | 72,262 | 1.6 | + | nlohmann/json `json` | dump | 413 | 611 | 3,905 | 113,990 | 1.8 | + | simdjson | to_string | 346 | 610 | 5,580 | 158,670 | 1.8 | + | Glaze | generic | 377 | 730 | 4,050 | 129,720 | 2.0 | | sonic-rs (Rust) | Value | 434 | 927 | 3,987 | 109,176 | 2.8 | - | Boost.JSON | serialize | 469 | 830 | 5,659 | 144,174 | 2.4 | + | Boost.JSON | serialize | 451 | 832 | 5,570 | 138,780 | 2.4 | | simd-json (Rust) | borrowed | 582 | 800 | 5,147 | 122,623 | 2.8 | | serde_json (Rust) | Value | 550 | 887 | 4,005 | 134,163 | 3.3 | - | RapidJSON | Writer | 678 | 979 | 9,095 | 131,408 | 3.8 | + | RapidJSON | Writer | 638 | 984 | 8,886 | 131,435 | 3.9 | ??? info "Times in µs on x86-64 with GCC 13.4" @@ -2182,96 +2290,96 @@ cell for the times and the way.

| library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | accept | 271 | 609 | 1,011 | 34,722 | 1.2 | + | **nlohmann/json `json_document`** | accept | 267 | 664 | 986 | 34,874 | 1.2 | + | nlohmann/json `json` | accept | 312 | 686 | 2,345 | 38,948 | 1.3 | | sonic-rs (Rust) | IgnoredAny | 501 | 970 | 2,249 | 54,369 | 1.8 | - | yyjson | insitu (copy untimed), read (raw numbers) | 348 | 878 | 2,256 | 90,959 | 1.6 | - | Boost.JSON | SAX, SAX (numbers: none) | 710 | 969 | 1,718 | 61,476 | 3.2 | - | simdjson | DOM | 311 | 780 | 3,351 | 116,704 | 1.8 | - | Glaze | validate_json | 590 | 1,545 | 1,980 | 76,009 | 2.3 | - | sonic-cpp | Document [U] | – (U 408) | – (U 1,028) | – (U 3,622) | – (U 96,080) | – (U 1.6) | + | Glaze | validate_json | 584 | 1,402 | 1,837 | 71,382 | 2.3 | + | Boost.JSON | SAX, SAX (numbers: none) | 730 | 934 | 1,637 | 60,745 | 3.2 | + | yyjson | insitu (copy), read, read (raw numbers) | 394 | 984 | 2,222 | 128,528 | 1.6 | + | simdjson | DOM | 309 | 737 | 3,183 | 115,296 | 1.8 | + | sonic-cpp | Document [U] | – (U 409) | – (U 1,025) | – (U 3,561) | – (U 96,607) | – (U 1.5) | | serde_json (Rust) | IgnoredAny [U], from_utf8 + IgnoredAny | 624 (U 484) | 1,440 (U 1,370) | 2,406 (U 2,314) | 64,720 (U 58,247) | 2.4 (U 1.9) | - | nlohmann/json `json` | accept | 677 | 1,433 | 4,584 | 73,561 | 3.3 | | simd-json (Rust) | tape (copy) | 567 | 1,430 | 4,359 | 207,551 | 2.9 | - | RapidJSON | SAX (default precision) (no encoding check) [U], SAX (string stream, default precision), insitu (copy untimed), insitu (copy untimed) (no encoding check) [U], insitu (copy) (no encoding check) [U] | 1,552 (U 1,082) | 2,210 (U 1,570) | 4,104 | 168,747 (U 110,856) | 6.9 (U 3.7) | + | RapidJSON | SAX (default precision) (no encoding check) [U], SAX (string stream) (no encoding check) [U], SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,201 (U 1,033) | 1,931 (U 1,487) | 4,114 (U 3,966) | 145,137 (U 127,587) | 4.8 (U 3.2) | **sum** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | simdjson | On-Demand | 356 | 812 | 3,435 | 96,250 | 2.0 | - | **nlohmann/json `json_document`** | parse | 392 | 946 | 3,888 | 89,044 | 2.0 | + | simdjson | On-Demand | 356 | 819 | 3,291 | 94,267 | 1.9 | + | **nlohmann/json `json_document`** | parse | 387 | 1,036 | 3,704 | 89,477 | 1.9 | + | nlohmann/json `json` | sax | 451 | 941 | 3,816 | 64,406 | 2.3 | | sonic-rs (Rust) | visitor | 501 | 1,123 | 4,397 | 59,583 | 2.5 | - | sonic-cpp | Document [U] | – (U 460) | – (U 1,210) | – (U 4,295) | – (U 107,092) | – (U 1.9) | - | yyjson | insitu (copy untimed) | 407 | 1,045 | 6,021 | 99,764 | 2.0 | - | Boost.JSON | SAX | 734 | 1,030 | 6,103 | 64,382 | 3.3 | - | nlohmann/json `json` | sax | 797 | 1,548 | 6,004 | 101,516 | 4.0 | + | sonic-cpp | Document [U] | – (U 459) | – (U 1,209) | – (U 4,247) | – (U 103,731) | – (U 1.9) | + | yyjson | insitu (copy), read | 443 | 1,146 | 5,974 | 129,054 | 2.0 | + | Boost.JSON | SAX | 746 | 1,025 | 5,370 | 63,333 | 3.3 | | simd-json (Rust) | visitor (copy) | 681 | 1,650 | 5,083 | 210,185 | 3.5 | | serde_json (Rust) | visitor | 1,311 | 2,288 | 7,127 | 129,497 | 4.6 | - | RapidJSON | SAX (no encoding check) [U], SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,616 (U 1,130) | 2,290 (U 1,743) | 11,183 | 181,500 (U 119,706) | 7.5 (U 3.9) | - | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 2,345 | 4,080 | 10,576 | 250,685 (P 231,181) | 9.0 (P 6.4) | + | RapidJSON | SAX (no encoding check) [U], SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,256 (U 1,085) | 2,114 (U 1,750) | 11,059 | 155,532 (U 128,734) | 5.2 (U 3.5) | + | Glaze | generic (double, strict), lazy_json [P] | 2,341 | 4,037 | 10,434 | 249,828 (P 219,119) | 8.5 (P 5.9) | **select** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse | 332 | 765 | 1,390 | 88,202 | 1.6 | - | yyjson | insitu (copy untimed), read (raw numbers) | 361 | 880 | 2,236 | 98,637 | 1.7 | + | **nlohmann/json `json_document`** | parse, structs (from_json) | 329 | 855 | 1,360 | 90,597 | 1.6 | + | yyjson | insitu (copy), read, read (raw numbers) | 397 | 994 | 2,228 | 140,073 | 1.8 | | sonic-rs (Rust) | structs | 504 | 1,033 | 2,328 | 90,486 | 2.0 | - | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P] | 324 (P 184) | 756 (P 509) | 3,409 (P 700) | 123,214 (P 48,614) | 2.0 (P 1.2) | - | Glaze | structs (validate_skipped), structs [P] | 529 (P 342) | 1,435 (P 410) | 1,913 (P 431) | 91,253 (P 66,069) | 2.0 (P 1.5) | - | sonic-cpp | Document [U] | – (U 413) | – (U 1,043) | – (U 3,695) | – (U 108,297) | – (U 1.7) | + | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P] | 323 (P 186) | 748 (P 508) | 3,189 (P 707) | 126,288 (P 50,215) | 2.0 (P 1.2) | + | Glaze | structs (validate_skipped), structs [P] | 523 (P 338) | 1,473 (P 406) | 1,853 (P 434) | 89,506 (P 66,029) | 1.9 (P 1.4) | + | sonic-cpp | Document [U] | – (U 412) | – (U 1,044) | – (U 3,632) | – (U 106,188) | – (U 1.7) | | serde_json (Rust) | from_utf8 + structs, structs [U] | 701 | 1,532 | 2,529 (U 2,402) | 107,316 | 3.0 | | simd-json (Rust) | structs (copy) | 679 | 1,731 | 5,144 | 239,164 | 3.5 | - | Boost.JSON | parse, parse_into structs | 884 | 1,380 | 7,217 | 99,078 | 3.9 | - | RapidJSON | Document (string stream) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,560 (U 1,079) | 2,127 (U 1,817) | 11,547 | 176,066 (U 122,354) | 7.1 (U 3.7) | - | nlohmann/json `json` | structs (from_json) | 3,325 | 5,126 | 11,908 | 423,362 | 17.0 | + | Boost.JSON | parse, parse_into structs | 899 | 1,353 | 7,011 | 100,039 | 3.9 | + | RapidJSON | Document (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,207 (U 1,037) | 1,947 (U 1,847) | 11,910 | 164,386 (U 147,489) | 5.0 (U 3.4) | + | nlohmann/json `json` | parse, structs (from_json) | 3,032 | 4,466 | 9,085 | 376,812 | 15.7 | **edit** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 532 | 1,116 | 5,714 (N 2,702) | 192,363 | 3.1 | - | sonic-cpp | Document [U] | – (U 637) | – (U 1,559) | – (U 8,936) | – (U 186,232) | – (U 3.3) | - | yyjson | insitu (copy untimed) + mut copy | 761 | 1,590 | 9,860 | 271,227 | 3.7 | + | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 530 | 1,209 | 5,792 (N 2,621) | 193,925 | 3.1 | + | sonic-cpp | Document [U] | – (U 632) | – (U 1,583) | – (U 8,734) | – (U 184,592) | – (U 3.4) | + | yyjson | insitu (copy) + mut copy, mut copy | 841 | 1,719 | 9,803 | 309,935 | 3.8 | | sonic-rs (Rust) | Value | 1,197 | 2,389 | 7,744 | 390,952 | 6.9 | - | Boost.JSON | parse | 1,963 | 2,936 | 13,414 | 356,244 | 9.1 | + | Boost.JSON | parse | 1,889 | 2,952 | 13,537 | 346,542 | 9.6 | + | RapidJSON | Document (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,920 (U 1,747) | 2,977 (U 2,823) | 21,152 | 293,851 (U 280,165) | 9.3 (U 7.6) | | simd-json (Rust) | borrowed (copy), owned (copy) | 1,862 | 4,194 | 14,896 | 391,369 | 9.0 | - | RapidJSON | Document (string stream) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U], insitu (copy) | 2,333 (U 1,838) | 3,133 (U 2,836) | 20,518 | 315,892 (U 271,888) | 11.0 (U 7.7) | - | nlohmann/json `json` | ordered_json | 2,912 | 4,999 | 15,603 | 604,744 | 13.5 | - | Glaze | generic (strict), generic [P] | 3,525 | 6,551 | 23,644 | 661,941 (P 632,543) | 15.6 | + | nlohmann/json `json` | ordered_json, parse | 2,503 | 4,414 | 13,479 | 622,816 | 12.7 | + | Glaze | generic (strict), generic [P] | 3,474 | 6,531 (P 6,302) | 23,193 | 673,526 | 16.5 (P 16.0) | | serde_json (Rust) | Value | 4,042 | 6,586 | 16,631 | 632,766 | 17.6 | **minify** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N], parse_copy + dump | 483 | 1,014 | 5,459 (N 2,620) | 146,320 | 2.4 | - | yyjson | insitu (copy untimed) + write, read (raw numbers) + write [N], read + write | 592 | 1,205 | 9,008 (N 3,106) | 158,577 | 2.9 | - | sonic-cpp | Document + Serialize [U] | – (U 695) | – (U 1,541) | – (U 8,838) | – (U 168,901) | – (U 3.3) | - | simdjson | DOM + to_string, minify [P] | 742 (P 123) | 1,393 (P 337) | 8,808 (P 433) | 266,718 (P 47,040) | 3.8 (P 0.6) | + | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 475 | 1,102 | 5,414 (N 2,372) | 144,877 | 2.5 | + | yyjson | insitu (copy) + write, read (raw numbers) + write [N], read + write | 600 | 1,316 (N 1,264) | 9,151 (N 2,994) | 201,645 | 3.1 | + | sonic-cpp | Document + Serialize [U] | – (U 647) | – (U 1,563) | – (U 8,917) | – (U 176,625) | – (U 3.4) | + | simdjson | DOM + to_string, minify [P] | 689 (P 122) | 1,394 (P 336) | 8,457 (P 426) | 292,576 (P 49,731) | 4.1 (P 0.6) | | sonic-rs (Rust) | Value | 1,000 | 2,097 | 7,795 | 215,280 | 5.4 | - | Boost.JSON | parse + serialize | 2,086 | 2,919 | 13,974 | 334,468 | 9.2 | + | Boost.JSON | parse + serialize | 1,907 | 2,950 | 13,662 | 342,183 | 10.2 | | simd-json (Rust) | borrowed (copy) | 1,889 | 4,196 | 15,716 | 414,377 | 9.2 | - | RapidJSON | Document + Writer, SAX to Writer, SAX to Writer (no encoding check) [U], SAX to Writer (raw numbers) (no encoding check) [U N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 3,015 (U 1,978) | 3,012 (U 2,493) | 21,177 (U N 15,512) | 355,727 (U 249,235) | 13.9 (U 7.5) | - | Glaze | generic (strict), minify_json [P] | 3,780 (P 422) | 6,416 (P 1,144) | 23,765 (P 2,350) | 458,311 (P 96,405) | 14.7 (P 1.9) | + | RapidJSON | SAX to Writer, SAX to Writer (raw numbers) (no encoding check) [U N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 2,746 (U 1,824) | 3,162 (U 2,672) | 21,674 (U N 15,166) | 381,832 (U 259,100) | 15.6 (U 8.5) | + | nlohmann/json `json` | parse + dump | 3,417 | 5,153 | 13,425 | 504,511 | 18.5 | + | Glaze | generic (strict), minify_json [P] | 3,359 (P 417) | 6,437 (P 1,116) | 23,896 (P 2,113) | 480,814 (P 97,812) | 15.9 (P 1.9) | | serde_json (Rust) | Value | 4,012 | 6,583 | 17,306 | 509,702 | 16.5 | - | nlohmann/json `json` | parse + dump | 4,143 | 5,702 | 16,463 | 528,092 | 19.5 | **write** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 150 | 260 | 3,861 (N 998) | 63,958 | 0.8 | - | yyjson | write | 204 | 327 | 3,748 | 65,989 | 1.2 | - | sonic-cpp | Serialize | 256 | 541 | 5,120 | 69,546 | 1.6 | - | Glaze | generic, generic (strict) | 360 | 660 | 3,714 | 124,598 | 1.7 | - | nlohmann/json `json` | dump | 471 | 644 | 4,344 | 114,096 | 1.9 | - | simdjson | to_string | 359 | 637 | 4,999 | 154,364 | 1.9 | + | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 152 (N 147) | 260 | 3,811 (N 997) | 72,196 | 0.9 | + | yyjson | write | 180 | 325 | 3,548 | 71,044 | 1.2 | + | sonic-cpp | Serialize | 268 | 543 | 5,057 | 75,734 | 1.7 | + | Glaze | generic | 336 | 682 | 3,750 | 133,730 | 1.8 | + | nlohmann/json `json` | dump | 413 | 617 | 4,036 | 124,865 | 1.9 | + | simdjson | to_string | 360 | 636 | 5,363 | 169,032 | 1.9 | | sonic-rs (Rust) | Value | 434 | 927 | 3,987 | 109,176 | 2.8 | | simd-json (Rust) | borrowed | 582 | 800 | 5,147 | 122,623 | 2.8 | - | Boost.JSON | serialize | 480 | 1,016 | 6,154 | 139,022 | 2.5 | + | Boost.JSON | serialize | 474 | 1,003 | 6,012 | 148,120 | 2.5 | | serde_json (Rust) | Value | 550 | 887 | 4,005 | 134,163 | 3.3 | - | RapidJSON | Writer | 717 | 1,033 | 9,017 | 134,260 | 4.0 | + | RapidJSON | Writer | 661 | 1,015 | 8,980 | 136,957 | 4.1 | ??? info "Times in µs on x86-64 with Clang 23" @@ -2279,96 +2387,96 @@ cell for the times and the way.

| library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | accept | 255 | 512 | 1,055 | 34,729 | 1.1 | - | yyjson | insitu (copy untimed), read (raw numbers) | 334 | 811 | 2,580 | 83,153 | 1.5 | + | **nlohmann/json `json_document`** | accept | 250 | 509 | 1,032 | 34,454 | 1.1 | + | nlohmann/json `json` | accept | 335 | 711 | 2,018 | 39,513 | 1.4 | | sonic-rs (Rust) | IgnoredAny | 501 | 970 | 2,249 | 54,369 | 1.8 | - | Boost.JSON | SAX, SAX (numbers: none) | 571 | 910 | 1,684 | 55,498 | 2.3 | - | simdjson | DOM | 306 | 732 | 3,206 | 113,452 | 1.7 | - | sonic-cpp | Document [U] | – (U 448) | – (U 1,032) | – (U 3,143) | – (U 94,884) | – (U 1.8) | - | Glaze | validate_json | 588 | 1,431 | 1,867 | 75,571 | 2.4 | + | Boost.JSON | SAX, SAX (numbers: none) | 570 | 903 | 1,678 | 55,087 | 2.3 | + | simdjson | DOM | 302 | 721 | 3,202 | 116,859 | 1.7 | + | yyjson | insitu (copy), read, read (raw numbers) | 383 | 887 | 2,572 | 123,640 | 1.6 | + | sonic-cpp | Document [U] | – (U 451) | – (U 998) | – (U 3,031) | – (U 95,823) | – (U 1.8) | + | Glaze | validate_json | 594 | 1,230 | 2,139 | 73,235 | 2.5 | | serde_json (Rust) | IgnoredAny [U], from_utf8 + IgnoredAny | 624 (U 484) | 1,440 (U 1,370) | 2,406 (U 2,314) | 64,720 (U 58,247) | 2.4 (U 1.9) | - | nlohmann/json `json` | accept | 658 | 1,390 | 4,265 | 71,982 | 3.5 | | simd-json (Rust) | tape (copy) | 567 | 1,430 | 4,359 | 207,551 | 2.9 | - | RapidJSON | SAX (default precision), SAX (default precision) (no encoding check) [U], SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,756 (U 1,132) | 1,971 (U 1,572) | 4,118 | 198,915 (U 131,204) | 8.2 (U 4.1) | + | RapidJSON | SAX (default precision), SAX (default precision) (no encoding check) [U], SAX (string stream, default precision), SAX (string stream, default precision) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,798 (U 1,173) | 1,944 (U 1,504) | 4,019 | 232,684 (U 128,516) | 8.1 (U 4.1) | **sum** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse | 374 | 923 | 3,846 | 85,286 | 1.8 | - | yyjson | insitu (copy untimed) | 399 | 946 | 3,445 | 88,447 | 1.9 | - | simdjson | DOM, On-Demand | 394 | 977 | 4,117 | 114,602 | 2.2 | + | **nlohmann/json `json_document`** | parse | 366 | 941 | 3,680 | 86,966 | 1.8 | + | nlohmann/json `json` | sax | 431 | 914 | 3,824 | 60,439 | 2.1 | + | simdjson | DOM, On-Demand | 391 | 969 | 4,121 | 116,855 | 2.2 | | sonic-rs (Rust) | visitor | 501 | 1,123 | 4,397 | 59,583 | 2.5 | - | sonic-cpp | Document [U] | – (U 502) | – (U 1,175) | – (U 3,754) | – (U 104,583) | – (U 2.1) | - | Boost.JSON | SAX | 580 | 928 | 5,809 | 56,774 | 2.4 | - | nlohmann/json `json` | sax | 728 | 1,393 | 5,428 | 89,481 | 3.9 | + | yyjson | insitu (copy), read | 436 | 1,048 | 3,454 | 133,577 | 1.9 | + | sonic-cpp | Document [U] | – (U 504) | – (U 1,176) | – (U 3,701) | – (U 104,509) | – (U 2.1) | + | Boost.JSON | SAX | 580 | 928 | 5,715 | 55,874 | 2.3 | | simd-json (Rust) | visitor (copy) | 681 | 1,650 | 5,083 | 210,185 | 3.5 | | serde_json (Rust) | visitor | 1,311 | 2,288 | 7,127 | 129,497 | 4.6 | - | RapidJSON | SAX, SAX (no encoding check) [U], SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,816 (U 1,187) | 2,224 (U 1,765) | 10,719 | 206,811 (U 135,945) | 8.5 (U 4.3) | - | Glaze | generic (double, strict), lazy_json [P] | 2,427 | 3,972 | 12,165 | 253,385 (P 196,582) | 9.2 (P 5.6) | + | RapidJSON | SAX, SAX (no encoding check) [U], SAX (string stream), SAX (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,846 (U 1,229) | 2,176 (U 1,761) | 10,561 | 239,499 (U 131,510) | 8.4 (U 4.3) | + | Glaze | generic (double) [P], generic (double, strict), lazy_json [P] | 2,374 | 3,982 | 11,930 | 261,204 (P 198,036) | 9.0 (P 5.6) | **select** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse, structs (from_json) | 320 | 759 | 1,390 | 88,083 | 1.6 | - | yyjson | insitu (copy untimed), read (raw numbers) | 351 | 788 | 2,632 | 92,551 | 1.6 | - | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P], On-Demand structs [P] | 316 (P 181) | 731 (P 495) | 3,262 (P 702) | 120,808 (P 48,823) | 1.9 (P 1.1) | + | **nlohmann/json `json_document`** | parse, structs (from_json) | 316 | 783 | 1,368 | 91,736 | 1.6 | + | yyjson | insitu (copy), read (raw numbers) | 386 | 891 | 2,572 | 135,813 | 1.7 | | sonic-rs (Rust) | structs | 504 | 1,033 | 2,328 | 90,486 | 2.0 | - | Glaze | structs (validate_skipped), structs [P] | 544 (P 345) | 1,368 (P 419) | 1,924 (P 444) | 85,745 (P 66,442) | 2.2 (P 1.6) | - | sonic-cpp | Document [U] | – (U 460) | – (U 1,011) | – (U 3,204) | – (U 108,245) | – (U 1.9) | + | simdjson | DOM, On-Demand (key selectors) [P], On-Demand [P] | 318 (P 182) | 728 (P 494) | 3,213 (P 692) | 129,986 (P 50,660) | 2.0 (P 1.1) | + | Glaze | structs (validate_skipped), structs [P] | 542 (P 337) | 1,369 (P 416) | 1,846 (P 447) | 83,907 (P 68,455) | 2.2 (P 1.6) | + | sonic-cpp | Document [U] | – (U 454) | – (U 1,015) | – (U 3,025) | – (U 112,621) | – (U 2.0) | | serde_json (Rust) | from_utf8 + structs, structs [U] | 701 | 1,532 | 2,529 (U 2,402) | 107,316 | 3.0 | - | Boost.JSON | parse, parse_into structs | 776 | 1,389 | 7,121 | 97,681 | 3.2 | + | Boost.JSON | parse, parse_into structs | 760 | 1,388 | 7,026 | 97,008 | 3.2 | | simd-json (Rust) | structs (copy) | 679 | 1,731 | 5,144 | 239,164 | 3.5 | - | RapidJSON | insitu (copy untimed), insitu (copy untimed) (no encoding check) [U] | 1,762 (U 1,144) | 2,198 (U 1,817) | 11,464 | 209,290 (U 142,852) | 8.2 (U 4.1) | - | nlohmann/json `json` | parse, structs (from_json) | 3,602 | 5,124 | 11,831 | 444,210 | 20.2 | + | RapidJSON | Document (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 1,806 (U 1,184) | 2,303 (U 1,929) | 11,395 | 257,762 (U 171,716) | 8.7 (U 4.3) | + | nlohmann/json `json` | parse, structs (from_json) | 3,181 | 4,583 | 9,599 | 405,734 | 18.9 | **edit** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 526 | 1,127 | 5,674 (N 2,443) | 196,370 | 2.9 | - | sonic-cpp | Document [U] | – (U 711) | – (U 1,472) | – (U 7,996) | – (U 183,852) | – (U 3.2) | - | yyjson | insitu (copy untimed) + mut copy, insitu (copy) + mut copy | 918 | 1,548 | 7,155 | 270,654 | 3.9 | + | **nlohmann/json `json_document`** | editable, editable (source numbers) [N] | 519 | 1,152 | 5,671 (N 2,502) | 195,716 | 3.0 | + | sonic-cpp | Document [U] | – (U 642) | – (U 1,497) | – (U 8,153) | – (U 184,321) | – (U 3.3) | + | yyjson | insitu (copy) + mut copy, mut copy | 833 | 1,674 | 7,249 | 316,652 | 4.2 | | sonic-rs (Rust) | Value | 1,197 | 2,389 | 7,744 | 390,952 | 6.9 | - | Boost.JSON | parse | 1,855 | 2,596 | 12,765 | 350,286 | 8.3 | + | Boost.JSON | parse | 1,716 | 2,578 | 13,427 | 354,510 | 8.9 | | simd-json (Rust) | borrowed (copy), owned (copy) | 1,862 | 4,194 | 14,896 | 391,369 | 9.0 | - | RapidJSON | insitu (copy untimed), insitu (copy untimed) (no encoding check) [U], insitu (copy) | 2,635 (U 1,952) | 3,103 (U 2,728) | 21,139 | 333,913 (U 267,081) | 11.8 (U 7.7) | - | nlohmann/json `json` | ordered_json, parse | 3,069 | 4,905 | 16,702 | 666,261 | 13.1 | + | RapidJSON | Document (string stream) (no encoding check) [U], insitu (copy), insitu (copy) (no encoding check) [U] | 2,478 (U 1,842) | 3,261 (U 2,887) | 21,686 | 378,727 (U 294,727) | 13.1 (U 8.3) | + | nlohmann/json `json` | ordered_json, parse | 2,452 | 4,402 | 14,765 | 646,489 | 12.6 | | serde_json (Rust) | Value | 4,042 | 6,586 | 16,631 | 632,766 | 17.6 | - | Glaze | generic (strict), generic [P] | 4,341 | 7,322 | 26,786 | 725,881 | 18.3 (P 17.7) | + | Glaze | generic (strict), generic [P] | 3,896 | 7,671 | 28,104 (P 27,111) | 723,675 | 20.2 | **minify** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 518 | 1,040 | 5,043 (N 2,456) | 146,125 | 2.4 | - | yyjson | insitu (copy untimed) + write, read (raw numbers) + write [N] | 620 | 1,189 | 6,283 (N 3,472) | 154,016 | 3.0 | - | sonic-cpp | Document + Serialize [U] | – (U 710) | – (U 1,485) | – (U 8,122) | – (U 166,935) | – (U 3.1) | - | simdjson | DOM + to_string, minify [P] | 783 (P 105) | 1,395 (P 269) | 8,303 (P 337) | 275,007 (P 45,087) | 4.0 (P 0.5) | + | **nlohmann/json `json_document`** | parse + dump, parse + dump (source numbers) [N] | 472 | 1,055 | 5,041 (N 2,363) | 149,143 | 2.5 | + | yyjson | read (raw numbers) + write [N], read + write | 626 | 1,261 | 6,179 (N 3,426) | 200,886 | 3.3 | + | sonic-cpp | Document + Serialize [U] | – (U 655) | – (U 1,474) | – (U 7,856) | – (U 169,992) | – (U 3.5) | + | simdjson | DOM + to_string, minify [P] | 706 (P 99.0) | 1,411 (P 270) | 8,125 (P 329) | 270,332 (P 42,546) | 4.3 (P 0.5) | | sonic-rs (Rust) | Value | 1,000 | 2,097 | 7,795 | 215,280 | 5.4 | - | Boost.JSON | parse + serialize | 1,924 | 2,569 | 12,622 | 329,090 | 8.4 | + | Boost.JSON | parse + serialize | 1,722 | 2,573 | 12,678 | 330,878 | 9.0 | | simd-json (Rust) | borrowed (copy) | 1,889 | 4,196 | 15,716 | 414,377 | 9.2 | - | RapidJSON | Document + Writer, SAX to Writer, SAX to Writer (no encoding check) [U], SAX to Writer (raw numbers) (no encoding check) [U N], SAX to Writer (raw numbers) [N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 2,808 (U N 2,022) | 2,975 (U 2,480) | 22,589 (N 14,986) | 358,807 (U 261,527) | 12.7 (U 7.2) | + | RapidJSON | Document + Writer, SAX to Writer, SAX to Writer (no encoding check) [U], SAX to Writer (raw numbers) (no encoding check) [U N], SAX to Writer (string stream), SAX to Writer (string stream) (no encoding check) [U] | 2,456 (U 1,794) | 2,864 (U 2,444) | 21,753 (U N 14,707) | 338,985 (U 252,656) | 13.6 (U 7.5) | + | nlohmann/json `json` | parse + dump | 3,525 | 5,178 | 14,024 | 506,705 | 20.6 | | serde_json (Rust) | Value | 4,012 | 6,583 | 17,306 | 509,702 | 16.5 | - | nlohmann/json `json` | parse + dump | 4,445 | 5,713 | 16,711 | 543,033 | 21.4 | - | Glaze | generic (strict), minify_json [P] | 4,132 (P 444) | 7,465 (P 1,059) | 26,962 (P 2,222) | 528,811 (P 91,153) | 17.2 (P 1.9) | + | Glaze | generic (strict), minify_json [P] | 3,801 (P 422) | 7,482 (P 1,051) | 26,932 (P 2,140) | 544,342 (P 87,842) | 19.2 (P 2.1) | **write** | library | variant | `twitter.json` | `citm_catalog.json` | `canada.json` | `jeopardy.json` | one status (2.5 KB) | | --- | --- | --: | --: | --: | --: | --: | - | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 160 (N 154) | 311 (N 279) | 3,714 (N 989) | 67,038 (N 64,301) | 0.9 | - | yyjson | write | 218 | 386 | 3,476 | 71,247 | 1.4 | - | sonic-cpp | Serialize | 224 | 475 | 4,850 | 65,131 | 1.3 | - | nlohmann/json `json` | dump | 451 | 628 | 4,506 | 116,529 | 2.0 | - | Glaze | generic | 399 | 748 | 4,220 | 128,020 | 2.0 | - | simdjson | to_string | 389 | 656 | 4,896 | 157,616 | 2.1 | + | **nlohmann/json `json_document`** | dump, dump (source numbers) [N] | 158 (N 153) | 279 | 3,637 (N 982) | 67,366 | 0.9 | + | yyjson | write | 216 | 367 | 3,366 | 73,272 | 1.4 | + | sonic-cpp | Serialize | 228 | 474 | 4,766 | 66,619 | 1.3 | + | nlohmann/json `json` | dump | 438 | 599 | 4,458 | 116,318 | 1.9 | + | Glaze | generic, generic (strict) | 396 | 725 | 4,107 | 132,573 | 2.1 | + | simdjson | to_string | 382 | 661 | 4,787 | 162,220 | 2.1 | | sonic-rs (Rust) | Value | 434 | 927 | 3,987 | 109,176 | 2.8 | - | Boost.JSON | serialize | 478 | 916 | 5,615 | 141,846 | 2.5 | + | Boost.JSON | serialize | 478 | 913 | 5,610 | 141,994 | 2.6 | | simd-json (Rust) | borrowed | 582 | 800 | 5,147 | 122,623 | 2.8 | | serde_json (Rust) | Value | 550 | 887 | 4,005 | 134,163 | 3.3 | - | RapidJSON | Writer | 627 | 1,008 | 9,596 | 123,764 | 3.7 | + | RapidJSON | Writer | 633 | 960 | 9,388 | 127,319 | 3.8 | ### F. Behavior changes @@ -2398,8 +2506,8 @@ because 3.12.0 has no BON8. | machine | Apple M1 Max laptop on AC power, macOS 27.0.1 | | compiler | Apple clang 21, libc++ | | flags | `-O3 -flto -DNDEBUG`, the compiler's default standard, C++14 | -| suite | 3 rounds × 4 repetitions per version, random interleaving, each round of a version started only when the load average was below 4 and repeated when it rose above 5 while running; of 3.12.0 and 3.13.0, the round that was 4.2% and 1.8% slower overall than the other two was dropped; the median of the remaining 8 | -| noise | the coefficient of variation was 3% or less for 172 of the 182 rows with 3.12.0 and 174 with 3.13.0; the largest was 7.3%, not counting one 3.12.0 run of a 1.5 µs benchmark that a disturbance made 1.4× as slow | +| suite | 3 rounds × 4 repetitions per version, random interleaving, each round of a version started only when the load average was below 4 and repeated when it rose above 5 while running; the rounds of a version differed by less than 1% overall; the median of all 12 | +| noise | the coefficient of variation was 3% or less for 180 of the 182 rows with 3.12.0 and 179 with 3.13.0; the largest was 5.4% (`Iterate/twitter` with 3.13.0), not counting two disturbed runs: two repetitions of a 0.4 µs benchmark with 3.12.0 that took 2.4× as long, and one of a 46 ms one with 3.13.0 that took 1.4× as long | | inputs | the files of [Appendix A](#a-test-files), and number-heavy files | | Intel check | the suite again on a MacBook Pro (15-inch, 2016) with an Intel Core i7-6920HQ (Skylake, 4 cores), macOS 12.0.1, Apple clang 13, the same flags with C++11; started below a load of 3, repeated above 4; the first round of each version dropped (3.12.0's was 4.7% slower than the others); the coefficient of variation was 3% or less for 120 rows with 3.12.0 and 161 of 234 with 3.13.0, so single rows are less reliable than on the M1 Max; geometric mean 3.07×, and two rows below 1×: copying `citm_catalog.json` without destroying the copy (0.93×) and `==` of it and a copy (0.95×), both in each round | @@ -2407,34 +2515,35 @@ because 3.12.0 has no BON8. **The other measurements.** The timeline is [`tests/benchmarks/history`](https://github.com/nlohmann/json/tree/develop/tests/benchmarks/history): one program, -compiled against `single_include` of 3.12.0, of each of the 351 commits on `develop` up to November 3 that changed +compiled against `single_include` of 3.12.0, of each of the 358 commits on `develop` up to November 7 that changed `json.hpp` or `json_view.hpp` since, and of 3.13.0 (C++17, `-O3`, no LTO), 4 rounds in random order, median of the rounds (the mean of the two middle ones). Two commits that don't compile on their own are left out. The commits up to -October 27 were run on October 27, the later ones and 3.13.0 on November 3, together with twelve of the earlier commits -as a check: per workload, their median moved by 1.5% or less. The algorithmic fixes come from small extra programs -(C++17, `-O3`, median of 3 interleaved runs). The comparison with other libraries is described in [Appendix -E](#e-comparison-with-other-libraries). +October 27 were run on October 27, those up to November 2 on November 3, and the later ones and 3.13.0 on November 7, +each time together with twelve of the earlier commits as a check: per workload, their median moved by 1.5% or less +(3% for `json_view`'s parse of `canada.json`, which only three of them have). The algorithmic fixes come from small +extra programs (C++17, `-O3`, median of 3 interleaved runs). The comparison with other libraries is described in +[Appendix E](#e-comparison-with-other-libraries). **Compile times.** The two programs of [The price](#the-price), each compiled as one translation unit with `-std=c++20` (modules need it) and `-O0` or `-O2`, with Apple clang 21 and Homebrew GCC 16.2 on the M1 Max. The time is the CPU time (user plus system) of the compiler process, the median of 5 rounds in which all 40 compilations ran in a random order. -The slowest of the 5 runs was within 13% of the fastest for every program and every build of the precompiled header or +The slowest of the 5 runs was within 14% of the fastest for every program and every build of the precompiled header or the module. Every variant was also linked and run once, with the same output from all of them. | build | program | 3.12.0 | 3.13.0 | 3.13.0, PCH | 3.13.0, module | | --- | --- | --: | --: | --: | --: | -| Apple clang `-O0` | `count_numbers` | 955 | 1,320 | 689 | 918 | -| | `server_config` | 1,113 | 1,496 | 863 | 1,136 | -| Apple clang `-O2` | `count_numbers` | 1,393 | 2,081 | 1,458 | 1,685 | -| | `server_config` | 1,754 | 2,546 | 1,925 | 2,169 | -| GCC 16 `-O0` | `count_numbers` | 1,569 | 2,548 | 1,725 | 1,700 | -| | `server_config` | 2,025 | 2,985 | 2,302 | 2,326 | -| GCC 16 `-O2` | `count_numbers` | 2,336 | 3,702 | 2,987 | 2,913 | -| | `server_config` | 3,122 | 4,714 | 4,006 | 4,055 | +| Apple clang `-O0` | `count_numbers` | 831 | 1,131 | 639 | 790 | +| | `server_config` | 963 | 1,313 | 774 | 1,037 | +| Apple clang `-O2` | `count_numbers` | 1,328 | 1,898 | 1,312 | 1,491 | +| | `server_config` | 1,584 | 2,251 | 1,779 | 1,926 | +| GCC 16 `-O0` | `count_numbers` | 1,417 | 2,385 | 1,593 | 1,604 | +| | `server_config` | 1,878 | 2,820 | 2,152 | 2,180 | +| GCC 16 `-O2` | `count_numbers` | 2,159 | 3,465 | 2,765 | 2,740 | +| | `server_config` | 2,878 | 4,388 | 3,722 | 3,774 |

Compile time in milliseconds of the two programs in [The price](#the-price) (CPU -time of the compiler, median of 5 runs). Building the precompiled header took 973 and 987 ms with Apple clang (`-O0`, -`-O2`) and 2,565 and 2,589 ms with GCC; building the module took 1,617 and 1,602 ms or 2,499 and 2,465 ms.

+time of the compiler, median of 5 runs). Building the precompiled header took 917 and 879 ms with Apple clang (`-O0`, +`-O2`) and 2,306 and 2,264 ms with GCC; building the module took 1,399 and 1,433 ms or 2,339 and 2,325 ms.

??? example "The programs and the build commands" @@ -2566,19 +2675,21 @@ suite also on an Intel laptop with Clang. The comparison with other libraries al which Haswell doesn't have, so the real CPU is probably a later one. It shares its cores with other work, so its differences of a few percent are noise. The theme sections quote x86-64 numbers where a pull request measured them, mostly with GCC 13 and Clang 18. Expect smaller gains for some workloads on x86-64 with glibc: its `FILE*` locking is -cheaper to begin with, and its allocator behaves differently. We did not measure on Windows, and we did not measure -binary size or memory use. +cheaper to begin with, so taking it once per parse gains less, its allocator behaves differently, and fresh output +memory costs more page faults. We did not measure on Windows, and we did not measure binary size or memory use. ### H. Pull requests by theme - 1 **Specialize for each input source:** contiguous input - [#5283][5283]; streams and `FILE*` [#5828][5828], [#5884][5884]; binary strings in bulk [#5233][5233]; sized sentinels - [#5268][5268]. + [#5283][5283]; streams and `FILE*` [#5828][5828], [#5884][5884]; the buffer of a `FILE` [#6030][6030]; iterator + pairs [#6029][6029]; one loop for parser and lexer [#6031][6031]; binary strings in bulk [#5233][5233]; sized + sentinels [#5268][5268]. - 2 **Work on words, not bytes:** word-at-a-time strings, UTF-8 runs, and digits [#5283][5283], [#5738][5738], [#5851][5851]; indentation [#5810][5810]; `dump()` runs [#5285][5285]; SSE2 and NEON [#5853][5853], [#5628][5628]; `json_document` with `ensure_ascii` [#5879][5879]; short strings [#5878][5878], [#5883][5883]; escape table [#5822][5822]; loop shape [#5490][5490]; fraction digits [#5971][5971]; - BSON keys [#5968][5968]; UTF-8 checks of binary strings [#5982][5982]; one SIMD macro set [#5921][5921]. + BSON keys [#5968][5968]; UTF-8 checks of binary strings [#5982][5982]; one SIMD macro set [#5921][5921]; fewer + operations per word and vector [#6033][6033]. - 3 **Own the number conversions:** Eisel-Lemire [#5617][5617]; long numbers [#5738][5738]; one pass over the digits [#5851][5851]; Żmij [#5634][5634]; long integers in `dump()` [#5964][5964]; MSVC intrinsics for the 128-bit multiplication [#5782][5782]. @@ -2587,13 +2698,15 @@ binary size or memory use. [#5501][5501]; `ordered_json` growth [#5609][5609]; arrays at their final size [#5882][5882]; moving keys [#5458][5458], [#5855][5855]; separator check [#5592][5592]; CBOR keys [#5328][5328]; `accept()` without copies [#5978][5978]; runs of scalars in binary arrays [#5975][5975], [#5980][5980], [#5981][5981], [#6008][6008]; BJData - marker list [#5555][5555]; `from_json()` into containers [#5833][5833]. + marker list [#5555][5555]; `from_json()` into containers [#5833][5833]; binary strings without a zero fill + [#6028][6028]. - 5 **Read the assembly:** stack canary [#5854][5854]; exceptions and inlining [#5838][5838], [#5840][5840], [#5839][5839], [#5836][5836]; aliasing [#5633][5633]; forced - inlining [#5878][5878]; branch-free selections [#5908][5908]; code size [#5902][5902]. + inlining [#5878][5878]; branch-free selections [#5908][5908]; code size [#5902][5902]; the order of the iterator's + type tests [#6039][6039]. - 6 **Write through a cursor:** write buffer [#5285][5285]; adapter on the stack [#5449][5449]; binary sinks [#5286][5286]; cursor and runs of numbers [#5824][5824], - [#5885][5885]; `to_bson()` in one pass [#5979][5979]. + [#5885][5885]; `to_bson()` in one pass [#5979][5979]; a window instead of zeroing the whole capacity [#6020][6020]. - 7 **Fix the algorithm first:** `diff()` [#5461][5461]; parse callbacks [#5457][5457]; `operator<` [#5390][5390]; `flatten()` [#5834][5834]; `unflatten()` [#5793][5793]; JSON Pointer and Patch [#5861][5861], [#5886][5886]; `to_bson()` [#5553][5553]; `JSON_DIAGNOSTICS` [#5832][5832]; bounded @@ -2681,7 +2794,15 @@ These are the checks behind the themes: [Appendix F](#f-behavior-changes). - **Stream windows** (theme 1). A test `streambuf` hands out get areas of 1–4,096 bytes, so that every token crosses a window edge at every offset, and the result is compared with a - `streambuf` without a get area, which takes the old path. + `streambuf` without a get area, which takes the old path. The `FILE` window is checked the same way, with `FILE` + buffers of 1 to 70 bytes, unbuffered files, and characters pushed back with `ungetc()` before the parse, on macOS and + glibc. +- **The fused parser** (theme 1). `contiguous_parser` is + compared with the byte path on corner cases of literals, numbers, escapes, surrogates and UTF-8, on 1,500 generated + documents, every truncation of the short ones and random mutations, and on nesting across the 64-level words of its + stack: the same values with the same number types and float bits, the same exception messages, the same `accept()` + verdicts and the same `sax_parse()` events, also for handlers that stop early (242,118 assertions). A fuzzer that + compares the `sax_parse()` events of both paths ran 9 million inputs without a finding. - **Differential fuzzing of the input kinds.** Every fuzz input is also parsed from an `std::istringstream`, from `std::list` iterators (the byte path) and from a `FILE*`, and the value, the exception id, the message, and the byte offset must be identical ([#5827][5827]). @@ -2792,3 +2913,10 @@ These are the checks behind the themes: [5981]: https://github.com/nlohmann/json/pull/5981 [5982]: https://github.com/nlohmann/json/pull/5982 [6008]: https://github.com/nlohmann/json/pull/6008 +[6020]: https://github.com/nlohmann/json/pull/6020 +[6028]: https://github.com/nlohmann/json/pull/6028 +[6029]: https://github.com/nlohmann/json/pull/6029 +[6030]: https://github.com/nlohmann/json/pull/6030 +[6031]: https://github.com/nlohmann/json/pull/6031 +[6033]: https://github.com/nlohmann/json/pull/6033 +[6039]: https://github.com/nlohmann/json/pull/6039 diff --git a/docs/mkdocs/docs/images/perf_blog_distribution.svg b/docs/mkdocs/docs/images/perf_blog_distribution.svg index 4760bfd85..313897a5c 100644 --- a/docs/mkdocs/docs/images/perf_blog_distribution.svg +++ b/docs/mkdocs/docs/images/perf_blog_distribution.svg @@ -1,34 +1,34 @@ Speedup of 3.13.0 over 3.12.0 for all 182 benchmarks of the suite -Bars counting the benchmarks per speedup range: below 1x: 1; 1 to 1.5x: 22; 1.5 to 2x: 12; 2 to 3x: 60; 3 to 5x: 58; 5 to 10x: 25; 10x or more: 4. Median 2.9x, geometric mean 3.0x. +Bars counting the benchmarks per speedup range: below 1x: 2; 1 to 1.5x: 21; 1.5 to 2x: 18; 2 to 3x: 52; 3 to 5x: 48; 5 to 10x: 31; 10x or more: 10. Median 2.9x, geometric mean 3.3x. 0 - -20 - -40 - -60 -below 1×: 1 -1 + +20 + +40 + +60 +below 1×: 2 +2 below 1× -1 to 1.5×: 22 -22 +1 to 1.5×: 21 +21 1 to 1.5× -1.5 to 2×: 12 -12 +1.5 to 2×: 18 +18 1.5 to 2× -2 to 3×: 60 -60 +2 to 3×: 52 +52 2 to 3× -3 to 5×: 58 -58 +3 to 5×: 48 +48 3 to 5× -5 to 10×: 25 -25 +5 to 10×: 31 +31 5 to 10× -10× or more: 4 -4 +10× or more: 10 +10 10× or more speedup over 3.12.0, more is better diff --git a/docs/mkdocs/docs/images/perf_blog_heldout.svg b/docs/mkdocs/docs/images/perf_blog_heldout.svg index 5bce0d107..51cf29663 100644 --- a/docs/mkdocs/docs/images/perf_blog_heldout.svg +++ b/docs/mkdocs/docs/images/perf_blog_heldout.svg @@ -1,6 +1,6 @@ Validating 19 files 3.13.0 was not tuned on: json_document's time relative to the fastest other library per file -Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. 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). +Dot plot per file, less is better; below 1.0 json_document is the fastest fully validating library. mesh: Mac 0.72, x86-64 0.44 (serde_json (Rust)); semanticscholar-corpus: Mac 0.78, x86-64 0.63 (sonic-rs (Rust)); gsoc-2018: Mac 0.59, x86-64 0.64 (Boost.J​SON); marine_ik: Mac 0.62, x86-64 0.64 (Boost.J​SON); twitter_api_compact_response: Mac 0.91, x86-64 0.66 (yyjson); twitterescaped: Mac 0.94, x86-64 0.76 (simdjson); update-center: Mac 0.88, x86-64 0.77 (simdjson); github_events: Mac 0.78, x86-64 0.78 (simdjson); twitter_api_response: Mac 0.95, x86-64 0.81 (simdjson); twitter_timeline: Mac 0.99, x86-64 0.82 (yyjson); numbers: Mac 0.72, x86-64 0.82 (Boost.J​SON); random: Mac 0.82, x86-64 0.86 (simdjson); repeat: Mac 0.65, x86-64 0.89 (simdjson); apache_builds: Mac 1.08, x86-64 0.90 (simdjson); instruments: Mac 0.92, x86-64 0.91 (simdjson); google_maps_api_compact_response: Mac 0.87, x86-64 0.92 (yyjson); mesh.pretty: Mac 0.88, x86-64 0.93 (Boost.J​SON); tree-pretty: Mac 0.96, x86-64 0.94 (simdjson); google_maps_api_response: Mac 0.91, x86-64 1.00 (simdjson). 0.4× @@ -22,80 +22,80 @@ x86-64, G​CC 16.2 next on x86-64 mesh -mesh, Apple M1 Max: 0.68× the time of Glaze -mesh, x86-64, G​CC 16.2: 0.44× the time of serde_json (Rust) +mesh, Apple M1 Max: 0.72× the time of Glaze +mesh, x86-64, G​CC 16.2: 0.44× the time of serde_json (Rust) serde_json (Rust) -marine_ik -marine_ik, Apple M1 Max: 0.59× the time of Glaze -marine_ik, x86-64, G​CC 16.2: 0.64× the time of Boost.J​SON -Boost.J​SON -semanticscholar-corpus -semanticscholar-corpus, Apple M1 Max: 0.79× the time of sonic-rs (Rust) -semanticscholar-corpus, x86-64, G​CC 16.2: 0.65× the time of sonic-rs (Rust) -sonic-rs (Rust) -gsoc-2018 -gsoc-2018, Apple M1 Max: 0.60× the time of sonic-rs (Rust) -gsoc-2018, x86-64, G​CC 16.2: 0.66× the time of Boost.J​SON +semanticscholar-corpus +semanticscholar-corpus, Apple M1 Max: 0.78× the time of sonic-rs (Rust) +semanticscholar-corpus, x86-64, G​CC 16.2: 0.63× the time of sonic-rs (Rust) +sonic-rs (Rust) +gsoc-2018 +gsoc-2018, Apple M1 Max: 0.59× the time of sonic-rs (Rust) +gsoc-2018, x86-64, G​CC 16.2: 0.64× the time of Boost.J​SON +Boost.J​SON +marine_ik +marine_ik, Apple M1 Max: 0.62× the time of Glaze +marine_ik, x86-64, G​CC 16.2: 0.64× the time of Boost.J​SON Boost.J​SON twitter_api_compact_response twitter_api_compact_response, Apple M1 Max: 0.91× the time of yyjson -twitter_api_compact_response, x86-64, G​CC 16.2: 0.70× the time of simdjson -simdjson +twitter_api_compact_response, x86-64, G​CC 16.2: 0.66× the time of yyjson +yyjson twitterescaped -twitterescaped, Apple M1 Max: 0.93× the time of yyjson -twitterescaped, x86-64, G​CC 16.2: 0.76× the time of simdjson +twitterescaped, Apple M1 Max: 0.94× the time of yyjson +twitterescaped, x86-64, G​CC 16.2: 0.76× the time of simdjson simdjson -numbers -numbers, Apple M1 Max: 0.67× the time of Boost.J​SON -numbers, x86-64, G​CC 16.2: 0.77× the time of Boost.J​SON -Boost.J​SON +update-center +update-center, Apple M1 Max: 0.88× the time of sonic-rs (Rust) +update-center, x86-64, G​CC 16.2: 0.77× the time of simdjson +simdjson github_events -github_events, Apple M1 Max: 0.79× the time of simdjson -github_events, x86-64, G​CC 16.2: 0.77× the time of simdjson +github_events, Apple M1 Max: 0.78× the time of simdjson +github_events, x86-64, G​CC 16.2: 0.78× the time of simdjson simdjson -update-center -update-center, Apple M1 Max: 0.88× the time of sonic-rs (Rust) -update-center, x86-64, G​CC 16.2: 0.79× the time of simdjson +twitter_api_response +twitter_api_response, Apple M1 Max: 0.95× the time of yyjson +twitter_api_response, x86-64, G​CC 16.2: 0.81× the time of simdjson simdjson twitter_timeline -twitter_timeline, Apple M1 Max: 0.97× the time of yyjson -twitter_timeline, x86-64, G​CC 16.2: 0.80× the time of yyjson +twitter_timeline, Apple M1 Max: 0.99× the time of yyjson +twitter_timeline, x86-64, G​CC 16.2: 0.82× the time of yyjson yyjson -twitter_api_response -twitter_api_response, Apple M1 Max: 0.93× the time of simdjson -twitter_api_response, x86-64, G​CC 16.2: 0.81× the time of simdjson -simdjson -google_maps_api_compact_response -google_maps_api_compact_response, Apple M1 Max: 0.86× the time of yyjson -google_maps_api_compact_response, x86-64, G​CC 16.2: 0.81× the time of yyjson -yyjson +numbers +numbers, Apple M1 Max: 0.72× the time of Glaze +numbers, x86-64, G​CC 16.2: 0.82× the time of Boost.J​SON +Boost.J​SON +random +random, Apple M1 Max: 0.82× the time of simdjson +random, x86-64, G​CC 16.2: 0.86× the time of simdjson +simdjson repeat repeat, Apple M1 Max: 0.65× the time of simdjson -repeat, x86-64, G​CC 16.2: 0.82× the time of simdjson +repeat, x86-64, G​CC 16.2: 0.89× the time of simdjson simdjson -random -random, Apple M1 Max: 0.81× the time of simdjson -random, x86-64, G​CC 16.2: 0.88× the time of simdjson +apache_builds +apache_builds, Apple M1 Max: 1.08× the time of simdjson +apache_builds, x86-64, G​CC 16.2: 0.90× the time of simdjson simdjson -apache_builds -apache_builds, Apple M1 Max: 1.08× the time of simdjson -apache_builds, x86-64, G​CC 16.2: 0.90× the time of simdjson +instruments +instruments, Apple M1 Max: 0.92× the time of yyjson +instruments, x86-64, G​CC 16.2: 0.91× the time of simdjson simdjson -instruments -instruments, Apple M1 Max: 0.90× the time of yyjson -instruments, x86-64, G​CC 16.2: 0.92× the time of simdjson -simdjson +google_maps_api_compact_response +google_maps_api_compact_response, Apple M1 Max: 0.87× the time of yyjson +google_maps_api_compact_response, x86-64, G​CC 16.2: 0.92× the time of yyjson +yyjson mesh.pretty -mesh.pretty, Apple M1 Max: 0.86× the time of Glaze -mesh.pretty, x86-64, G​CC 16.2: 0.92× the time of Boost.J​SON +mesh.pretty, Apple M1 Max: 0.88× the time of Glaze +mesh.pretty, x86-64, G​CC 16.2: 0.93× the time of Boost.J​SON Boost.J​SON tree-pretty -tree-pretty, Apple M1 Max: 0.93× the time of simdjson -tree-pretty, x86-64, G​CC 16.2: 0.96× the time of simdjson +tree-pretty, Apple M1 Max: 0.96× the time of yyjson +tree-pretty, x86-64, G​CC 16.2: 0.94× the time of simdjson simdjson google_maps_api_response -google_maps_api_response, Apple M1 Max: 0.93× the time of simdjson -google_maps_api_response, x86-64, G​CC 16.2: 0.99× the time of simdjson +google_maps_api_response, Apple M1 Max: 0.91× the time of yyjson +google_maps_api_response, x86-64, G​CC 16.2: 1.00× the time of simdjson simdjson as fast as the next diff --git a/docs/mkdocs/docs/images/perf_blog_overview.svg b/docs/mkdocs/docs/images/perf_blog_overview.svg index a53442e70..95943d1db 100644 --- a/docs/mkdocs/docs/images/perf_blog_overview.svg +++ b/docs/mkdocs/docs/images/perf_blog_overview.svg @@ -1,87 +1,97 @@ Speedup of 3.13.0 over 3.12.0 per workload, Apple M1 Max, Apple clang -Horizontal bars of the speedup, more is better. twitter.json 3.1x; citm_catalog.json 4.2x; canada.json 3.4x; canada.json, indented 6.5x; citm, ordered_json 6.8x; twitter, std::ifstream 2.5x; citm, FILE* 4.7x; citm, accept() 7.1x; dump() twitter 6.7x; dump() canada 3.0x; dump(4) citm 4.7x; to_cbor() twitter 4.6x; twitter, memory 3.4x; twitter, FILE* 6.6x; diff() canada 10x; iterate canada 2.7x; copy + destroy citm 1.13x; == citm 1.06x. +Horizontal bars of the speedup, more is better. twitter.json 3.5x; citm_catalog.json 5.1x; canada.json 4.1x; canada.json, indented 7.4x; citm, ordered_json 8.2x; twitter, std::ifstream 2.5x; citm, FILE* 15x; citm, accept() 14x; dump() twitter 6.6x; dump() canada 2.9x; dump(4) citm 4.6x; to_cbor() twitter 4.4x; twitter, memory 3.5x; twitter, FILE* 9.2x; diff() canada 10x; iterate canada 1.96x; copy + destroy citm 1.11x; == citm 1.01x. Parsing Writing Reading C​BOR Values - -1× - -2× - -3× - -4× - -5× - -6× - -7× - -8× - -9× - -10× + +1× + +2× + +3× + +4× + +5× + +6× + +7× + +8× + +9× + +10× + +11× + +12× + +13× + +14× + +15× -11× +16× twitter.json -twitter.json: 3.1× -3.1× +twitter.json: 3.5× +3.5× citm_catalog.json -citm_catalog.json: 4.2× -4.2× +citm_catalog.json: 5.1× +5.1× canada.json -canada.json: 3.4× -3.4× +canada.json: 4.1× +4.1× canada.json, indented -canada.json, indented: 6.5× -6.5× +canada.json, indented: 7.4× +7.4× citm, ordered_json -citm, ordered_json: 6.8× -6.8× +citm, ordered_json: 8.2× +8.2× twitter, std::ifstream -twitter, std::ifstream: 2.5× -2.5× +twitter, std::ifstream: 2.5× +2.5× citm, FILE* -citm, FILE*: 4.7× -4.7× +citm, FILE*: 15× +15× citm, accept() -citm, accept(): 7.1× -7.1× +citm, accept(): 14× +14× dump() twitter -dump() twitter: 6.7× -6.7× +dump() twitter: 6.6× +6.6× dump() canada -dump() canada: 3.0× -3.0× +dump() canada: 2.9× +2.9× dump(4) citm -dump(4) citm: 4.7× -4.7× +dump(4) citm: 4.6× +4.6× to_cbor() twitter -to_cbor() twitter: 4.6× -4.6× +to_cbor() twitter: 4.4× +4.4× twitter, memory -twitter, memory: 3.4× -3.4× +twitter, memory: 3.5× +3.5× twitter, FILE* -twitter, FILE*: 6.6× -6.6× +twitter, FILE*: 9.2× +9.2× diff() canada -diff() canada: 10× -10× +diff() canada: 10× +10× iterate canada -iterate canada: 2.7× -2.7× +iterate canada: 1.96× +1.96× copy + destroy citm -copy + destroy citm: 1.13× -1.13× +copy + destroy citm: 1.11× +1.11× == citm -== citm: 1.06× -1.06× - +== citm: 1.01× +1.01× + speedup over 3.12.0 (3.12.0 = 1×), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_price.svg b/docs/mkdocs/docs/images/perf_blog_price.svg index 575485d56..e067880af 100644 --- a/docs/mkdocs/docs/images/perf_blog_price.svg +++ b/docs/mkdocs/docs/images/perf_blog_price.svg @@ -1,6 +1,6 @@ Compile time of two programs with 3.13.0, alone, with a precompiled header and as a module, compared with 3.12.0 -Horizontal bars of the change in compile time against 3.12.0, less is better. Apple clang 21, -O0 (debug), count_numbers, 3.13.0: +38%; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, precompiled header: -28%; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, module: -4%; Apple clang 21, -O0 (debug), server_config, 3.13.0: +34%; Apple clang 21, -O0 (debug), server_config, 3.13.0, precompiled header: -23%; Apple clang 21, -O0 (debug), server_config, 3.13.0, module: +2%; Apple clang 21, -O2, count_numbers, 3.13.0: +49%; Apple clang 21, -O2, count_numbers, 3.13.0, precompiled header: +5%; Apple clang 21, -O2, count_numbers, 3.13.0, module: +21%; Apple clang 21, -O2, server_config, 3.13.0: +45%; Apple clang 21, -O2, server_config, 3.13.0, precompiled header: +10%; Apple clang 21, -O2, server_config, 3.13.0, module: +24%; G​CC 16, -O0 (debug), count_numbers, 3.13.0: +62%; G​CC 16, -O0 (debug), count_numbers, 3.13.0, precompiled header: +10%; G​CC 16, -O0 (debug), count_numbers, 3.13.0, module: +8%; G​CC 16, -O0 (debug), server_config, 3.13.0: +47%; G​CC 16, -O0 (debug), server_config, 3.13.0, precompiled header: +14%; G​CC 16, -O0 (debug), server_config, 3.13.0, module: +15%; G​CC 16, -O2, count_numbers, 3.13.0: +58%; G​CC 16, -O2, count_numbers, 3.13.0, precompiled header: +28%; G​CC 16, -O2, count_numbers, 3.13.0, module: +25%; G​CC 16, -O2, server_config, 3.13.0: +51%; G​CC 16, -O2, server_config, 3.13.0, precompiled header: +28%; G​CC 16, -O2, server_config, 3.13.0, module: +30%. +Horizontal bars of the change in compile time against 3.12.0, less is better. Apple clang 21, -O0 (debug), count_numbers, 3.13.0: +36%; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, precompiled header: -23%; Apple clang 21, -O0 (debug), count_numbers, 3.13.0, module: -5%; Apple clang 21, -O0 (debug), server_config, 3.13.0: +36%; Apple clang 21, -O0 (debug), server_config, 3.13.0, precompiled header: -20%; Apple clang 21, -O0 (debug), server_config, 3.13.0, module: +8%; Apple clang 21, -O2, count_numbers, 3.13.0: +43%; Apple clang 21, -O2, count_numbers, 3.13.0, precompiled header: -1%; Apple clang 21, -O2, count_numbers, 3.13.0, module: +12%; Apple clang 21, -O2, server_config, 3.13.0: +42%; Apple clang 21, -O2, server_config, 3.13.0, precompiled header: +12%; Apple clang 21, -O2, server_config, 3.13.0, module: +22%; G​CC 16, -O0 (debug), count_numbers, 3.13.0: +68%; G​CC 16, -O0 (debug), count_numbers, 3.13.0, precompiled header: +12%; G​CC 16, -O0 (debug), count_numbers, 3.13.0, module: +13%; G​CC 16, -O0 (debug), server_config, 3.13.0: +50%; G​CC 16, -O0 (debug), server_config, 3.13.0, precompiled header: +15%; G​CC 16, -O0 (debug), server_config, 3.13.0, module: +16%; G​CC 16, -O2, count_numbers, 3.13.0: +60%; G​CC 16, -O2, count_numbers, 3.13.0, precompiled header: +28%; G​CC 16, -O2, count_numbers, 3.13.0, module: +27%; G​CC 16, -O2, server_config, 3.13.0: +52%; G​CC 16, -O2, server_config, 3.13.0, precompiled header: +29%; G​CC 16, -O2, server_config, 3.13.0, module: +31%. 3.13.0 @@ -15,19 +15,19 @@ count_numbers -count_numbers, Apple clang 21, -O0 (debug), 3.13.0: 1,320 ms against 955 ms with 3.12.0 (+38%) -+38% -count_numbers, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 688 ms against 955 ms with 3.12.0 (−28%) -−28% -count_numbers, Apple clang 21, -O0 (debug), 3.13.0, module: 918 ms against 955 ms with 3.12.0 (−4%) -−4% +count_numbers, Apple clang 21, -O0 (debug), 3.13.0: 1,131 ms against 831 ms with 3.12.0 (+36%) ++36% +count_numbers, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 639 ms against 831 ms with 3.12.0 (−23%) +−23% +count_numbers, Apple clang 21, -O0 (debug), 3.13.0, module: 790 ms against 831 ms with 3.12.0 (−5%) +−5% server_config -server_config, Apple clang 21, -O0 (debug), 3.13.0: 1,496 ms against 1,113 ms with 3.12.0 (+34%) -+34% -server_config, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 863 ms against 1,113 ms with 3.12.0 (−23%) -−23% -server_config, Apple clang 21, -O0 (debug), 3.13.0, module: 1,136 ms against 1,113 ms with 3.12.0 (+2%) -+2% +server_config, Apple clang 21, -O0 (debug), 3.13.0: 1,312 ms against 963 ms with 3.12.0 (+36%) ++36% +server_config, Apple clang 21, -O0 (debug), 3.13.0, precompiled header: 774 ms against 963 ms with 3.12.0 (−20%) +−20% +server_config, Apple clang 21, -O0 (debug), 3.13.0, module: 1,036 ms against 963 ms with 3.12.0 (+8%) ++8% Apple clang 21, -O2 @@ -35,19 +35,19 @@ count_numbers -count_numbers, Apple clang 21, -O2, 3.13.0: 2,081 ms against 1,393 ms with 3.12.0 (+49%) -+49% -count_numbers, Apple clang 21, -O2, 3.13.0, precompiled header: 1,458 ms against 1,393 ms with 3.12.0 (+5%) -+5% -count_numbers, Apple clang 21, -O2, 3.13.0, module: 1,685 ms against 1,393 ms with 3.12.0 (+21%) -+21% +count_numbers, Apple clang 21, -O2, 3.13.0: 1,898 ms against 1,328 ms with 3.12.0 (+43%) ++43% +count_numbers, Apple clang 21, -O2, 3.13.0, precompiled header: 1,312 ms against 1,328 ms with 3.12.0 (−1%) +−1% +count_numbers, Apple clang 21, -O2, 3.13.0, module: 1,491 ms against 1,328 ms with 3.12.0 (+12%) ++12% server_config -server_config, Apple clang 21, -O2, 3.13.0: 2,546 ms against 1,754 ms with 3.12.0 (+45%) -+45% -server_config, Apple clang 21, -O2, 3.13.0, precompiled header: 1,925 ms against 1,754 ms with 3.12.0 (+10%) -+10% -server_config, Apple clang 21, -O2, 3.13.0, module: 2,169 ms against 1,754 ms with 3.12.0 (+24%) -+24% +server_config, Apple clang 21, -O2, 3.13.0: 2,251 ms against 1,584 ms with 3.12.0 (+42%) ++42% +server_config, Apple clang 21, -O2, 3.13.0, precompiled header: 1,779 ms against 1,584 ms with 3.12.0 (+12%) ++12% +server_config, Apple clang 21, -O2, 3.13.0, module: 1,926 ms against 1,584 ms with 3.12.0 (+22%) ++22% G​CC 16, -O0 (debug) @@ -55,19 +55,19 @@ count_numbers -count_numbers, G​CC 16, -O0 (debug), 3.13.0: 2,548 ms against 1,569 ms with 3.12.0 (+62%) -+62% -count_numbers, G​CC 16, -O0 (debug), 3.13.0, precompiled header: 1,725 ms against 1,569 ms with 3.12.0 (+10%) -+10% -count_numbers, G​CC 16, -O0 (debug), 3.13.0, module: 1,700 ms against 1,569 ms with 3.12.0 (+8%) -+8% +count_numbers, G​CC 16, -O0 (debug), 3.13.0: 2,385 ms against 1,416 ms with 3.12.0 (+68%) ++68% +count_numbers, G​CC 16, -O0 (debug), 3.13.0, precompiled header: 1,593 ms against 1,416 ms with 3.12.0 (+12%) ++12% +count_numbers, G​CC 16, -O0 (debug), 3.13.0, module: 1,604 ms against 1,416 ms with 3.12.0 (+13%) ++13% server_config -server_config, G​CC 16, -O0 (debug), 3.13.0: 2,985 ms against 2,025 ms with 3.12.0 (+47%) -+47% -server_config, G​CC 16, -O0 (debug), 3.13.0, precompiled header: 2,302 ms against 2,025 ms with 3.12.0 (+14%) -+14% -server_config, G​CC 16, -O0 (debug), 3.13.0, module: 2,326 ms against 2,025 ms with 3.12.0 (+15%) -+15% +server_config, G​CC 16, -O0 (debug), 3.13.0: 2,820 ms against 1,878 ms with 3.12.0 (+50%) ++50% +server_config, G​CC 16, -O0 (debug), 3.13.0, precompiled header: 2,152 ms against 1,878 ms with 3.12.0 (+15%) ++15% +server_config, G​CC 16, -O0 (debug), 3.13.0, module: 2,180 ms against 1,878 ms with 3.12.0 (+16%) ++16% G​CC 16, -O2 @@ -75,19 +75,19 @@ count_numbers -count_numbers, G​CC 16, -O2, 3.13.0: 3,702 ms against 2,336 ms with 3.12.0 (+58%) -+58% -count_numbers, G​CC 16, -O2, 3.13.0, precompiled header: 2,987 ms against 2,336 ms with 3.12.0 (+28%) +count_numbers, G​CC 16, -O2, 3.13.0: 3,464 ms against 2,159 ms with 3.12.0 (+60%) ++60% +count_numbers, G​CC 16, -O2, 3.13.0, precompiled header: 2,765 ms against 2,159 ms with 3.12.0 (+28%) +28% -count_numbers, G​CC 16, -O2, 3.13.0, module: 2,913 ms against 2,336 ms with 3.12.0 (+25%) -+25% +count_numbers, G​CC 16, -O2, 3.13.0, module: 2,740 ms against 2,159 ms with 3.12.0 (+27%) ++27% server_config -server_config, G​CC 16, -O2, 3.13.0: 4,714 ms against 3,122 ms with 3.12.0 (+51%) -+51% -server_config, G​CC 16, -O2, 3.13.0, precompiled header: 4,006 ms against 3,122 ms with 3.12.0 (+28%) -+28% -server_config, G​CC 16, -O2, 3.13.0, module: 4,055 ms against 3,122 ms with 3.12.0 (+30%) -+30% +server_config, G​CC 16, -O2, 3.13.0: 4,388 ms against 2,878 ms with 3.12.0 (+52%) ++52% +server_config, G​CC 16, -O2, 3.13.0, precompiled header: 3,722 ms against 2,878 ms with 3.12.0 (+29%) ++29% +server_config, G​CC 16, -O2, 3.13.0, module: 3,774 ms against 2,878 ms with 3.12.0 (+31%) ++31% −40% −20% diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_accept_twitter.svg b/docs/mkdocs/docs/images/perf_blog_timeline_accept_twitter.svg index 49c77004d..5cb981ad9 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_accept_twitter.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_accept_twitter.svg @@ -1,45 +1,53 @@ accept() twitter.json: speedup over 3.12.0 by commit -accept() twitter.json: speedup over 3.12.0 at each of 353 commits, ending at 5.1x. Labeled steps, by theme: 4, 1, 4, 4, 2, 2. +accept() twitter.json: speedup over 3.12.0 at each of 360 commits, ending at 10x. Labeled steps, by theme: 4, 1, 4, 4, 2, 2, 1. accept() twitter.json 1× - -2× - -4× + +2× + +4× + +8× -8× +16× 3.12.0 - -Sep 2026 - -Oct - -#5234: 1.22× - - -4 -#5283: 2.6× - - -1 -#5592: 2.9× - - -4 -#5809: 3.7× -#5810: 4.0× - - -4 - -2 -#5853: 4.9× - - -2 + +Sep 2026 + +Oct + +Nov + +#5234: 1.22× + + +4 +#5283: 2.6× + + +1 +#5592: 2.9× + + +4 +#5809: 3.7× +#5810: 4.0× + + +4 + +2 +#5853: 4.9× + + +2 +#6031: 10× + + +1 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_dump_canada.svg b/docs/mkdocs/docs/images/perf_blog_timeline_dump_canada.svg index 91fc0e9b0..6b25402ef 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_dump_canada.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_dump_canada.svg @@ -1,6 +1,6 @@ dump() canada.json: speedup over 3.12.0 by commit -dump() canada.json: speedup over 3.12.0 at each of 353 commits, ending at 3.3x. Labeled steps, by theme: 6, 3. +dump() canada.json: speedup over 3.12.0 at each of 360 commits, ending at 3.2x. Labeled steps, by theme: 6, 3. dump() canada.json 1× @@ -12,19 +12,21 @@ 8× 3.12.0 - -Sep 2026 - -Oct - -#5285: 1.09× - - -6 -#5634: 3.1× - - -3 + +Sep 2026 + +Oct + +Nov + +#5285: 1.09× + + +6 +#5634: 3.1× + + +3 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_dump_twitter.svg b/docs/mkdocs/docs/images/perf_blog_timeline_dump_twitter.svg index 81ad49dae..3c9fc4e12 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_dump_twitter.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_dump_twitter.svg @@ -1,6 +1,6 @@ dump() twitter.json: speedup over 3.12.0 by commit -dump() twitter.json: speedup over 3.12.0 at each of 353 commits, ending at 6.8x. Labeled steps, by theme: 6, 2, 2, 2. +dump() twitter.json: speedup over 3.12.0 at each of 360 commits, ending at 6.8x. Labeled steps, by theme: 6, 2, 2, 2. dump() twitter.json 1× @@ -14,24 +14,26 @@ 16× 3.12.0 - -Sep 2026 - -Oct - -#5285: 3.3× - - -6 -#5738: 3.8× - - -2 -#5878: 4.5× -#5883: 6.8× - - -2 + +Sep 2026 + +Oct + +Nov + +#5285: 3.3× + + +6 +#5738: 3.8× + + +2 +#5878: 4.5× +#5883: 6.8× + + +2 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_from_cbor_twitter.svg b/docs/mkdocs/docs/images/perf_blog_timeline_from_cbor_twitter.svg index 278255d93..df50215a3 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_from_cbor_twitter.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_from_cbor_twitter.svg @@ -1,6 +1,6 @@ from_cbor() twitter: speedup over 3.12.0 by commit -from_cbor() twitter: speedup over 3.12.0 at each of 353 commits, ending at 2.6x. Labeled steps, by theme: 1, 4, U, U. +from_cbor() twitter: speedup over 3.12.0 at each of 360 commits, ending at 2.8x. Labeled steps, by theme: 1, 4, U, U, 4. from_cbor() twitter 1× @@ -10,27 +10,33 @@ 4× 3.12.0 - -Sep 2026 - -Oct - -#5233: 1.47× - - -1 -#5501: 2.2× - - -4 -#5185: 1.76× - - -U -#5746: 2.3× - - -U + +Sep 2026 + +Oct + +Nov + +#5233: 1.47× + + +1 +#5501: 2.2× + + +4 +#5185: 1.76× + + +U +#5746: 2.3× + + +U +#6028: 2.8× + + +4 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_parse_canada.svg b/docs/mkdocs/docs/images/perf_blog_timeline_parse_canada.svg index b325a346d..2c38213c8 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_parse_canada.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_parse_canada.svg @@ -1,44 +1,52 @@ parse() canada.json: speedup over 3.12.0 by commit -parse() canada.json: speedup over 3.12.0 at each of 353 commits, ending at 2.8x. Labeled steps, by theme: 4, 1, 3, 3, 3, 4. +parse() canada.json: speedup over 3.12.0 at each of 360 commits, ending at 3.3x. Labeled steps, by theme: 4, 1, 3, 3, 3, 4, 1. parse() canada.json 1× - -2× + +2× + +4× -4× +8× 3.12.0 - -Sep 2026 - -Oct - -#5234: 1.11× - - -4 -#5283: 1.47× - - -1 -#5617: 1.48× - - -3 -#5738: 1.95× - - -3 -#5851: 2.2× - - -3 -#5882: 2.8× - - -4 + +Sep 2026 + +Oct + +Nov + +#5234: 1.11× + + +4 +#5283: 1.47× + + +1 +#5617: 1.48× + + +3 +#5738: 1.95× + + +3 +#5851: 2.2× + + +3 +#5882: 2.8× + + +4 +#6031: 3.3× + + +1 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_parse_citm.svg b/docs/mkdocs/docs/images/perf_blog_timeline_parse_citm.svg index d4eec81df..455215fef 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_parse_citm.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_parse_citm.svg @@ -1,6 +1,6 @@ parse() citm_catalog.json: speedup over 3.12.0 by commit -parse() citm_catalog.json: speedup over 3.12.0 at each of 353 commits, ending at 3.3x. Labeled steps, by theme: 4, 1, 4, 4, 2, 4. +parse() citm_catalog.json: speedup over 3.12.0 at each of 360 commits, ending at 3.8x. Labeled steps, by theme: 4, 1, 4, 4, 2, 4, 1. parse() citm_catalog.json 1× @@ -12,34 +12,40 @@ 8× 3.12.0 - -Sep 2026 - -Oct - -#5234: 1.55× - - -4 -#5283: 1.95× - - -1 -#5592: 2.2× - - -4 -#5809: 2.4× -#5810: 2.8× - - -4 - -2 -#5882: 3.3× - - -4 + +Sep 2026 + +Oct + +Nov + +#5234: 1.55× + + +4 +#5283: 1.95× + + +1 +#5592: 2.2× + + +4 +#5809: 2.4× +#5810: 2.8× + + +4 + +2 +#5882: 3.3× + + +4 +#6031: 3.8× + + +1 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_parse_twitter_ifstream.svg b/docs/mkdocs/docs/images/perf_blog_timeline_parse_twitter_ifstream.svg index 4abcdc305..af85037ea 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_parse_twitter_ifstream.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_parse_twitter_ifstream.svg @@ -1,6 +1,6 @@ parse() twitter.json, std::ifstream: speedup over 3.12.0 by commit -parse() twitter.json, std::ifstream: speedup over 3.12.0 at each of 353 commits, ending at 2.2x. Labeled steps, by theme: 1, 1. +parse() twitter.json, std::ifstream: speedup over 3.12.0 at each of 360 commits, ending at 2.2x. Labeled steps, by theme: 1, 1. parse() twitter.json, std::ifstream 1× @@ -10,19 +10,21 @@ 4× 3.12.0 - -Sep 2026 - -Oct - -#5828: 1.97× - - -1 -#5884: 2.2× - - -1 + +Sep 2026 + +Oct + +Nov + +#5828: 1.97× + + +1 +#5884: 2.2× + + +1 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_timeline_to_cbor_twitter.svg b/docs/mkdocs/docs/images/perf_blog_timeline_to_cbor_twitter.svg index ce9e9a202..49e4e9884 100644 --- a/docs/mkdocs/docs/images/perf_blog_timeline_to_cbor_twitter.svg +++ b/docs/mkdocs/docs/images/perf_blog_timeline_to_cbor_twitter.svg @@ -1,6 +1,6 @@ to_cbor() twitter: speedup over 3.12.0 by commit -to_cbor() twitter: speedup over 3.12.0 at each of 353 commits, ending at 5.0x. Labeled steps, by theme: 4, 6, 6. +to_cbor() twitter: speedup over 3.12.0 at each of 360 commits, ending at 5.1x. Labeled steps, by theme: 4, 6, 6. to_cbor() twitter 1× @@ -12,23 +12,25 @@ 8× 3.12.0 - -Sep 2026 - -Oct - -#5328: 2.2× - - -4 -#5824: 3.5× - - -6 -#5885: 5.1× - - -6 + +Sep 2026 + +Oct + +Nov + +#5328: 2.2× + + +4 +#5824: 3.5× + + +6 +#5885: 5.1× + + +6 speedup over 3.12.0 (log scale), more is better diff --git a/docs/mkdocs/docs/images/perf_blog_usecases_mac.svg b/docs/mkdocs/docs/images/perf_blog_usecases_mac.svg index ed3f9bcae..85c7d008d 100644 --- a/docs/mkdocs/docs/images/perf_blog_usecases_mac.svg +++ b/docs/mkdocs/docs/images/perf_blog_usecases_mac.svg @@ -1,6 +1,6 @@ Use cases: time of each library relative to the fastest, Apple M1 Max -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. +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.84 doing less, N); nlohmann/json json_document write: 1.00 (0.69 doing less, N); yyjson validate: 1.41; yyjson sum: 1.14; yyjson select: 1.30; yyjson edit: 1.48; yyjson minify: 1.26 (1.18 doing less, N); yyjson write: 1.23; simdjson validate: 1.52; simdjson sum: 1.21; simdjson select: 1.34 (0.76 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.91; sonic-rs (Rust) sum: 1.54; sonic-rs (Rust) select: 1.85; sonic-rs (Rust) edit: 2.10; sonic-rs (Rust) minify: 1.93; sonic-rs (Rust) write: 2.34; sonic-cpp validate: no fully validating way (2.50 doing less, U); sonic-cpp sum: no fully validating way (1.86 doing less, U); sonic-cpp select: no fully validating way (2.34 doing less, U); sonic-cpp edit: no fully validating way (1.70 doing less, U); sonic-cpp minify: no fully validating way (2.03 doing less, U); sonic-cpp write: 1.61; simd-json (Rust) validate: 2.05; simd-json (Rust) sum: 1.63; simd-json (Rust) select: 2.39; simd-json (Rust) edit: 2.85; simd-json (Rust) minify: 3.40; simd-json (Rust) write: 3.05; nlohmann/json json validate: 1.38; nlohmann/json json sum: 1.34; nlohmann/json json select: 6.09; nlohmann/json json edit: 3.22; nlohmann/json json minify: 4.39; nlohmann/json json write: 2.03; Glaze validate: 2.03; Glaze sum: 3.88; Glaze select: 1.81 (0.81 doing less, P); Glaze edit: 4.44; Glaze minify: 5.23 (1.05 doing less, P); Glaze write: 2.19; Boost.J​SON validate: 2.54; Boost.J​SON sum: 2.02; Boost.J​SON select: 3.31; Boost.J​SON edit: 3.23; Boost.J​SON minify: 3.89; Boost.J​SON write: 3.67; serde_json (Rust) validate: 2.44 (2.21 doing less, U); serde_json (Rust) sum: 2.60; serde_json (Rust) select: 2.41 (2.26 doing less, U); serde_json (Rust) edit: 5.02; serde_json (Rust) minify: 5.85; serde_json (Rust) write: 2.90; RapidJSON validate: 4.67 (3.09 doing less, U); RapidJSON sum: 4.18 (2.89 doing less, U); RapidJSON select: 6.02 (3.93 doing less, U); RapidJSON edit: 4.85 (3.83 doing less, U); RapidJSON minify: 4.85 (3.66 doing less, U N); RapidJSON write: 5.74. validate sum select @@ -8,359 +8,359 @@ minify write nlohmann/json json_document - + 1.00 - + 1.00 - + 1.00 - + 1.00 - + 0.85 N - + 1.00 - + -0.85 +0.84 N - + 1.00 - + -0.71 +0.69 N yyjson - + -1.37 +1.41 - + -1.11 +1.14 - + -1.25 +1.30 - + -1.45 +1.48 - + -1.23 +1.26 - + -1.16 +1.18 N - + -1.26 +1.23 simdjson - + 1.52 - + -1.20 +1.21 - + -1.33 +1.34 - + -0.75 +0.76 P n/a - + 1.73 - + 0.18 P - + 2.41 sonic-rs (Rust) - + -1.93 +1.91 - + -1.53 +1.54 - + -1.83 +1.85 - + -2.08 +2.10 1.93 - + -2.38 +2.34 sonic-cpp - - -2.53 + + +2.50 U - + 1.86 U - + -2.31 +2.34 U - + -1.68 +1.70 U - + 2.03 U - + -1.59 +1.61 simd-json (Rust) - + -2.07 +2.05 - + -1.62 +1.63 - + -2.38 +2.39 - + -2.84 +2.85 3.40 - + -3.10 +3.05 -Glaze - - -2.04 +nlohmann/json json + + +1.38 - - -3.85 + + +1.34 - - -1.79 + + +6.09 - - -0.82 -P - - + -4.41 +3.22 - - -5.19 + + +4.39 - - -1.03 -P - - + -2.23 +2.03 -Boost.J​SON - - -2.56 +Glaze + + +2.03 - - -1.99 + + +3.88 - - -3.27 + + +1.81 - + + +0.81 +P + + -3.21 +4.44 - - -3.87 + + +5.23 - - -3.75 + + +1.05 +P -serde_json (Rust) - - -2.46 + + +2.19 - - -2.23 -U +Boost.J​SON + + +2.54 - - -2.59 + + +2.02 - - -2.39 + + +3.31 - - -2.24 -U - - + -4.99 +3.23 + + + +3.89 + + + +3.67 + +serde_json (Rust) + + +2.44 + + + +2.21 +U + + + +2.60 + + + +2.41 + + + +2.26 +U + + + +5.02 - -5.85 + +5.85 - - -2.95 - -nlohmann/json json - - -2.71 - - - -1.96 - - - -6.87 - - - -3.73 - - - -4.89 - - - -2.10 + + +2.90 RapidJSON - + -4.72 +4.67 - + 3.09 U - + -4.15 +4.18 - + -2.85 +2.89 U - + -5.91 +6.02 - + -3.82 +3.93 U - + -4.82 +4.85 - + -3.77 +3.83 U - + -4.86 +4.85 - + -3.60 +3.66 U N - + -5.88 +5.74 time relative to the fastest fully validating library, less is better diff --git a/docs/mkdocs/docs/images/perf_blog_usecases_x86-clang.svg b/docs/mkdocs/docs/images/perf_blog_usecases_x86-clang.svg index 8bcd534b3..5617643c1 100644 --- a/docs/mkdocs/docs/images/perf_blog_usecases_x86-clang.svg +++ b/docs/mkdocs/docs/images/perf_blog_usecases_x86-clang.svg @@ -1,6 +1,6 @@ Use cases: time of each library relative to the fastest, x86-64 with Clang 23 -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. +Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.05; 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.71 doing less, N); yyjson validate: 2.21; yyjson sum: 1.23; yyjson select: 1.40; yyjson edit: 1.48; yyjson minify: 1.27 (1.09 doing less, N); yyjson write: 1.16; sonic-cpp validate: no fully validating way (2.32 doing less, U); sonic-cpp sum: no fully validating way (1.26 doing less, U); sonic-cpp select: no fully validating way (1.50 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.33; simdjson validate: 2.06; simdjson sum: 1.19; simdjson select: 1.33 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.55 (0.18 doing less, P); simdjson write: 2.07; sonic-rs (Rust) validate: 1.90; sonic-rs (Rust) sum: 1.13; sonic-rs (Rust) select: 1.37; sonic-rs (Rust) edit: 1.90; sonic-rs (Rust) minify: 1.75; sonic-rs (Rust) write: 2.01; Boost.J​SON validate: 1.80; Boost.J​SON sum: 1.17; Boost.J​SON select: 2.19; Boost.J​SON edit: 2.37; Boost.J​SON minify: 2.65; Boost.J​SON write: 2.38; nlohmann/json json validate: 1.43; nlohmann/json json sum: 1.00; nlohmann/json json select: 6.54; nlohmann/json json edit: 3.53; nlohmann/json json minify: 4.31; nlohmann/json json write: 1.88; simd-json (Rust) validate: 3.57; simd-json (Rust) sum: 1.91; simd-json (Rust) select: 2.61; simd-json (Rust) edit: 2.88; simd-json (Rust) minify: 3.43; simd-json (Rust) write: 2.28; serde_json (Rust) validate: 2.36 (2.11 doing less, U); serde_json (Rust) sum: 2.35; serde_json (Rust) select: 1.75; serde_json (Rust) edit: 4.53; serde_json (Rust) minify: 4.99; serde_json (Rust) write: 2.22; Glaze validate: 2.24; Glaze sum: 4.24 (3.96 doing less, P); Glaze select: 1.39 (0.61 doing less, P); Glaze edit: 5.50; Glaze minify: 5.78 (0.69 doing less, P); Glaze write: 1.95; RapidJSON validate: 5.18 (3.77 doing less, U); RapidJSON sum: 3.25 (2.40 doing less, U); RapidJSON select: 4.45 (3.45 doing less, U); RapidJSON edit: 3.16 (2.68 doing less, U); RapidJSON minify: 3.43 (2.57 doing less, U N); RapidJSON write: 2.86. validate sum select @@ -8,359 +8,359 @@ minify write nlohmann/json json_document - + 1.00 - + -1.00 +1.05 - + 1.00 - + 1.00 - + 0.81 N - + 1.00 - + 0.83 N - + 1.00 - + -0.69 +0.71 N yyjson - + -1.87 +2.21 - - -1.00 + + +1.23 - + -1.23 +1.40 - + -1.43 +1.48 - + -1.16 +1.27 - + -1.00 +1.09 N - - -1.14 + + +1.16 sonic-cpp - + 2.32 U - + -1.20 +1.26 U - - -1.53 + + +1.50 U - + -1.24 +1.21 U - + -1.38 +1.36 U - + -1.28 +1.33 simdjson - + -2.03 +2.06 - - -1.13 + + +1.19 - + -1.32 +1.33 - + -0.57 +0.56 P n/a - + -1.58 +1.55 - + 0.18 P - + -2.00 +2.07 sonic-rs (Rust) - + -1.88 +1.90 - + -1.07 +1.13 - + -1.39 +1.37 1.90 - + -1.73 +1.75 - + -1.94 +2.01 Boost.J​SON - + -1.79 +1.80 - - -1.12 + + +1.17 - + -2.24 +2.19 - + -2.39 +2.37 - + -2.68 +2.65 - + -2.31 +2.38 -simd-json (Rust) - - -3.52 +nlohmann/json json + + +1.43 - - -1.80 + + +1.00 - - -2.64 + + +6.54 + + + +3.53 + + + +4.31 + + + +1.88 + +simd-json (Rust) + + +3.57 + + + +1.91 + + + +2.61 - -2.88 - - - -3.38 - - - -2.21 - -serde_json (Rust) - - -2.33 - - - -2.08 -U - - - -2.22 - - - -1.77 - - -4.54 +2.88 - + -4.92 +3.43 - + -2.15 +2.28 -Glaze - - -2.23 +serde_json (Rust) + + +2.36 - - -4.03 + + +2.11 +U - - -3.78 -P + + +2.35 - - -1.43 + + +1.75 - - -0.62 -P + + +4.53 - - -5.53 + + +4.99 - - -5.77 - - - -0.70 -P - - + -1.90 +2.22 -nlohmann/json json - - -2.77 +Glaze + + +2.24 - - -1.44 + + +4.24 - - -7.56 + + +3.96 +P - - -3.99 + + +1.39 - - -4.91 + + +0.61 +P - + + +5.50 + + + +5.78 + + + +0.69 +P + + -1.86 +1.95 RapidJSON - - -4.94 + + +5.18 - + -3.76 +3.77 U - + -2.98 +3.25 - + -2.28 +2.40 U - + -4.20 +4.45 - + -3.27 +3.45 U - + -3.06 +3.16 - + -2.60 +2.68 U - + -3.61 +3.43 - + -2.65 +2.57 U N - + -2.79 +2.86 time relative to the fastest fully validating library, less is better diff --git a/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc.svg b/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc.svg index c95d72a12..40c9cb59d 100644 --- a/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc.svg +++ b/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc.svg @@ -1,6 +1,6 @@ Use cases: time of each library relative to the fastest, x86-64 with G​CC 16.2 -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. +Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.10; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.78 doing less, N); nlohmann/json json_document minify: 1.00 (0.78 doing less, N); nlohmann/json json_document write: 1.00 (0.64 doing less, N); yyjson validate: 2.23; yyjson sum: 1.31; yyjson select: 1.37; yyjson edit: 1.43; yyjson minify: 1.24 (0.99 doing less, N); yyjson write: 1.08; sonic-cpp validate: no fully validating way (2.32 doing less, U); sonic-cpp sum: no fully validating way (1.26 doing less, U); sonic-cpp select: no fully validating way (1.43 doing less, U); sonic-cpp edit: no fully validating way (1.18 doing less, U); sonic-cpp minify: no fully validating way (1.33 doing less, U); sonic-cpp write: 1.49; simdjson validate: 2.08; simdjson sum: 1.00; simdjson select: 1.29 (0.55 doing less, P); simdjson edit: n/a; simdjson minify: 1.49 (0.17 doing less, P); simdjson write: 2.09; sonic-rs (Rust) validate: 1.98; sonic-rs (Rust) sum: 1.14; sonic-rs (Rust) select: 1.36; sonic-rs (Rust) edit: 1.87; sonic-rs (Rust) minify: 1.68; sonic-rs (Rust) write: 2.05; Boost.J​SON validate: 1.98; Boost.J​SON sum: 1.29; Boost.J​SON select: 2.21; Boost.J​SON edit: 2.33; Boost.J​SON minify: 2.54; Boost.J​SON write: 2.33; nlohmann/json json validate: 1.69; nlohmann/json json sum: 1.17; nlohmann/json json select: 6.20; nlohmann/json json edit: 3.42; nlohmann/json json minify: 4.07; nlohmann/json json write: 1.84; simd-json (Rust) validate: 3.71; simd-json (Rust) sum: 1.93; simd-json (Rust) select: 2.59; simd-json (Rust) edit: 2.83; simd-json (Rust) minify: 3.30; simd-json (Rust) write: 2.34; serde_json (Rust) validate: 2.46 (2.19 doing less, U); serde_json (Rust) sum: 2.38; serde_json (Rust) select: 1.74; serde_json (Rust) edit: 4.45; serde_json (Rust) minify: 4.80; serde_json (Rust) write: 2.27; RapidJSON validate: 3.86 (3.48 doing less, U); RapidJSON sum: 2.35 (2.15 doing less, U); RapidJSON select: 3.17 (3.02 doing less, U); RapidJSON edit: 2.49 (2.40 doing less, U); RapidJSON minify: 2.58 (2.36 doing less, U N); RapidJSON write: 2.94; Glaze validate: 2.87; Glaze sum: 4.05; Glaze select: 1.71 (0.59 doing less, P); Glaze edit: 4.48; Glaze minify: 4.56 (0.75 doing less, P); Glaze write: 1.96. validate sum select @@ -8,354 +8,354 @@ minify write nlohmann/json json_document - + 1.00 - + -1.08 +1.10 - + 1.00 - + 1.00 - + -0.79 +0.78 N - + 1.00 - + -0.80 +0.78 N - + 1.00 - + 0.64 N yyjson - + -1.94 +2.23 - - -1.14 + + +1.31 - + -1.18 +1.37 - + -1.37 +1.43 - + -1.17 +1.24 - + -0.95 +0.99 N - + -1.11 +1.08 sonic-cpp - + 2.32 U - + -1.24 +1.26 U - + -1.45 +1.43 U - + -1.21 +1.18 U - + -1.36 +1.33 U - + -1.45 +1.49 simdjson - + -2.11 +2.08 - + 1.00 - + -1.27 +1.29 - + -0.54 +0.55 P n/a - - -1.54 + + +1.49 - + 0.17 P - + -2.10 +2.09 sonic-rs (Rust) - + -1.93 +1.98 - + -1.13 +1.14 - + -1.34 +1.36 - + -1.90 +1.87 - + -1.71 +1.68 - + -2.04 +2.05 Boost.J​SON - + -1.99 +1.98 - + -1.27 +1.29 - + -2.20 +2.21 - + -2.30 +2.33 - + -2.65 +2.54 - + -2.36 +2.33 -simd-json (Rust) - - -3.62 +nlohmann/json json + + +1.69 - - -1.91 + + +1.17 - - -2.56 + + +6.20 - + -2.87 +3.42 - + -3.35 +4.07 - + -2.32 +1.84 -RapidJSON - - -3.71 +simd-json (Rust) + + +3.71 - - -3.41 -U + + +1.93 - - -2.23 + + +2.59 - - -2.09 -U + + +2.83 - - -2.91 + + +3.30 - - -2.73 -U - - - -2.41 - - - -2.34 -U - - - -2.68 - - - -2.42 -U N - - - -2.97 + + +2.34 serde_json (Rust) - + -2.39 +2.46 - + -2.14 +2.19 U - + -2.36 +2.38 - + -1.71 +1.74 - + -4.53 +4.45 - + -4.89 +4.80 - + -2.25 +2.27 -Glaze - - -2.86 +RapidJSON + + +3.86 - - -4.16 + + +3.48 +U - - -1.79 + + +2.35 - - -0.58 -P + + +2.15 +U - - -4.47 + + +3.17 - + + +3.02 +U + + + +2.49 + + + +2.40 +U + + -4.81 +2.58 - - -0.78 -P + + +2.36 +U N - - -1.96 + + +2.94 -nlohmann/json json - +Glaze + -2.96 +2.87 - - -1.70 + + +4.05 - - -7.12 + + +1.71 - + + +0.59 +P + + -3.83 +4.48 - - -4.79 + + +4.56 - + + +0.75 +P + + -1.91 +1.96 time relative to the fastest fully validating library, less is better diff --git a/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc13.svg b/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc13.svg index ebb039306..7dbf7e6a2 100644 --- a/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc13.svg +++ b/docs/mkdocs/docs/images/perf_blog_usecases_x86-gcc13.svg @@ -1,6 +1,6 @@ Use cases: time of each library relative to the fastest, x86-64 with G​CC 13 -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. +Table of relative times, libraries by use case. nlohmann/json json_document validate: 1.00; nlohmann/json json_document sum: 1.10; nlohmann/json json_document select: 1.00; nlohmann/json json_document edit: 1.00 (0.82 doing less, N); nlohmann/json json_document minify: 1.00 (0.81 doing less, N); nlohmann/json json_document write: 1.00 (0.71 doing less, N); yyjson validate: 2.06; yyjson sum: 1.44; yyjson select: 1.37; yyjson edit: 1.57; yyjson minify: 1.37 (1.03 doing less, N); yyjson write: 1.08; sonic-cpp validate: no fully validating way (2.21 doing less, U); sonic-cpp sum: no fully validating way (1.28 doing less, U); sonic-cpp select: no fully validating way (1.48 doing less, U); sonic-cpp edit: no fully validating way (1.22 doing less, U); sonic-cpp minify: no fully validating way (1.40 doing less, U); sonic-cpp write: 1.50; simdjson validate: 1.93; simdjson sum: 1.00; simdjson select: 1.29 (0.56 doing less, P); simdjson edit: n/a; simdjson minify: 1.55 (0.21 doing less, P); simdjson write: 2.09; sonic-rs (Rust) validate: 1.77; sonic-rs (Rust) sum: 1.13; sonic-rs (Rust) select: 1.33; sonic-rs (Rust) edit: 1.86; sonic-rs (Rust) minify: 1.71; sonic-rs (Rust) write: 2.00; Boost.J​SON validate: 1.83; Boost.J​SON sum: 1.30; Boost.J​SON select: 2.23; Boost.J​SON edit: 2.45; Boost.J​SON minify: 2.83; Boost.J​SON write: 2.50; nlohmann/json json validate: 1.34; nlohmann/json json sum: 1.04; nlohmann/json json select: 6.05; nlohmann/json json edit: 3.37; nlohmann/json json minify: 4.13; nlohmann/json json write: 1.85; simd-json (Rust) validate: 3.31; simd-json (Rust) sum: 1.91; simd-json (Rust) select: 2.54; simd-json (Rust) edit: 2.82; simd-json (Rust) minify: 3.35; simd-json (Rust) write: 2.28; serde_json (Rust) validate: 2.19 (1.96 doing less, U); serde_json (Rust) sum: 2.35; serde_json (Rust) select: 1.70; serde_json (Rust) edit: 4.44; serde_json (Rust) minify: 4.88; serde_json (Rust) write: 2.21; Glaze validate: 2.05; Glaze sum: 4.06 (3.93 doing less, P); Glaze select: 1.39 (0.58 doing less, P); Glaze edit: 4.71; Glaze minify: 4.96 (0.70 doing less, P); Glaze write: 1.80; RapidJSON validate: 3.88 (3.36 doing less, U); RapidJSON sum: 2.67 (2.34 doing less, U); RapidJSON select: 3.39 (3.12 doing less, U); RapidJSON edit: 2.65 (2.52 doing less, U); RapidJSON minify: 3.64 (2.61 doing less, U N); RapidJSON write: 2.95. validate sum select @@ -8,354 +8,359 @@ minify write nlohmann/json json_document - + 1.00 - + -1.08 +1.10 - + 1.00 - + 1.00 - + -0.83 +0.82 N - + 1.00 - + -0.83 +0.81 N - + 1.00 - + 0.71 N yyjson - + -1.81 +2.06 - + -1.28 +1.44 - + -1.22 +1.37 - - -1.49 + + +1.57 - + -1.27 +1.37 - + -0.97 +1.03 N - + -1.14 +1.08 sonic-cpp - + -2.24 +2.21 U - + 1.28 U - - -1.53 + + +1.48 U - + -1.26 +1.22 U - + -1.42 +1.40 U - + 1.50 simdjson - + -2.01 +1.93 - + 1.00 - + -1.35 +1.29 - + -0.57 +0.56 P n/a - + -1.58 +1.55 - + -0.22 +0.21 P - + -2.07 +2.09 sonic-rs (Rust) - + -1.79 +1.77 - + -1.11 +1.13 - + -1.37 +1.33 - + -1.91 +1.86 - + -1.73 +1.71 - + -2.07 +2.00 Boost.J​SON - + -1.88 +1.83 - + -1.33 +1.30 - + -2.30 +2.23 - - -2.55 + + +2.45 - + -2.92 +2.83 - - -2.56 + + +2.50 -simd-json (Rust) - - -3.35 +nlohmann/json json + + +1.34 - - -1.88 + + +1.04 - - -2.61 + + +6.05 - + -2.89 +3.37 - + -3.39 +4.13 - + -2.35 +1.85 -serde_json (Rust) - - -2.22 +simd-json (Rust) + + +3.31 - - -1.98 -U - - + -2.32 +1.91 - - -1.75 + + +2.54 - + -4.55 +2.82 - + -4.94 +3.35 - + 2.28 -Glaze - - -2.21 +serde_json (Rust) + + +2.19 - - -4.04 + + +1.96 +U - - -1.44 + + +2.35 - - -0.60 -P + + +1.70 - + -4.85 +4.44 - - -5.10 + + +4.88 - - -0.73 -P - - + -1.84 +2.21 -nlohmann/json json - - -2.74 +Glaze + + +2.05 - - -1.67 + + +4.06 - - -7.24 + + +3.93 +P - + + +1.39 + + + +0.58 +P + + -3.81 +4.71 - - -4.79 + + +4.96 - + + +0.70 +P + + -1.99 +1.80 RapidJSON - + -4.50 +3.88 - + -3.40 +3.36 U - + -2.98 +2.67 - + -2.29 +2.34 U - + -3.84 +3.39 - + -3.06 +3.12 U - + -2.92 +2.65 - + -2.58 +2.52 U - + 3.64 - + -2.64 +2.61 U N - + -3.11 +2.95 time relative to the fastest fully validating library, less is better diff --git a/docs/mkdocs/requirements.txt b/docs/mkdocs/requirements.txt index 783f9d88c..4014cf3b7 100644 --- a/docs/mkdocs/requirements.txt +++ b/docs/mkdocs/requirements.txt @@ -1,7 +1,7 @@ wheel==0.48.0 mkdocs==1.6.1 # documentation framework -mkdocs-git-revision-date-localized-plugin==1.6.2 # plugin "git-revision-date-localized" +mkdocs-git-revision-date-localized-plugin==1.6.3 # plugin "git-revision-date-localized" mkdocs-material==9.8.0 # theme for mkdocs mkdocs-material-extensions==1.3.1 # extensions mkdocs-minify-plugin==0.8.0 # plugin "minify" diff --git a/docs/mkdocs/scripts/figures/data/perf_heldout_validate.json b/docs/mkdocs/scripts/figures/data/perf_heldout_validate.json index ef9e601ca..19da50a13 100644 --- a/docs/mkdocs/scripts/figures/data/perf_heldout_validate.json +++ b/docs/mkdocs/scripts/figures/data/perf_heldout_validate.json @@ -1,25 +1,33 @@ { "mac": { "apache_builds": { - "Boost.JSON": { - "us": 110.1, - "variant": "SAX" - }, - "Glaze": { - "us": 85.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 261.9, - "variant": "SAX (string stream)" + "nlohmann json_document": { + "us": 39.0, + "variant": "accept" }, "nlohmann json": { - "us": 108.5, + "us": 60.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 38.7, - "variant": "accept" + "yyjson": { + "us": 54.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 36.1, + "variant": "DOM" + }, + "Glaze": { + "us": 86.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 109.7, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 265.9, + "variant": "SAX (string stream)" }, "serde_json": { "us": 87.5, @@ -29,40 +37,40 @@ "us": 55.8, "variant": "tape (copy)" }, - "simdjson": { - "us": 36.0, - "variant": "DOM" - }, "sonic-rs": { "us": 63.2, "variant": "Value" - }, - "yyjson": { - "us": 54.5, - "variant": "read" } }, "github_events": { - "Boost.JSON": { - "us": 57.3, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 35.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 141.8, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 41.7, - "variant": "accept" - }, "nlohmann json_document": { "us": 14.2, "variant": "accept" }, + "nlohmann json": { + "us": 22.8, + "variant": "accept" + }, + "yyjson": { + "us": 18.9, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 18.2, + "variant": "DOM" + }, + "Glaze": { + "us": 34.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 57.9, + "variant": "SAX" + }, + "RapidJSON": { + "us": 142.4, + "variant": "SAX (string stream)" + }, "serde_json": { "us": 35.8, "variant": "from_utf8 + IgnoredAny" @@ -71,40 +79,40 @@ "us": 27.9, "variant": "tape (copy)" }, - "simdjson": { - "us": 17.9, - "variant": "DOM" - }, "sonic-rs": { "us": 24.5, "variant": "Value" - }, - "yyjson": { - "us": 19.0, - "variant": "read" } }, "google_maps_api_compact_response": { - "Boost.JSON": { - "us": 11.8, - "variant": "SAX" + "nlohmann json_document": { + "us": 5.5, + "variant": "accept" + }, + "nlohmann json": { + "us": 8.4, + "variant": "accept" + }, + "yyjson": { + "us": 6.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 7.7, + "variant": "DOM" }, "Glaze": { "us": 12.8, "variant": "validate_json" }, + "Boost.JSON": { + "us": 11.6, + "variant": "SAX (numbers: none)" + }, "RapidJSON": { - "us": 26.5, + "us": 27.0, "variant": "SAX (default precision)" }, - "nlohmann json": { - "us": 18.1, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 5.5, - "variant": "accept" - }, "serde_json": { "us": 14.5, "variant": "from_utf8 + IgnoredAny" @@ -113,40 +121,40 @@ "us": 10.5, "variant": "tape (copy)" }, - "simdjson": { - "us": 7.6, - "variant": "DOM" - }, "sonic-rs": { "us": 8.7, "variant": "Value" - }, - "yyjson": { - "us": 6.4, - "variant": "read" } }, "google_maps_api_response": { - "Boost.JSON": { - "us": 19.3, - "variant": "SAX (numbers: none)" + "nlohmann json_document": { + "us": 8.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 14.6, + "variant": "accept" + }, + "yyjson": { + "us": 9.4, + "variant": "read" + }, + "simdjson": { + "us": 9.5, + "variant": "DOM" }, "Glaze": { "us": 17.7, "variant": "validate_json" }, + "Boost.JSON": { + "us": 19.1, + "variant": "SAX (numbers: none)" + }, "RapidJSON": { - "us": 36.6, + "us": 36.9, "variant": "SAX (string stream, default precision)" }, - "nlohmann json": { - "us": 24.5, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 8.7, - "variant": "accept" - }, "serde_json": { "us": 20.7, "variant": "from_utf8 + IgnoredAny" @@ -155,39 +163,39 @@ "us": 13.4, "variant": "tape (copy)" }, - "simdjson": { - "us": 9.4, - "variant": "DOM" - }, "sonic-rs": { "us": 14.7, "variant": "Value" - }, - "yyjson": { - "us": 9.5, - "variant": "read" } }, "gsoc-2018": { - "Boost.JSON": { - "us": 2792.0, - "variant": "SAX" - }, - "Glaze": { - "us": 1027.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 7114.9, - "variant": "SAX (string stream)" + "nlohmann json_document": { + "us": 446.6, + "variant": "accept" }, "nlohmann json": { - "us": 940.9, + "us": 604.3, "variant": "accept" }, - "nlohmann json_document": { - "us": 457.7, - "variant": "accept" + "yyjson": { + "us": 935.9, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 850.6, + "variant": "DOM" + }, + "Glaze": { + "us": 1048.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 2796.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 7071.0, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 1034.0, @@ -197,39 +205,39 @@ "us": 1246.0, "variant": "tape (copy)" }, - "simdjson": { - "us": 842.1, - "variant": "DOM" - }, "sonic-rs": { "us": 758.0, "variant": "Value" - }, - "yyjson": { - "us": 940.0, - "variant": "insitu (copy)" } }, "instruments": { - "Boost.JSON": { - "us": 155.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 136.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 366.2, - "variant": "SAX (string stream)" + "nlohmann json_document": { + "us": 71.9, + "variant": "accept" }, "nlohmann json": { - "us": 206.4, + "us": 120.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 71.5, - "variant": "accept" + "yyjson": { + "us": 78.2, + "variant": "read" + }, + "simdjson": { + "us": 83.4, + "variant": "DOM" + }, + "Glaze": { + "us": 136.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 157.1, + "variant": "SAX" + }, + "RapidJSON": { + "us": 365.0, + "variant": "SAX (string stream)" }, "serde_json": { "us": 160.0, @@ -239,39 +247,39 @@ "us": 110.0, "variant": "tape (copy)" }, - "simdjson": { - "us": 83.1, - "variant": "DOM" - }, "sonic-rs": { "us": 125.2, "variant": "Value" - }, - "yyjson": { - "us": 79.1, - "variant": "insitu (copy)" } }, "marine_ik": { - "Boost.JSON": { - "us": 2530.0, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 2292.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 3625.6, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 1413.6, + "variant": "accept" }, "nlohmann json": { - "us": 4140.6, + "us": 2149.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 1358.3, - "variant": "accept" + "yyjson": { + "us": 2366.2, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 2429.9, + "variant": "DOM" + }, + "Glaze": { + "us": 2298.1, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 2482.7, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 3595.6, + "variant": "SAX (default precision)" }, "serde_json": { "us": 2841.0, @@ -281,39 +289,39 @@ "us": 3150.2, "variant": "tape (copy)" }, - "simdjson": { - "us": 2428.0, - "variant": "DOM" - }, "sonic-rs": { "us": 2910.2, "variant": "Value" - }, - "yyjson": { - "us": 2402.7, - "variant": "insitu (copy)" } }, "mesh": { - "Boost.JSON": { - "us": 591.5, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 510.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 775.0, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 366.8, + "variant": "accept" }, "nlohmann json": { - "us": 1038.1, + "us": 640.9, "variant": "accept" }, - "nlohmann json_document": { - "us": 345.7, - "variant": "accept" + "yyjson": { + "us": 557.6, + "variant": "read" + }, + "simdjson": { + "us": 625.0, + "variant": "DOM" + }, + "Glaze": { + "us": 510.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 576.9, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 773.8, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 607.3, @@ -323,39 +331,39 @@ "us": 729.2, "variant": "tape (copy)" }, - "simdjson": { - "us": 621.1, - "variant": "DOM" - }, "sonic-rs": { "us": 768.4, "variant": "Value" - }, - "yyjson": { - "us": 557.3, - "variant": "read" } }, "mesh.pretty": { - "Boost.JSON": { - "us": 947.1, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 823.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1387.1, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 722.6, + "variant": "accept" }, "nlohmann json": { - "us": 1337.5, + "us": 838.1, "variant": "accept" }, - "nlohmann json_document": { - "us": 707.2, - "variant": "accept" + "yyjson": { + "us": 940.4, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 848.4, + "variant": "DOM" + }, + "Glaze": { + "us": 820.8, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 935.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1390.1, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 1129.2, @@ -365,40 +373,40 @@ "us": 1083.0, "variant": "tape (copy)" }, - "simdjson": { - "us": 848.6, - "variant": "DOM" - }, "sonic-rs": { "us": 1160.6, "variant": "Value" - }, - "yyjson": { - "us": 952.0, - "variant": "read" } }, "numbers": { + "nlohmann json_document": { + "us": 63.4, + "variant": "accept" + }, + "nlohmann json": { + "us": 76.1, + "variant": "accept" + }, + "yyjson": { + "us": 103.1, + "variant": "read" + }, + "simdjson": { + "us": 116.7, + "variant": "DOM" + }, + "Glaze": { + "us": 87.9, + "variant": "validate_json" + }, "Boost.JSON": { "us": 88.2, "variant": "SAX (numbers: none)" }, - "Glaze": { - "us": 88.9, - "variant": "validate_json" - }, "RapidJSON": { - "us": 132.6, + "us": 132.3, "variant": "SAX (string stream, default precision)" }, - "nlohmann json": { - "us": 148.6, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 59.3, - "variant": "accept" - }, "serde_json": { "us": 101.5, "variant": "from_utf8 + IgnoredAny" @@ -407,39 +415,39 @@ "us": 129.2, "variant": "tape (copy)" }, - "simdjson": { - "us": 116.3, - "variant": "DOM" - }, "sonic-rs": { "us": 135.6, "variant": "IgnoredAny" - }, - "yyjson": { - "us": 103.1, - "variant": "read" } }, "random": { - "Boost.JSON": { - "us": 591.4, - "variant": "SAX" - }, - "Glaze": { - "us": 439.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1199.8, - "variant": "SAX (string stream)" + "nlohmann json_document": { + "us": 207.2, + "variant": "accept" }, "nlohmann json": { - "us": 703.4, + "us": 388.8, "variant": "accept" }, - "nlohmann json_document": { - "us": 206.9, - "variant": "accept" + "yyjson": { + "us": 310.5, + "variant": "read" + }, + "simdjson": { + "us": 251.9, + "variant": "DOM" + }, + "Glaze": { + "us": 438.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 594.5, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1204.8, + "variant": "SAX (string stream)" }, "serde_json": { "us": 619.9, @@ -449,40 +457,40 @@ "us": 335.4, "variant": "tape (copy)" }, - "simdjson": { - "us": 256.2, - "variant": "DOM" - }, "sonic-rs": { "us": 265.5, "variant": "Value" - }, - "yyjson": { - "us": 316.3, - "variant": "read" } }, "repeat": { - "Boost.JSON": { - "us": 10.5, - "variant": "SAX" + "nlohmann json_document": { + "us": 2.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 5.3, + "variant": "accept" + }, + "yyjson": { + "us": 4.3, + "variant": "read" + }, + "simdjson": { + "us": 4.0, + "variant": "DOM" }, "Glaze": { "us": 6.9, "variant": "validate_json" }, + "Boost.JSON": { + "us": 10.5, + "variant": "SAX (numbers: none)" + }, "RapidJSON": { "us": 14.3, "variant": "SAX (string stream)" }, - "nlohmann json": { - "us": 8.8, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 2.6, - "variant": "accept" - }, "serde_json": { "us": 9.6, "variant": "from_utf8 + IgnoredAny" @@ -491,39 +499,39 @@ "us": 5.7, "variant": "tape (copy)" }, - "simdjson": { - "us": 4.0, - "variant": "DOM" - }, "sonic-rs": { "us": 5.6, "variant": "Value" - }, - "yyjson": { - "us": 4.3, - "variant": "read" } }, "semanticscholar-corpus": { - "Boost.JSON": { - "us": 8111.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 4538.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 20587.5, - "variant": "SAX" + "nlohmann json_document": { + "us": 2162.7, + "variant": "accept" }, "nlohmann json": { - "us": 5144.6, + "us": 2709.7, "variant": "accept" }, - "nlohmann json_document": { - "us": 2180.8, - "variant": "accept" + "yyjson": { + "us": 3549.5, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 3412.0, + "variant": "DOM" + }, + "Glaze": { + "us": 4564.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 8174.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 20621.4, + "variant": "SAX (default precision)" }, "serde_json": { "us": 4768.2, @@ -533,39 +541,39 @@ "us": 4728.2, "variant": "tape (copy)" }, - "simdjson": { - "us": 3356.2, - "variant": "DOM" - }, "sonic-rs": { "us": 2766.9, "variant": "Value" - }, - "yyjson": { - "us": 3572.0, - "variant": "insitu (copy)" } }, "tree-pretty": { - "Boost.JSON": { - "us": 24.1, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 22.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 54.0, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 10.7, + "variant": "accept" }, "nlohmann json": { - "us": 31.7, + "us": 17.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 10.5, - "variant": "accept" + "yyjson": { + "us": 11.2, + "variant": "read" + }, + "simdjson": { + "us": 11.4, + "variant": "DOM" + }, + "Glaze": { + "us": 22.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 24.5, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 53.3, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 26.3, @@ -575,40 +583,40 @@ "us": 17.9, "variant": "tape (copy)" }, - "simdjson": { - "us": 11.3, - "variant": "DOM" - }, "sonic-rs": { "us": 17.1, "variant": "Value" - }, - "yyjson": { - "us": 11.3, - "variant": "read" } }, "twitter_api_compact_response": { - "Boost.JSON": { - "us": 9.0, - "variant": "SAX" - }, - "Glaze": { - "us": 5.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 24.3, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 8.5, - "variant": "accept" - }, "nlohmann json_document": { "us": 3.0, "variant": "accept" }, + "nlohmann json": { + "us": 3.7, + "variant": "accept" + }, + "yyjson": { + "us": 3.3, + "variant": "read" + }, + "simdjson": { + "us": 3.6, + "variant": "DOM" + }, + "Glaze": { + "us": 5.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 9.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 24.4, + "variant": "SAX (default precision)" + }, "serde_json": { "us": 6.7, "variant": "from_utf8 + IgnoredAny" @@ -617,39 +625,39 @@ "us": 5.3, "variant": "tape (copy)" }, - "simdjson": { - "us": 3.5, - "variant": "DOM" - }, "sonic-rs": { "us": 4.7, "variant": "Value" - }, - "yyjson": { - "us": 3.3, - "variant": "read" } }, "twitter_api_response": { - "Boost.JSON": { - "us": 11.7, - "variant": "SAX" - }, - "Glaze": { - "us": 7.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 29.7, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 4.1, + "variant": "accept" }, "nlohmann json": { - "us": 11.3, + "us": 5.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 4.0, - "variant": "accept" + "yyjson": { + "us": 4.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 4.5, + "variant": "DOM" + }, + "Glaze": { + "us": 7.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 11.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 30.4, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 9.2, @@ -659,39 +667,39 @@ "us": 6.7, "variant": "tape (copy)" }, - "simdjson": { - "us": 4.3, - "variant": "DOM" - }, "sonic-rs": { "us": 7.7, "variant": "Value" - }, - "yyjson": { - "us": 4.3, - "variant": "read" } }, "twitter_timeline": { - "Boost.JSON": { - "us": 39.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 29.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 100.1, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 15.1, + "variant": "accept" }, "nlohmann json": { - "us": 44.0, + "us": 20.2, "variant": "accept" }, - "nlohmann json_document": { - "us": 15.0, - "variant": "accept" + "yyjson": { + "us": 15.3, + "variant": "read" + }, + "simdjson": { + "us": 18.2, + "variant": "DOM" + }, + "Glaze": { + "us": 29.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 39.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 100.6, + "variant": "SAX (default precision)" }, "serde_json": { "us": 33.5, @@ -701,39 +709,39 @@ "us": 29.0, "variant": "tape (copy)" }, - "simdjson": { - "us": 17.6, - "variant": "DOM" - }, "sonic-rs": { "us": 26.4, "variant": "Value" - }, - "yyjson": { - "us": 15.5, - "variant": "insitu (copy)" } }, "twitterescaped": { - "Boost.JSON": { - "us": 552.2, - "variant": "SAX" - }, - "Glaze": { - "us": 469.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1182.0, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 203.2, + "variant": "accept" }, "nlohmann json": { - "us": 679.7, + "us": 361.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 201.8, - "variant": "accept" + "yyjson": { + "us": 216.4, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 263.3, + "variant": "DOM" + }, + "Glaze": { + "us": 476.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 554.3, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1195.8, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 397.9, @@ -743,39 +751,39 @@ "us": 537.4, "variant": "tape (copy)" }, - "simdjson": { - "us": 265.6, - "variant": "DOM" - }, "sonic-rs": { "us": 313.3, "variant": "Value" - }, - "yyjson": { - "us": 217.6, - "variant": "read" } }, "update-center": { - "Boost.JSON": { - "us": 539.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 414.1, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1321.5, - "variant": "SAX" + "nlohmann json_document": { + "us": 193.9, + "variant": "accept" }, "nlohmann json": { - "us": 441.2, + "us": 228.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 194.5, - "variant": "accept" + "yyjson": { + "us": 243.3, + "variant": "read" + }, + "simdjson": { + "us": 240.8, + "variant": "DOM" + }, + "Glaze": { + "us": 422.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 542.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1322.4, + "variant": "SAX (raw numbers)" }, "serde_json": { "us": 406.5, @@ -785,2418 +793,2410 @@ "us": 313.2, "variant": "tape (copy)" }, - "simdjson": { - "us": 239.9, - "variant": "DOM" - }, "sonic-rs": { "us": 221.2, "variant": "Value" - }, - "yyjson": { - "us": 239.7, - "variant": "read (raw numbers)" } } }, "x86-clang": { "apache_builds": { - "Boost.JSON": { - "us": 103.5, - "variant": "SAX" - }, - "Glaze": { - "us": 133.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 350.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 54.0, + "variant": "accept" }, "nlohmann json": { - "us": 120.8, + "us": 77.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 54.6, - "variant": "accept" + "yyjson": { + "us": 86.2, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 63.2, + "variant": "DOM" + }, + "Glaze": { + "us": 136.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 103.4, + "variant": "SAX" + }, + "RapidJSON": { + "us": 351.1, + "variant": "insitu (copy)" }, "serde_json": { "us": 105.1, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 135.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 62.8, - "variant": "DOM" - }, "sonic-rs": { "us": 88.3, "variant": "Value" }, - "yyjson": { - "us": 85.4, - "variant": "read" + "simd-json": { + "us": 135.6, + "variant": "tape (copy)" } }, "github_events": { - "Boost.JSON": { - "us": 39.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 59.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 182.1, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 22.0, + "variant": "accept" }, "nlohmann json": { - "us": 56.9, + "us": 29.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 22.6, - "variant": "accept" + "yyjson": { + "us": 35.4, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 28.5, + "variant": "DOM" + }, + "Glaze": { + "us": 62.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 39.6, + "variant": "SAX" + }, + "RapidJSON": { + "us": 183.7, + "variant": "insitu (copy)" }, "serde_json": { "us": 49.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 55.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 28.3, - "variant": "DOM" - }, "sonic-rs": { "us": 40.9, "variant": "Value" }, - "yyjson": { - "us": 33.5, - "variant": "read" + "simd-json": { + "us": 55.1, + "variant": "tape (copy)" } }, "google_maps_api_compact_response": { - "Boost.JSON": { - "us": 14.7, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 19.6, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 43.1, - "variant": "SAX (default precision)" - }, - "nlohmann json": { - "us": 25.5, - "variant": "accept" - }, "nlohmann json_document": { "us": 9.7, "variant": "accept" }, + "nlohmann json": { + "us": 12.6, + "variant": "accept" + }, + "yyjson": { + "us": 11.4, + "variant": "read" + }, + "simdjson": { + "us": 13.3, + "variant": "DOM" + }, + "Glaze": { + "us": 20.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 15.3, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 46.2, + "variant": "SAX (default precision)" + }, "serde_json": { "us": 16.8, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 23.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 12.9, - "variant": "DOM" - }, "sonic-rs": { "us": 13.8, "variant": "IgnoredAny" }, - "yyjson": { - "us": 10.7, - "variant": "read" + "simd-json": { + "us": 23.9, + "variant": "tape (copy)" } }, "google_maps_api_response": { - "Boost.JSON": { - "us": 26.4, - "variant": "SAX" - }, - "Glaze": { - "us": 27.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 53.9, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 14.8, + "variant": "accept" }, "nlohmann json": { - "us": 33.5, + "us": 20.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 14.1, - "variant": "accept" + "yyjson": { + "us": 17.9, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 15.5, + "variant": "DOM" + }, + "Glaze": { + "us": 28.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 28.5, + "variant": "SAX" + }, + "RapidJSON": { + "us": 57.5, + "variant": "SAX (default precision)" }, "serde_json": { "us": 27.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 30.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 14.5, - "variant": "DOM" - }, "sonic-rs": { "us": 23.2, "variant": "Value" }, - "yyjson": { - "us": 17.1, - "variant": "insitu (copy)" + "simd-json": { + "us": 30.6, + "variant": "tape (copy)" } }, "gsoc-2018": { - "Boost.JSON": { - "us": 1007.5, - "variant": "SAX" - }, - "Glaze": { - "us": 1854.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 8248.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 677.4, + "variant": "accept" }, "nlohmann json": { - "us": 1280.8, + "us": 808.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 703.5, - "variant": "accept" + "yyjson": { + "us": 1835.9, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1201.1, + "variant": "DOM" + }, + "Glaze": { + "us": 1982.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1009.6, + "variant": "SAX" + }, + "RapidJSON": { + "us": 8414.0, + "variant": "insitu (copy)" }, "serde_json": { "us": 1498.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 2236.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1186.2, - "variant": "DOM" - }, "sonic-rs": { "us": 1134.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1837.1, - "variant": "read" + "simd-json": { + "us": 2236.9, + "variant": "tape (copy)" } }, "instruments": { - "Boost.JSON": { - "us": 218.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 204.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 531.6, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 113.7, + "variant": "accept" }, "nlohmann json": { - "us": 277.8, + "us": 160.7, "variant": "accept" }, - "nlohmann json_document": { - "us": 116.3, - "variant": "accept" + "yyjson": { + "us": 154.8, + "variant": "read" + }, + "simdjson": { + "us": 125.9, + "variant": "DOM" + }, + "Glaze": { + "us": 220.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 222.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 565.9, + "variant": "insitu (copy)" }, "serde_json": { "us": 212.4, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 290.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 126.8, - "variant": "DOM" - }, "sonic-rs": { "us": 229.3, "variant": "IgnoredAny" }, - "yyjson": { - "us": 152.2, - "variant": "read" + "simd-json": { + "us": 290.1, + "variant": "tape (copy)" } }, "marine_ik": { - "Boost.JSON": { - "us": 2905.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 3265.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 5252.5, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 2128.6, + "variant": "accept" }, "nlohmann json": { - "us": 6658.6, + "us": 3388.1, "variant": "accept" }, - "nlohmann json_document": { - "us": 2137.5, - "variant": "accept" + "yyjson": { + "us": 4017.5, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 4486.4, + "variant": "DOM" + }, + "Glaze": { + "us": 3211.8, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 2911.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 5253.8, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 4072.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 6669.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 4447.6, - "variant": "DOM" - }, "sonic-rs": { "us": 4661.1, "variant": "IgnoredAny" }, - "yyjson": { - "us": 4052.9, - "variant": "read" + "simd-json": { + "us": 6669.1, + "variant": "tape (copy)" } }, "mesh": { - "Boost.JSON": { - "us": 989.9, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 711.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1357.4, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 493.4, + "variant": "accept" }, "nlohmann json": { - "us": 1804.1, + "us": 961.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 493.5, - "variant": "accept" + "yyjson": { + "us": 1029.7, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 1190.9, + "variant": "DOM" + }, + "Glaze": { + "us": 762.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 988.7, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1318.3, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 910.5, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 1691.7, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1208.9, - "variant": "DOM" - }, "sonic-rs": { "us": 1221.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1033.2, - "variant": "read" + "simd-json": { + "us": 1691.7, + "variant": "tape (copy)" } }, "mesh.pretty": { - "Boost.JSON": { - "us": 1145.4, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 1155.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 2100.1, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 1155.4, + "variant": "accept" }, "nlohmann json": { - "us": 2025.6, + "us": 1304.9, "variant": "accept" }, - "nlohmann json_document": { - "us": 1101.0, - "variant": "accept" + "yyjson": { + "us": 1869.2, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 1458.4, + "variant": "DOM" + }, + "Glaze": { + "us": 1202.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1153.9, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 2127.5, + "variant": "SAX (default precision)" }, "serde_json": { "us": 1483.7, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 2119.0, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1453.5, - "variant": "DOM" - }, "sonic-rs": { "us": 1558.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1819.0, - "variant": "insitu (copy)" + "simd-json": { + "us": 2119.0, + "variant": "tape (copy)" } }, "numbers": { - "Boost.JSON": { - "us": 79.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 125.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 273.3, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 71.8, + "variant": "accept" }, "nlohmann json": { - "us": 247.3, + "us": 129.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 71.6, - "variant": "accept" + "yyjson": { + "us": 184.7, + "variant": "read" + }, + "simdjson": { + "us": 206.9, + "variant": "DOM" + }, + "Glaze": { + "us": 135.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 74.9, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 281.5, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 163.8, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 261.5, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 197.2, - "variant": "DOM" - }, "sonic-rs": { "us": 161.8, "variant": "IgnoredAny" }, - "yyjson": { - "us": 178.6, - "variant": "read" + "simd-json": { + "us": 261.5, + "variant": "tape (copy)" } }, "random": { - "Boost.JSON": { - "us": 877.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 658.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1755.9, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 347.6, + "variant": "accept" }, "nlohmann json": { - "us": 929.7, + "us": 496.0, "variant": "accept" }, - "nlohmann json_document": { - "us": 351.7, - "variant": "accept" + "yyjson": { + "us": 525.1, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 406.2, + "variant": "DOM" + }, + "Glaze": { + "us": 667.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 887.5, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1770.7, + "variant": "insitu (copy)" }, "serde_json": { "us": 772.3, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 840.2, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 406.7, - "variant": "DOM" - }, "sonic-rs": { "us": 502.9, "variant": "Value" }, - "yyjson": { - "us": 525.8, - "variant": "insitu (copy)" + "simd-json": { + "us": 840.2, + "variant": "tape (copy)" } }, "repeat": { - "Boost.JSON": { - "us": 14.0, - "variant": "SAX" - }, - "Glaze": { - "us": 10.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 21.2, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 5.0, + "variant": "accept" }, "nlohmann json": { - "us": 11.2, + "us": 6.3, "variant": "accept" }, - "nlohmann json_document": { - "us": 5.4, - "variant": "accept" + "yyjson": { + "us": 7.8, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 5.8, + "variant": "DOM" + }, + "Glaze": { + "us": 9.8, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 13.4, + "variant": "SAX" + }, + "RapidJSON": { + "us": 19.6, + "variant": "SAX (default precision)" }, "serde_json": { "us": 12.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 5.9, - "variant": "DOM" - }, "sonic-rs": { "us": 7.6, "variant": "Value" }, - "yyjson": { - "us": 8.0, - "variant": "read" + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" } }, "semanticscholar-corpus": { - "Boost.JSON": { - "us": 5393.9, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 7948.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 27685.7, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 3164.9, + "variant": "accept" }, "nlohmann json": { - "us": 7751.9, + "us": 3760.1, "variant": "accept" }, - "nlohmann json_document": { - "us": 3290.4, - "variant": "accept" + "yyjson": { + "us": 6136.0, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 7348.8, + "variant": "DOM" + }, + "Glaze": { + "us": 8036.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 5265.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 26363.5, + "variant": "insitu (copy)" }, "serde_json": { "us": 6204.0, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 9501.2, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 7595.2, - "variant": "DOM" - }, "sonic-rs": { "us": 4777.5, "variant": "IgnoredAny" }, - "yyjson": { - "us": 6209.1, - "variant": "read" + "simd-json": { + "us": 9501.2, + "variant": "tape (copy)" } }, "tree-pretty": { - "Boost.JSON": { - "us": 34.1, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 37.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 72.2, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 18.2, + "variant": "accept" }, "nlohmann json": { - "us": 46.5, + "us": 25.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 18.3, - "variant": "accept" + "yyjson": { + "us": 19.5, + "variant": "read" + }, + "simdjson": { + "us": 18.7, + "variant": "DOM" + }, + "Glaze": { + "us": 36.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 33.9, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 71.9, + "variant": "SAX (default precision)" }, "serde_json": { "us": 37.3, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 36.8, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 18.8, - "variant": "DOM" - }, "sonic-rs": { "us": 29.1, "variant": "Value" }, - "yyjson": { - "us": 19.5, - "variant": "read" + "simd-json": { + "us": 36.8, + "variant": "tape (copy)" } }, "twitter_api_compact_response": { - "Boost.JSON": { - "us": 6.7, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 10.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 33.6, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 4.1, + "variant": "accept" }, "nlohmann json": { - "us": 12.5, + "us": 5.2, "variant": "accept" }, - "nlohmann json_document": { - "us": 4.2, - "variant": "accept" + "yyjson": { + "us": 5.8, + "variant": "read" + }, + "simdjson": { + "us": 5.8, + "variant": "DOM" + }, + "Glaze": { + "us": 10.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 6.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 35.5, + "variant": "insitu (copy)" }, "serde_json": { "us": 7.8, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 5.8, - "variant": "DOM" - }, "sonic-rs": { "us": 6.7, "variant": "IgnoredAny" }, - "yyjson": { - "us": 5.8, - "variant": "read" + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" } }, "twitter_api_response": { - "Boost.JSON": { - "us": 10.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 13.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 41.0, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 16.0, - "variant": "accept" - }, "nlohmann json_document": { "us": 5.7, "variant": "accept" }, - "serde_json": { - "us": 12.2, - "variant": "from_utf8 + IgnoredAny" + "nlohmann json": { + "us": 7.8, + "variant": "accept" }, - "simd-json": { - "us": 13.3, - "variant": "tape (copy)" + "yyjson": { + "us": 7.8, + "variant": "read" }, "simdjson": { "us": 7.0, "variant": "DOM" }, + "Glaze": { + "us": 13.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 10.9, + "variant": "SAX" + }, + "RapidJSON": { + "us": 42.6, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 12.2, + "variant": "from_utf8 + IgnoredAny" + }, "sonic-rs": { "us": 11.2, "variant": "IgnoredAny" }, - "yyjson": { - "us": 7.8, - "variant": "read" + "simd-json": { + "us": 13.3, + "variant": "tape (copy)" } }, "twitter_timeline": { - "Boost.JSON": { - "us": 40.7, - "variant": "SAX" - }, - "Glaze": { - "us": 49.2, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 142.3, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 23.2, + "variant": "accept" }, "nlohmann json": { - "us": 70.3, + "us": 29.8, "variant": "accept" }, - "nlohmann json_document": { - "us": 23.5, - "variant": "accept" - }, - "serde_json": { - "us": 45.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 54.3, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 30.3, - "variant": "DOM" - }, - "sonic-rs": { - "us": 43.0, - "variant": "IgnoredAny" - }, "yyjson": { "us": 27.8, "variant": "insitu (copy)" - } - }, - "twitterescaped": { - "Boost.JSON": { - "us": 608.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 713.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1767.7, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 962.0, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 312.4, - "variant": "accept" - }, - "serde_json": { - "us": 702.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 856.4, - "variant": "tape (copy)" }, "simdjson": { - "us": 407.8, + "us": 29.4, "variant": "DOM" }, - "sonic-rs": { - "us": 628.9, - "variant": "Value" - }, - "yyjson": { - "us": 443.2, - "variant": "insitu (copy)" - } - }, - "update-center": { - "Boost.JSON": { - "us": 342.2, - "variant": "SAX" - }, - "Glaze": { - "us": 671.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1826.3, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 610.8, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 263.1, - "variant": "accept" - }, - "serde_json": { - "us": 490.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 650.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 336.1, - "variant": "DOM" - }, - "sonic-rs": { - "us": 383.6, - "variant": "Value" - }, - "yyjson": { - "us": 447.4, - "variant": "read" - } - } - }, - "x86-gcc": { - "apache_builds": { - "Boost.JSON": { - "us": 107.9, - "variant": "SAX" - }, - "Glaze": { - "us": 152.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 218.8, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 140.0, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 54.4, - "variant": "accept" - }, - "serde_json": { - "us": 105.1, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 135.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 60.2, - "variant": "DOM" - }, - "sonic-rs": { - "us": 88.3, - "variant": "Value" - }, - "yyjson": { - "us": 87.6, - "variant": "read (raw numbers)" - } - }, - "github_events": { - "Boost.JSON": { - "us": 40.5, - "variant": "SAX" - }, - "Glaze": { - "us": 72.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 112.5, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 56.7, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 21.1, - "variant": "accept" - }, - "serde_json": { - "us": 49.2, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 55.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 27.3, - "variant": "DOM" - }, - "sonic-rs": { - "us": 40.9, - "variant": "Value" - }, - "yyjson": { - "us": 35.5, - "variant": "read" - } - }, - "google_maps_api_compact_response": { - "Boost.JSON": { - "us": 15.3, - "variant": "SAX" - }, - "Glaze": { - "us": 21.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 24.7, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 26.7, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 8.9, - "variant": "accept" - }, - "serde_json": { - "us": 16.8, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 23.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 12.4, - "variant": "DOM" - }, - "sonic-rs": { - "us": 13.8, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 11.0, - "variant": "read" - } - }, - "google_maps_api_response": { - "Boost.JSON": { - "us": 26.9, - "variant": "SAX" - }, - "Glaze": { - "us": 34.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 34.9, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 36.0, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 13.7, - "variant": "accept" - }, - "serde_json": { - "us": 27.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 30.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 13.8, - "variant": "DOM" - }, - "sonic-rs": { - "us": 23.2, - "variant": "Value" - }, - "yyjson": { - "us": 17.5, - "variant": "read" - } - }, - "gsoc-2018": { - "Boost.JSON": { - "us": 1063.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 2067.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 4555.7, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 1317.1, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 698.7, - "variant": "accept" - }, - "serde_json": { - "us": 1498.2, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 2236.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1171.7, - "variant": "DOM" - }, - "sonic-rs": { - "us": 1134.0, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 1876.5, - "variant": "read (raw numbers)" - } - }, - "instruments": { - "Boost.JSON": { - "us": 218.3, - "variant": "SAX" - }, - "Glaze": { - "us": 265.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 357.3, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 301.6, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 107.2, - "variant": "accept" - }, - "serde_json": { - "us": 212.4, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 290.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 117.0, - "variant": "DOM" - }, - "sonic-rs": { - "us": 229.3, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 158.0, - "variant": "read" - } - }, - "marine_ik": { - "Boost.JSON": { - "us": 2936.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 4986.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 5353.3, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 7267.5, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 1883.9, - "variant": "accept" - }, - "serde_json": { - "us": 4072.2, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 6669.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 4193.5, - "variant": "DOM" - }, - "sonic-rs": { - "us": 4661.1, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 4094.9, - "variant": "read (raw numbers)" - } - }, - "mesh": { - "Boost.JSON": { - "us": 954.5, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 1065.1, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1381.1, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 1867.2, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 399.6, - "variant": "accept" - }, - "serde_json": { - "us": 910.5, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 1691.7, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1103.6, - "variant": "DOM" - }, - "sonic-rs": { - "us": 1221.0, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 1059.7, - "variant": "read (raw numbers)" - } - }, - "mesh.pretty": { - "Boost.JSON": { - "us": 1046.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 1822.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1889.2, - "variant": "SAX (default precision)" - }, - "nlohmann json": { - "us": 2329.2, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 967.1, - "variant": "accept" - }, - "serde_json": { - "us": 1483.7, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 2119.0, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1340.0, - "variant": "DOM" - }, - "sonic-rs": { - "us": 1558.0, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 1651.7, - "variant": "read (raw numbers)" - } - }, - "numbers": { - "Boost.JSON": { - "us": 81.6, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 146.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 238.2, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 275.1, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 63.0, - "variant": "accept" - }, - "serde_json": { - "us": 163.8, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 261.5, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 195.1, - "variant": "DOM" - }, - "sonic-rs": { - "us": 161.8, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 171.1, - "variant": "read (raw numbers)" - } - }, - "random": { - "Boost.JSON": { - "us": 896.6, - "variant": "SAX" - }, - "Glaze": { - "us": 743.7, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1079.9, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 1020.4, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 350.4, - "variant": "accept" - }, - "serde_json": { - "us": 772.3, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 840.2, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 398.9, - "variant": "DOM" - }, - "sonic-rs": { - "us": 502.9, - "variant": "Value" - }, - "yyjson": { - "us": 572.4, - "variant": "insitu (copy)" - } - }, - "repeat": { - "Boost.JSON": { - "us": 13.4, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 15.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 14.3, - "variant": "SAX (string stream)" - }, - "nlohmann json": { - "us": 13.5, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 5.1, - "variant": "accept" - }, - "serde_json": { - "us": 12.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 6.2, - "variant": "DOM" - }, - "sonic-rs": { - "us": 7.6, - "variant": "Value" - }, - "yyjson": { - "us": 8.3, - "variant": "read" - } - }, - "semanticscholar-corpus": { - "Boost.JSON": { - "us": 5631.3, - "variant": "SAX" - }, - "Glaze": { - "us": 8153.6, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 14768.7, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 6955.2, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 3095.4, - "variant": "accept" - }, - "serde_json": { - "us": 6204.0, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 9501.2, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 7535.9, - "variant": "DOM" - }, - "sonic-rs": { - "us": 4777.5, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 6311.8, - "variant": "insitu (copy)" - } - }, - "tree-pretty": { - "Boost.JSON": { - "us": 35.4, - "variant": "SAX" - }, "Glaze": { "us": 48.9, "variant": "validate_json" }, - "RapidJSON": { - "us": 62.8, - "variant": "SAX (string stream, default precision)" - }, - "nlohmann json": { - "us": 48.0, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 16.9, - "variant": "accept" - }, - "serde_json": { - "us": 37.3, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 36.8, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 17.6, - "variant": "DOM" - }, - "sonic-rs": { - "us": 29.1, - "variant": "Value" - }, - "yyjson": { - "us": 21.4, - "variant": "insitu (copy)" - } - }, - "twitter_api_compact_response": { "Boost.JSON": { - "us": 7.1, + "us": 38.9, "variant": "SAX (numbers: none)" }, - "Glaze": { - "us": 10.3, - "variant": "validate_json" - }, "RapidJSON": { - "us": 18.9, + "us": 137.7, "variant": "insitu (copy)" }, - "nlohmann json": { - "us": 11.8, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 4.0, - "variant": "accept" - }, - "serde_json": { - "us": 7.8, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 5.7, - "variant": "DOM" - }, - "sonic-rs": { - "us": 6.7, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 5.8, - "variant": "insitu (copy)" - } - }, - "twitter_api_response": { - "Boost.JSON": { - "us": 11.0, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 16.6, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 26.9, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 16.5, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 5.5, - "variant": "accept" - }, - "serde_json": { - "us": 12.2, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 13.3, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 6.8, - "variant": "DOM" - }, - "sonic-rs": { - "us": 11.2, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 8.0, - "variant": "read" - } - }, - "twitter_timeline": { - "Boost.JSON": { - "us": 42.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 57.1, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 83.7, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 60.5, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 23.1, - "variant": "accept" - }, "serde_json": { "us": 45.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 54.3, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 29.8, - "variant": "DOM" - }, "sonic-rs": { "us": 43.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 28.9, - "variant": "read (raw numbers)" + "simd-json": { + "us": 54.3, + "variant": "tape (copy)" } }, "twitterescaped": { - "Boost.JSON": { - "us": 669.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 753.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1109.2, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 305.3, + "variant": "accept" }, "nlohmann json": { - "us": 908.9, + "us": 479.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 306.8, - "variant": "accept" + "yyjson": { + "us": 442.9, + "variant": "read" + }, + "simdjson": { + "us": 409.1, + "variant": "DOM" + }, + "Glaze": { + "us": 723.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 613.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1733.5, + "variant": "insitu (copy)" }, "serde_json": { "us": 702.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 856.4, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 401.4, - "variant": "DOM" - }, "sonic-rs": { "us": 628.9, "variant": "Value" }, - "yyjson": { - "us": 474.3, - "variant": "read" + "simd-json": { + "us": 856.4, + "variant": "tape (copy)" } }, "update-center": { - "Boost.JSON": { - "us": 366.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 719.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1010.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 260.8, + "variant": "accept" }, "nlohmann json": { - "us": 580.2, + "us": 313.3, "variant": "accept" }, - "nlohmann json_document": { - "us": 256.4, - "variant": "accept" + "yyjson": { + "us": 449.6, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 356.2, + "variant": "DOM" + }, + "Glaze": { + "us": 714.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 341.2, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1969.1, + "variant": "insitu (copy)" }, "serde_json": { "us": 490.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 650.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 325.6, - "variant": "DOM" - }, "sonic-rs": { "us": 383.6, "variant": "Value" }, - "yyjson": { - "us": 459.2, - "variant": "read" + "simd-json": { + "us": 650.9, + "variant": "tape (copy)" } } }, - "x86-gcc13": { + "x86-gcc": { "apache_builds": { - "Boost.JSON": { - "us": 110.3, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 134.8, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 314.3, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 54.5, + "variant": "accept" }, "nlohmann json": { - "us": 125.9, + "us": 102.0, "variant": "accept" }, - "nlohmann json_document": { - "us": 57.4, - "variant": "accept" + "yyjson": { + "us": 88.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 60.4, + "variant": "DOM" + }, + "Glaze": { + "us": 151.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 107.9, + "variant": "SAX" + }, + "RapidJSON": { + "us": 213.6, + "variant": "insitu (copy)" }, "serde_json": { "us": 105.1, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 135.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 62.4, - "variant": "DOM" - }, "sonic-rs": { "us": 88.3, "variant": "Value" }, - "yyjson": { - "us": 87.8, - "variant": "read" + "simd-json": { + "us": 135.6, + "variant": "tape (copy)" } }, "github_events": { - "Boost.JSON": { - "us": 42.4, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 63.1, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 166.0, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 21.5, + "variant": "accept" }, "nlohmann json": { - "us": 55.2, + "us": 30.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 21.8, - "variant": "accept" + "yyjson": { + "us": 37.9, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 27.6, + "variant": "DOM" + }, + "Glaze": { + "us": 72.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 41.1, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 114.9, + "variant": "insitu (copy)" }, "serde_json": { "us": 49.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 55.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 27.8, - "variant": "DOM" - }, "sonic-rs": { "us": 40.9, "variant": "Value" }, - "yyjson": { - "us": 35.3, - "variant": "insitu (copy)" + "simd-json": { + "us": 55.1, + "variant": "tape (copy)" } }, "google_maps_api_compact_response": { - "Boost.JSON": { - "us": 16.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 18.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 39.3, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 10.1, + "variant": "accept" }, "nlohmann json": { - "us": 26.4, + "us": 12.2, "variant": "accept" }, - "nlohmann json_document": { - "us": 9.4, - "variant": "accept" + "yyjson": { + "us": 11.0, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 12.6, + "variant": "DOM" + }, + "Glaze": { + "us": 21.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 15.3, + "variant": "SAX" + }, + "RapidJSON": { + "us": 27.1, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 16.8, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 23.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 13.3, - "variant": "DOM" - }, "sonic-rs": { "us": 13.8, "variant": "IgnoredAny" }, - "yyjson": { - "us": 11.3, - "variant": "read" + "simd-json": { + "us": 23.9, + "variant": "tape (copy)" } }, "google_maps_api_response": { - "Boost.JSON": { - "us": 27.7, - "variant": "SAX" - }, - "Glaze": { - "us": 27.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 50.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 13.9, + "variant": "accept" }, "nlohmann json": { - "us": 34.9, + "us": 28.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 15.0, - "variant": "accept" + "yyjson": { + "us": 17.8, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 13.9, + "variant": "DOM" + }, + "Glaze": { + "us": 34.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 27.2, + "variant": "SAX" + }, + "RapidJSON": { + "us": 36.8, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 27.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 30.6, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 14.7, - "variant": "DOM" - }, "sonic-rs": { "us": 23.2, "variant": "Value" }, - "yyjson": { - "us": 17.9, - "variant": "insitu (copy)" + "simd-json": { + "us": 30.6, + "variant": "tape (copy)" } }, "gsoc-2018": { - "Boost.JSON": { - "us": 1107.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 1802.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 7484.8, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 674.6, + "variant": "accept" }, "nlohmann json": { - "us": 1251.3, + "us": 860.2, "variant": "accept" }, - "nlohmann json_document": { - "us": 713.0, - "variant": "accept" + "yyjson": { + "us": 1848.1, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1171.9, + "variant": "DOM" + }, + "Glaze": { + "us": 1958.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1061.5, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 4475.0, + "variant": "insitu (copy)" }, "serde_json": { "us": 1498.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 2236.9, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1174.1, - "variant": "DOM" - }, "sonic-rs": { "us": 1134.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1848.0, - "variant": "read" + "simd-json": { + "us": 2236.9, + "variant": "tape (copy)" } }, "instruments": { - "Boost.JSON": { - "us": 228.5, - "variant": "SAX" - }, - "Glaze": { - "us": 211.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 492.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 106.7, + "variant": "accept" }, "nlohmann json": { - "us": 286.5, + "us": 219.8, "variant": "accept" }, - "nlohmann json_document": { - "us": 115.2, - "variant": "accept" + "yyjson": { + "us": 159.6, + "variant": "read" + }, + "simdjson": { + "us": 116.7, + "variant": "DOM" + }, + "Glaze": { + "us": 269.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 218.9, + "variant": "SAX" + }, + "RapidJSON": { + "us": 388.1, + "variant": "SAX (string stream)" }, "serde_json": { "us": 212.4, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 290.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 125.4, - "variant": "DOM" - }, "sonic-rs": { "us": 229.3, "variant": "IgnoredAny" }, - "yyjson": { - "us": 162.9, - "variant": "insitu (copy)" + "simd-json": { + "us": 290.1, + "variant": "tape (copy)" } }, "marine_ik": { - "Boost.JSON": { - "us": 2904.2, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 3706.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 5805.4, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 1888.7, + "variant": "accept" }, "nlohmann json": { - "us": 6931.7, + "us": 3642.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 2131.0, - "variant": "accept" + "yyjson": { + "us": 3999.8, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 4270.6, + "variant": "DOM" + }, + "Glaze": { + "us": 5003.8, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 2951.2, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 5338.3, + "variant": "SAX (default precision)" }, "serde_json": { "us": 4072.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 6669.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 4381.3, - "variant": "DOM" - }, "sonic-rs": { "us": 4661.1, "variant": "IgnoredAny" }, - "yyjson": { - "us": 4173.8, - "variant": "read (raw numbers)" + "simd-json": { + "us": 6669.1, + "variant": "tape (copy)" } }, "mesh": { - "Boost.JSON": { - "us": 992.3, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 718.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1460.7, - "variant": "SAX (string stream, default precision)" + "nlohmann json_document": { + "us": 400.3, + "variant": "accept" }, "nlohmann json": { - "us": 1875.7, + "us": 1245.5, "variant": "accept" }, - "nlohmann json_document": { - "us": 433.4, - "variant": "accept" + "yyjson": { + "us": 1051.7, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1104.5, + "variant": "DOM" + }, + "Glaze": { + "us": 1062.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 988.1, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1373.3, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 910.5, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 1691.7, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1171.5, - "variant": "DOM" - }, "sonic-rs": { "us": 1221.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1120.2, - "variant": "read (raw numbers)" + "simd-json": { + "us": 1691.7, + "variant": "tape (copy)" } }, "mesh.pretty": { - "Boost.JSON": { - "us": 1061.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 1269.4, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1934.3, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 972.9, + "variant": "accept" }, "nlohmann json": { - "us": 2283.0, + "us": 1604.4, "variant": "accept" }, - "nlohmann json_document": { - "us": 939.0, - "variant": "accept" + "yyjson": { + "us": 1664.1, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1338.0, + "variant": "DOM" + }, + "Glaze": { + "us": 1826.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1048.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1893.5, + "variant": "SAX (default precision)" }, "serde_json": { "us": 1483.7, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 2119.0, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 1379.5, - "variant": "DOM" - }, "sonic-rs": { "us": 1558.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 1728.8, - "variant": "read (raw numbers)" + "simd-json": { + "us": 2119.0, + "variant": "tape (copy)" } }, "numbers": { - "Boost.JSON": { - "us": 79.8, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 116.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 284.2, - "variant": "SAX (default precision)" + "nlohmann json_document": { + "us": 66.6, + "variant": "accept" }, "nlohmann json": { - "us": 270.5, + "us": 150.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 67.1, - "variant": "accept" + "yyjson": { + "us": 178.8, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 207.1, + "variant": "DOM" + }, + "Glaze": { + "us": 164.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 81.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 252.2, + "variant": "SAX (string stream, default precision)" }, "serde_json": { "us": 163.8, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 261.5, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 199.2, - "variant": "DOM" - }, "sonic-rs": { "us": 161.8, "variant": "IgnoredAny" }, - "yyjson": { - "us": 178.0, - "variant": "read (raw numbers)" + "simd-json": { + "us": 261.5, + "variant": "tape (copy)" } }, "random": { - "Boost.JSON": { - "us": 960.8, - "variant": "SAX" - }, - "Glaze": { - "us": 667.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1453.5, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 342.1, + "variant": "accept" }, "nlohmann json": { - "us": 979.1, + "us": 560.6, "variant": "accept" }, - "nlohmann json_document": { - "us": 363.7, - "variant": "accept" + "yyjson": { + "us": 568.5, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 396.9, + "variant": "DOM" + }, + "Glaze": { + "us": 743.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 888.8, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1079.5, + "variant": "SAX (string stream)" }, "serde_json": { "us": 772.3, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 840.2, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 416.6, - "variant": "DOM" - }, "sonic-rs": { "us": 502.9, "variant": "Value" }, - "yyjson": { - "us": 568.1, - "variant": "insitu (copy)" + "simd-json": { + "us": 840.2, + "variant": "tape (copy)" } }, "repeat": { - "Boost.JSON": { - "us": 14.4, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 11.9, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 17.8, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 5.0, + "variant": "accept" }, "nlohmann json": { - "us": 11.1, + "us": 8.0, "variant": "accept" }, - "nlohmann json_document": { - "us": 5.7, - "variant": "accept" - }, - "serde_json": { - "us": 12.6, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 6.2, - "variant": "DOM" - }, - "sonic-rs": { - "us": 7.6, - "variant": "Value" - }, "yyjson": { - "us": 9.2, + "us": 8.2, "variant": "read" - } - }, - "semanticscholar-corpus": { - "Boost.JSON": { - "us": 6232.4, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 7583.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 24043.7, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 7063.7, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 3214.2, - "variant": "accept" - }, - "serde_json": { - "us": 6204.0, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 9501.2, - "variant": "tape (copy)" }, "simdjson": { - "us": 7505.0, + "us": 5.6, "variant": "DOM" }, - "sonic-rs": { - "us": 4777.5, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 6346.4, - "variant": "insitu (copy)" - } - }, - "tree-pretty": { - "Boost.JSON": { - "us": 36.0, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 37.1, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 81.4, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 45.9, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 17.9, - "variant": "accept" - }, - "serde_json": { - "us": 37.3, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 36.8, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 19.0, - "variant": "DOM" - }, - "sonic-rs": { - "us": 29.1, - "variant": "Value" - }, - "yyjson": { - "us": 21.6, - "variant": "insitu (copy)" - } - }, - "twitter_api_compact_response": { - "Boost.JSON": { - "us": 7.9, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 9.5, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 29.5, - "variant": "insitu (copy)" - }, - "nlohmann json": { - "us": 11.6, - "variant": "accept" - }, - "nlohmann json_document": { - "us": 4.1, - "variant": "accept" - }, - "serde_json": { - "us": 7.8, - "variant": "from_utf8 + IgnoredAny" - }, - "simd-json": { - "us": 11.1, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 6.1, - "variant": "DOM" - }, - "sonic-rs": { - "us": 6.7, - "variant": "IgnoredAny" - }, - "yyjson": { - "us": 6.0, - "variant": "read" - } - }, - "twitter_api_response": { - "Boost.JSON": { - "us": 11.8, - "variant": "SAX (numbers: none)" - }, "Glaze": { "us": 13.9, "variant": "validate_json" }, + "Boost.JSON": { + "us": 13.1, + "variant": "SAX" + }, "RapidJSON": { - "us": 37.2, - "variant": "insitu (copy)" + "us": 14.0, + "variant": "SAX (string stream)" + }, + "serde_json": { + "us": 12.6, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 7.6, + "variant": "Value" + }, + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" + } + }, + "semanticscholar-corpus": { + "nlohmann json_document": { + "us": 3023.4, + "variant": "accept" }, "nlohmann json": { - "us": 16.4, + "us": 3504.2, "variant": "accept" }, + "yyjson": { + "us": 6291.0, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 7439.2, + "variant": "DOM" + }, + "Glaze": { + "us": 8140.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 5563.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 14559.4, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 6204.0, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 4777.5, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 9501.2, + "variant": "tape (copy)" + } + }, + "tree-pretty": { "nlohmann json_document": { - "us": 5.8, + "us": 16.7, "variant": "accept" }, + "nlohmann json": { + "us": 33.1, + "variant": "accept" + }, + "yyjson": { + "us": 21.4, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 17.7, + "variant": "DOM" + }, + "Glaze": { + "us": 48.8, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 35.0, + "variant": "SAX" + }, + "RapidJSON": { + "us": 64.1, + "variant": "SAX (string stream, default precision)" + }, + "serde_json": { + "us": 37.3, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 29.1, + "variant": "Value" + }, + "simd-json": { + "us": 36.8, + "variant": "tape (copy)" + } + }, + "twitter_api_compact_response": { + "nlohmann json_document": { + "us": 3.9, + "variant": "accept" + }, + "nlohmann json": { + "us": 4.9, + "variant": "accept" + }, + "yyjson": { + "us": 5.9, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 5.9, + "variant": "DOM" + }, + "Glaze": { + "us": 10.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 7.1, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 19.8, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 7.8, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 6.7, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" + } + }, + "twitter_api_response": { + "nlohmann json_document": { + "us": 5.5, + "variant": "accept" + }, + "nlohmann json": { + "us": 8.3, + "variant": "accept" + }, + "yyjson": { + "us": 8.1, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 6.8, + "variant": "DOM" + }, + "Glaze": { + "us": 17.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 11.1, + "variant": "SAX" + }, + "RapidJSON": { + "us": 28.7, + "variant": "insitu (copy)" + }, "serde_json": { "us": 12.2, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 13.3, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 7.0, - "variant": "DOM" - }, "sonic-rs": { "us": 11.2, "variant": "IgnoredAny" }, - "yyjson": { - "us": 7.8, - "variant": "insitu (copy)" + "simd-json": { + "us": 13.3, + "variant": "tape (copy)" } }, "twitter_timeline": { - "Boost.JSON": { - "us": 46.1, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 49.0, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 125.4, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 22.6, + "variant": "accept" }, "nlohmann json": { - "us": 61.3, + "us": 27.0, "variant": "accept" }, - "nlohmann json_document": { - "us": 23.6, - "variant": "accept" + "yyjson": { + "us": 27.7, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 28.7, + "variant": "DOM" + }, + "Glaze": { + "us": 54.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 41.6, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 83.8, + "variant": "insitu (copy)" }, "serde_json": { "us": 45.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 54.3, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 30.3, - "variant": "DOM" - }, "sonic-rs": { "us": 43.0, "variant": "IgnoredAny" }, - "yyjson": { - "us": 28.7, - "variant": "insitu (copy)" + "simd-json": { + "us": 54.3, + "variant": "tape (copy)" } }, "twitterescaped": { - "Boost.JSON": { - "us": 689.9, - "variant": "SAX (numbers: none)" - }, - "Glaze": { - "us": 735.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1459.9, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 303.2, + "variant": "accept" }, "nlohmann json": { - "us": 877.4, + "us": 451.7, "variant": "accept" }, - "nlohmann json_document": { - "us": 310.5, - "variant": "accept" + "yyjson": { + "us": 472.0, + "variant": "read" + }, + "simdjson": { + "us": 400.8, + "variant": "DOM" + }, + "Glaze": { + "us": 752.2, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 632.4, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1110.3, + "variant": "insitu (copy)" }, "serde_json": { "us": 702.6, "variant": "from_utf8 + IgnoredAny" }, - "simd-json": { - "us": 856.4, - "variant": "tape (copy)" - }, - "simdjson": { - "us": 442.8, - "variant": "DOM" - }, "sonic-rs": { "us": 628.9, "variant": "Value" }, - "yyjson": { - "us": 500.9, - "variant": "read" + "simd-json": { + "us": 856.4, + "variant": "tape (copy)" } }, "update-center": { - "Boost.JSON": { - "us": 406.2, - "variant": "SAX" - }, - "Glaze": { - "us": 681.3, - "variant": "validate_json" - }, - "RapidJSON": { - "us": 1555.0, - "variant": "insitu (copy)" + "nlohmann json_document": { + "us": 252.0, + "variant": "accept" }, "nlohmann json": { - "us": 578.8, + "us": 314.7, "variant": "accept" }, - "nlohmann json_document": { - "us": 261.3, - "variant": "accept" + "yyjson": { + "us": 479.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 328.0, + "variant": "DOM" + }, + "Glaze": { + "us": 778.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 389.5, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1093.2, + "variant": "insitu (copy)" }, "serde_json": { "us": 490.6, "variant": "from_utf8 + IgnoredAny" }, + "sonic-rs": { + "us": 383.6, + "variant": "Value" + }, "simd-json": { "us": 650.9, "variant": "tape (copy)" + } + } + }, + "x86-gcc13": { + "apache_builds": { + "nlohmann json_document": { + "us": 56.9, + "variant": "accept" + }, + "nlohmann json": { + "us": 85.2, + "variant": "accept" + }, + "yyjson": { + "us": 88.6, + "variant": "read (raw numbers)" }, "simdjson": { - "us": 332.3, + "us": 62.5, "variant": "DOM" }, + "Glaze": { + "us": 134.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 110.4, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 214.9, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 105.1, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 88.3, + "variant": "Value" + }, + "simd-json": { + "us": 135.6, + "variant": "tape (copy)" + } + }, + "github_events": { + "nlohmann json_document": { + "us": 22.1, + "variant": "accept" + }, + "nlohmann json": { + "us": 28.3, + "variant": "accept" + }, + "yyjson": { + "us": 36.1, + "variant": "read" + }, + "simdjson": { + "us": 28.2, + "variant": "DOM" + }, + "Glaze": { + "us": 62.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 42.4, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 111.6, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 49.2, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 40.9, + "variant": "Value" + }, + "simd-json": { + "us": 55.1, + "variant": "tape (copy)" + } + }, + "google_maps_api_compact_response": { + "nlohmann json_document": { + "us": 9.3, + "variant": "accept" + }, + "nlohmann json": { + "us": 10.8, + "variant": "accept" + }, + "yyjson": { + "us": 11.3, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 13.1, + "variant": "DOM" + }, + "Glaze": { + "us": 18.5, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 17.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 28.1, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 16.8, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 13.8, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 23.9, + "variant": "tape (copy)" + } + }, + "google_maps_api_response": { + "nlohmann json_document": { + "us": 15.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 24.8, + "variant": "accept" + }, + "yyjson": { + "us": 18.1, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 14.7, + "variant": "DOM" + }, + "Glaze": { + "us": 28.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 28.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 42.1, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 27.6, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 23.2, + "variant": "Value" + }, + "simd-json": { + "us": 30.6, + "variant": "tape (copy)" + } + }, + "gsoc-2018": { + "nlohmann json_document": { + "us": 720.2, + "variant": "accept" + }, + "nlohmann json": { + "us": 889.9, + "variant": "accept" + }, + "yyjson": { + "us": 1858.1, + "variant": "read" + }, + "simdjson": { + "us": 1237.4, + "variant": "DOM" + }, + "Glaze": { + "us": 1819.1, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1106.1, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 4722.4, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 1498.2, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 1134.0, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 2236.9, + "variant": "tape (copy)" + } + }, + "instruments": { + "nlohmann json_document": { + "us": 118.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 188.4, + "variant": "accept" + }, + "yyjson": { + "us": 164.5, + "variant": "read" + }, + "simdjson": { + "us": 125.8, + "variant": "DOM" + }, + "Glaze": { + "us": 212.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 229.6, + "variant": "SAX" + }, + "RapidJSON": { + "us": 407.8, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 212.4, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 229.3, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 290.1, + "variant": "tape (copy)" + } + }, + "marine_ik": { + "nlohmann json_document": { + "us": 2221.1, + "variant": "accept" + }, + "nlohmann json": { + "us": 3740.8, + "variant": "accept" + }, + "yyjson": { + "us": 4330.3, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 4321.0, + "variant": "DOM" + }, + "Glaze": { + "us": 3462.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 2933.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 5981.5, + "variant": "SAX (string stream, default precision)" + }, + "serde_json": { + "us": 4072.2, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 4661.1, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 6669.1, + "variant": "tape (copy)" + } + }, + "mesh": { + "nlohmann json_document": { + "us": 449.0, + "variant": "accept" + }, + "nlohmann json": { + "us": 1111.9, + "variant": "accept" + }, + "yyjson": { + "us": 1117.9, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1173.1, + "variant": "DOM" + }, + "Glaze": { + "us": 713.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 984.3, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1493.5, + "variant": "SAX (string stream, default precision)" + }, + "serde_json": { + "us": 910.5, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 1221.0, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 1691.7, + "variant": "tape (copy)" + } + }, + "mesh.pretty": { + "nlohmann json_document": { + "us": 1152.4, + "variant": "accept" + }, + "nlohmann json": { + "us": 1364.0, + "variant": "accept" + }, + "yyjson": { + "us": 1690.7, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 1377.1, + "variant": "DOM" + }, + "Glaze": { + "us": 1241.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 1043.2, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1870.0, + "variant": "SAX (default precision)" + }, + "serde_json": { + "us": 1483.7, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 1558.0, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 2119.0, + "variant": "tape (copy)" + } + }, + "numbers": { + "nlohmann json_document": { + "us": 67.4, + "variant": "accept" + }, + "nlohmann json": { + "us": 146.1, + "variant": "accept" + }, + "yyjson": { + "us": 188.9, + "variant": "read (raw numbers)" + }, + "simdjson": { + "us": 208.6, + "variant": "DOM" + }, + "Glaze": { + "us": 120.7, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 79.9, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 308.1, + "variant": "SAX (default precision)" + }, + "serde_json": { + "us": 163.8, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 161.8, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 261.5, + "variant": "tape (copy)" + } + }, + "random": { + "nlohmann json_document": { + "us": 364.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 477.8, + "variant": "accept" + }, + "yyjson": { + "us": 566.6, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 416.9, + "variant": "DOM" + }, + "Glaze": { + "us": 655.6, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 963.4, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1058.8, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 772.3, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 502.9, + "variant": "Value" + }, + "simd-json": { + "us": 840.2, + "variant": "tape (copy)" + } + }, + "repeat": { + "nlohmann json_document": { + "us": 5.5, + "variant": "accept" + }, + "nlohmann json": { + "us": 6.0, + "variant": "accept" + }, + "yyjson": { + "us": 8.7, + "variant": "read" + }, + "simdjson": { + "us": 6.2, + "variant": "DOM" + }, + "Glaze": { + "us": 10.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 14.1, + "variant": "SAX" + }, + "RapidJSON": { + "us": 14.5, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 12.6, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 7.6, + "variant": "Value" + }, + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" + } + }, + "semanticscholar-corpus": { + "nlohmann json_document": { + "us": 3121.2, + "variant": "accept" + }, + "nlohmann json": { + "us": 3501.2, + "variant": "accept" + }, + "yyjson": { + "us": 6309.2, + "variant": "read" + }, + "simdjson": { + "us": 7757.0, + "variant": "DOM" + }, + "Glaze": { + "us": 7540.9, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 6195.2, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 14601.4, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 6204.0, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 4777.5, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 9501.2, + "variant": "tape (copy)" + } + }, + "tree-pretty": { + "nlohmann json_document": { + "us": 17.9, + "variant": "accept" + }, + "nlohmann json": { + "us": 27.4, + "variant": "accept" + }, + "yyjson": { + "us": 21.4, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 19.0, + "variant": "DOM" + }, + "Glaze": { + "us": 37.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 35.4, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 68.6, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 37.3, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 29.1, + "variant": "Value" + }, + "simd-json": { + "us": 36.8, + "variant": "tape (copy)" + } + }, + "twitter_api_compact_response": { + "nlohmann json_document": { + "us": 4.0, + "variant": "accept" + }, + "nlohmann json": { + "us": 4.8, + "variant": "accept" + }, + "yyjson": { + "us": 6.1, + "variant": "read" + }, + "simdjson": { + "us": 5.9, + "variant": "DOM" + }, + "Glaze": { + "us": 9.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 8.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 18.8, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 7.8, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 6.7, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 11.1, + "variant": "tape (copy)" + } + }, + "twitter_api_response": { + "nlohmann json_document": { + "us": 5.6, + "variant": "accept" + }, + "nlohmann json": { + "us": 7.1, + "variant": "accept" + }, + "yyjson": { + "us": 7.9, + "variant": "read" + }, + "simdjson": { + "us": 7.1, + "variant": "DOM" + }, + "Glaze": { + "us": 14.1, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 12.0, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 26.6, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 12.2, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 11.2, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 13.3, + "variant": "tape (copy)" + } + }, + "twitter_timeline": { + "nlohmann json_document": { + "us": 23.4, + "variant": "accept" + }, + "nlohmann json": { + "us": 26.6, + "variant": "accept" + }, + "yyjson": { + "us": 28.5, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 30.0, + "variant": "DOM" + }, + "Glaze": { + "us": 50.0, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 46.1, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 85.3, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 45.6, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 43.0, + "variant": "IgnoredAny" + }, + "simd-json": { + "us": 54.3, + "variant": "tape (copy)" + } + }, + "twitterescaped": { + "nlohmann json_document": { + "us": 309.4, + "variant": "accept" + }, + "nlohmann json": { + "us": 447.3, + "variant": "accept" + }, + "yyjson": { + "us": 497.6, + "variant": "insitu (copy)" + }, + "simdjson": { + "us": 440.2, + "variant": "DOM" + }, + "Glaze": { + "us": 739.4, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 735.8, + "variant": "SAX (numbers: none)" + }, + "RapidJSON": { + "us": 1082.5, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 702.6, + "variant": "from_utf8 + IgnoredAny" + }, + "sonic-rs": { + "us": 628.9, + "variant": "Value" + }, + "simd-json": { + "us": 856.4, + "variant": "tape (copy)" + } + }, + "update-center": { + "nlohmann json_document": { + "us": 258.1, + "variant": "accept" + }, + "nlohmann json": { + "us": 293.9, + "variant": "accept" + }, + "yyjson": { + "us": 462.3, + "variant": "read" + }, + "simdjson": { + "us": 355.2, + "variant": "DOM" + }, + "Glaze": { + "us": 682.3, + "variant": "validate_json" + }, + "Boost.JSON": { + "us": 408.2, + "variant": "SAX" + }, + "RapidJSON": { + "us": 1034.3, + "variant": "insitu (copy)" + }, + "serde_json": { + "us": 490.6, + "variant": "from_utf8 + IgnoredAny" + }, "sonic-rs": { "us": 383.6, "variant": "Value" }, - "yyjson": { - "us": 461.4, - "variant": "read" + "simd-json": { + "us": 650.9, + "variant": "tape (copy)" } } } -} \ No newline at end of file +} diff --git a/docs/mkdocs/scripts/figures/data/perf_suite.csv b/docs/mkdocs/scripts/figures/data/perf_suite.csv index 9ef488544..ccb4d7d57 100644 --- a/docs/mkdocs/scripts/figures/data/perf_suite.csv +++ b/docs/mkdocs/scripts/figures/data/perf_suite.csv @@ -1,183 +1,183 @@ benchmark,unit,3.12.0,3.13.0,speedup -Accept/canada,ns,1.29488e+07,2.3494e+06,5.512 -Accept/citm_catalog,ns,6.53091e+06,923408,7.073 -Accept/floats,ns,1.15702e+08,2.26771e+07,5.102 -Accept/jeopardy,ns,2.20758e+08,5.92935e+07,3.723 -Accept/signed_ints,ns,1.17358e+08,2.82947e+07,4.148 -Accept/small_signed_ints,ns,5.75113e+07,1.80352e+07,3.189 -Accept/twitter,ns,2.51345e+06,483792,5.195 -Accept/unsigned_ints,ns,1.16297e+08,2.97181e+07,3.913 -BinaryToCbor/1024,ns,298.444,107.095,2.787 -BinaryToCbor/128,ns,248.661,116.711,2.131 -BinaryToCbor/16,ns,244.687,49.6325,4.930 -BinaryToCbor/16384,ns,952.115,413.62,2.302 -BinaryToCbor/2048,ns,328.419,125.183,2.624 -BinaryToCbor/256,ns,264.678,90.8937,2.912 -BinaryToCbor/32,ns,251.632,50.4059,4.992 -BinaryToCbor/32768,ns,1541.05,802.721,1.920 -BinaryToCbor/4096,ns,406.957,177.412,2.294 -BinaryToCbor/512,ns,289.876,102.063,2.840 -BinaryToCbor/64,ns,254.928,84.6434,3.012 -BinaryToCbor/8,ns,247.618,49.3761,5.015 -BinaryToCbor/8192,ns,514.281,256.456,2.005 -Copy/canada,ns,3.78116e+06,2.92734e+06,1.292 -Copy/citm_catalog,ns,1.7026e+06,1.51108e+06,1.127 -Copy/twitter,ns,840201,767400,1.095 -CopyAssign/canada,ns,3.86416e+06,2.94449e+06,1.312 -CopyAssign/citm_catalog,ns,1.76529e+06,1.58608e+06,1.113 -CopyAssign/twitter,ns,884985,790724,1.119 -CopyOnly/canada,ns,1.60229e+06,1.57507e+06,1.017 -CopyOnly/citm_catalog,ns,786244,817481,0.962 -CopyOnly/twitter,ns,423631,420649,1.007 -CopyRing/canada,ns,3.86433e+06,2.99657e+06,1.290 -CopyRing/citm_catalog,ns,1.84434e+06,1.60579e+06,1.149 -CopyRing/twitter,ns,951510,818035,1.163 -DestroyOnly/canada,ns,2.22138e+06,1.40157e+06,1.585 -DestroyOnly/citm_catalog,ns,926244,711471,1.302 -DestroyOnly/twitter,ns,416055,336082,1.238 -Diff/canada,ns,3.98055e+07,3.80466e+06,10.462 -Diff/citm_catalog,ns,7.1859e+06,1.12351e+06,6.396 -Diff/twitter,ns,5.11261e+06,661062,7.734 -Dump/canada / -,ns,6.95189e+06,2.33647e+06,2.975 -Dump/canada / 4,ns,9.09882e+06,3.10291e+06,2.932 -Dump/citm_catalog / -,ns,1.42117e+06,295678,4.806 -Dump/citm_catalog / 4,ns,1.98589e+06,422600,4.699 -Dump/floats / -,ns,6.4332e+07,2.37747e+07,2.706 -Dump/floats / 4,ns,7.25695e+07,2.46207e+07,2.947 -Dump/jeopardy / -,ns,2.06771e+08,3.17494e+07,6.513 -Dump/jeopardy / 4,ns,2.27967e+08,3.53626e+07,6.447 -Dump/signed_ints / -,ns,2.40551e+07,1.0736e+07,2.241 -Dump/signed_ints / 4,ns,3.25192e+07,1.1333e+07,2.869 -Dump/small_signed_ints / -,ns,1.81398e+07,8.12457e+06,2.233 -Dump/small_signed_ints / 4,ns,2.55296e+07,8.80796e+06,2.898 -Dump/twitter / -,ns,1.43584e+06,214252,6.702 -Dump/twitter / 4,ns,1.63183e+06,253042,6.449 -Dump/unsigned_ints / -,ns,2.39512e+07,8.11916e+06,2.950 -Dump/unsigned_ints / 4,ns,3.22761e+07,8.58925e+06,3.758 -Equal/canada,ns,473767,349284,1.356 -Equal/citm_catalog,ns,279548,263329,1.062 -Equal/twitter,ns,145555,131450,1.107 -Flatten/canada,ns,2.94475e+07,1.11184e+07,2.649 -Flatten/citm_catalog,ns,6.7155e+06,3.07325e+06,2.185 -Flatten/twitter,ns,3.66077e+06,2.10599e+06,1.738 -FlattenOrdered/citm_catalog,ns,2.62026e+08,1.42645e+06,183.691 -FlattenOrdered/twitter,ns,5.1275e+07,890275,57.595 -FromBinaryBuffer/bjdata / canada,ns,8.81972e+06,4.16727e+06,2.116 -FromBinaryBuffer/bjdata / twitter,ns,3.32045e+06,976266,3.401 -FromBinaryBuffer/bjdata_optimized / canada,ns,9.2386e+06,2.47996e+06,3.725 -FromBinaryBuffer/bjdata_optimized / twitter,ns,3.30526e+06,985625,3.353 -FromBinaryBuffer/bson / canada,ns,1.00372e+07,4.31554e+06,2.326 -FromBinaryBuffer/bson / citm_catalog,ns,4.07611e+06,1.60647e+06,2.537 -FromBinaryBuffer/bson / twitter,ns,3.25635e+06,936933,3.476 -FromBinaryBuffer/cbor / canada,ns,8.89562e+06,2.11517e+06,4.206 -FromBinaryBuffer/cbor / citm_catalog,ns,3.94234e+06,1.45242e+06,2.714 -FromBinaryBuffer/cbor / floats,ns,3.0473e+07,5.47969e+06,5.561 -FromBinaryBuffer/cbor / jeopardy,ns,3.73185e+08,1.14934e+08,3.247 -FromBinaryBuffer/cbor / signed_ints,ns,3.66673e+07,9.88892e+06,3.708 -FromBinaryBuffer/cbor / twitter,ns,3.23196e+06,953415,3.390 -FromBinaryBuffer/msgpack / canada,ns,8.85983e+06,2.12215e+06,4.175 -FromBinaryBuffer/msgpack / citm_catalog,ns,3.84901e+06,1.4503e+06,2.654 -FromBinaryBuffer/msgpack / jeopardy,ns,3.73143e+08,1.11034e+08,3.361 -FromBinaryBuffer/msgpack / twitter,ns,3.2397e+06,954811,3.393 -FromBinaryBuffer/ubjson / canada,ns,8.84059e+06,4.20402e+06,2.103 -FromBinaryBuffer/ubjson / citm_catalog,ns,4.0708e+06,1.78566e+06,2.280 -FromBinaryBuffer/ubjson / jeopardy,ns,3.79093e+08,1.17024e+08,3.239 -FromBinaryBuffer/ubjson / twitter,ns,3.29948e+06,981057,3.363 -FromBinaryBuffer/ubjson_optimized / canada,ns,8.88909e+06,2.42788e+06,3.661 -FromBinaryBuffer/ubjson_optimized / twitter,ns,3.29784e+06,974810,3.383 -FromBinaryFile/bjdata / twitter,ns,1.09208e+07,1.94678e+06,5.610 -FromBinaryFile/bson / twitter,ns,1.07209e+07,1.84971e+06,5.796 -FromBinaryFile/cbor / canada,ns,1.49218e+07,4.48832e+06,3.325 -FromBinaryFile/cbor / twitter,ns,1.03718e+07,1.57388e+06,6.590 -FromBinaryFile/ubjson / canada,ns,1.43414e+07,6.42996e+06,2.230 -FromBinaryFile/ubjson / twitter,ns,1.09266e+07,1.97275e+06,5.539 -FromBinaryShape/containers / bjdata,ns,1.46977e+07,7.23447e+06,2.032 -FromBinaryShape/containers / bson,ns,1.75596e+07,7.88867e+06,2.226 -FromBinaryShape/containers / cbor,ns,1.46488e+07,4.15792e+06,3.523 -FromBinaryShape/containers / msgpack,ns,1.45853e+07,3.89266e+06,3.747 -FromBinaryShape/containers / ubjson,ns,1.49773e+07,7.23987e+06,2.069 -FromBinaryShape/containers / ubjson_optimized,ns,1.54989e+07,4.55976e+06,3.399 -FromBinaryShape/nested / bjdata,ns,96825.9,38335.1,2.526 -FromBinaryShape/nested / bson,ns,101356,42620.2,2.378 -FromBinaryShape/nested / cbor,ns,94929.8,35845.6,2.648 -FromBinaryShape/nested / msgpack,ns,92610.2,35078.3,2.640 -FromBinaryShape/nested / ubjson,ns,96090.6,38285.6,2.510 -FromBinaryShape/scalars / bjdata,ns,2.52616e+07,1.15856e+07,2.180 -FromBinaryShape/scalars / cbor,ns,2.62118e+07,5.88743e+06,4.452 -FromBinaryShape/scalars / msgpack,ns,2.50706e+07,5.65159e+06,4.436 -FromBinaryShape/scalars / ubjson,ns,2.53402e+07,1.16191e+07,2.181 -FromCborChunkedString/10000 chunks,ns,91845.9,82875.5,1.108 -FromMsgpack/canada,ns,1.48853e+07,4.56225e+06,3.263 -FromMsgpack/citm_catalog,ns,9.3559e+06,2.26246e+06,4.135 -FromMsgpack/floats,ns,6.12575e+07,2.86709e+07,2.137 -FromMsgpack/jeopardy,ns,1.16767e+09,1.90153e+08,6.141 -FromMsgpack/signed_ints,ns,6.38812e+07,3.28867e+07,1.942 -FromMsgpack/small_signed_ints,ns,6.44688e+07,3.44227e+07,1.873 -FromMsgpack/twitter,ns,1.02787e+07,1.48541e+06,6.920 -FromMsgpack/unsigned_ints,ns,5.7784e+07,2.83078e+07,2.041 -"GetArray>",ns,2274.63,654.431,3.476 -GetArray>,ns,8288.3,1175.75,7.049 -GetArray>,ns,60017.4,42504.9,1.412 -GetArray>,ns,6785.73,681.915,9.951 -GetMap/citm_catalog,ns,3.60313e+06,2.48546e+06,1.450 -GetVectorDouble/floats,ns,6.83612e+06,656162,10.418 -GetVectorInt/signed_ints,ns,8.22365e+06,3.46495e+06,2.373 -Iterate/canada,ns,897083,328035,2.735 -Iterate/citm_catalog,ns,305421,171245,1.784 -Iterate/twitter,ns,89996.6,61975.8,1.452 -JsonPointerAt/citm_catalog,ns,1.89898e+06,1.17751e+06,1.613 -JsonPointerAt/twitter,ns,817946,611519,1.338 -JsonPointerContains/citm_catalog,ns,2.8177e+06,1.26796e+06,2.222 -JsonPointerContains/twitter,ns,1.33508e+06,628630,2.124 -JsonPointerParse/citm_catalog,ns,5.81355e+06,2.24831e+06,2.586 -JsonPointerParse/twitter,ns,2.47971e+06,1.02159e+06,2.427 -JsonPointerToString/citm_catalog,ns,6.7858e+06,1.93924e+06,3.499 -JsonPointerToString/twitter,ns,2.23096e+06,834416,2.674 -ParseFILE/canada,ns,5.41907e+07,1.46942e+07,3.688 -ParseFILE/citm_catalog,ns,3.59542e+07,7.58092e+06,4.743 -ParseFILE/twitter,ns,1.4087e+07,3.44991e+06,4.083 -ParseFile/canada,ns,1.82792e+07,6.46954e+06,2.825 -ParseFile/citm_catalog,ns,8.12979e+06,2.52336e+06,3.222 -ParseFile/floats,ns,1.31229e+08,4.81407e+07,2.726 -ParseFile/jeopardy,ns,3.38017e+08,1.62098e+08,2.085 -ParseFile/signed_ints,ns,1.28749e+08,4.62304e+07,2.785 -ParseFile/small_signed_ints,ns,6.47398e+07,3.34103e+07,1.938 -ParseFile/twitter,ns,3.43041e+06,1.37495e+06,2.495 -ParseFile/unsigned_ints,ns,1.24001e+08,4.74365e+07,2.614 -ParseIndented/canada / 4,ns,3.4977e+07,5.37149e+06,6.512 -ParseIndented/citm_catalog / 4,ns,7.52423e+06,1.81376e+06,4.148 -ParseIndented/jeopardy / 4,ns,3.45046e+08,1.33383e+08,2.587 -ParseIndented/twitter / 4,ns,3.72283e+06,1.12645e+06,3.305 -ParseStreamValues/ndjson,ns,7.15876e+06,3.76965e+06,1.899 -ParseStreamValues/numbers,ns,1.92619e+06,383138,5.027 -ParseString/canada,ns,1.55213e+07,4.62776e+06,3.354 -ParseString/citm_catalog,ns,7.56417e+06,1.77967e+06,4.250 -ParseString/floats,ns,1.21779e+08,2.83035e+07,4.303 -ParseString/jeopardy,ns,3.16817e+08,1.30897e+08,2.420 -ParseString/signed_ints,ns,1.22931e+08,3.19852e+07,3.843 -ParseString/small_signed_ints,ns,6.2685e+07,2.49764e+07,2.510 -ParseString/twitter,ns,3.2961e+06,1.04867e+06,3.143 -ParseString/unsigned_ints,ns,1.21229e+08,3.29241e+07,3.682 -ParseStringOrdered/canada,ns,1.5388e+07,4.5275e+06,3.399 -ParseStringOrdered/citm_catalog,ns,1.15204e+07,1.68115e+06,6.853 -ParseStringOrdered/jeopardy,ns,3.73533e+08,1.13397e+08,3.294 -ParseStringOrdered/twitter,ns,4.5979e+06,948606,4.847 -Patch/canada,ns,1.03684e+07,3.47719e+06,2.982 -Patch/citm_catalog,ns,2.74522e+06,1.74191e+06,1.576 -Patch/twitter,ns,1.57928e+06,888657,1.777 -SaxParse/canada,ns,1.31023e+07,3.26697e+06,4.011 -SaxParse/citm_catalog,ns,6.54642e+06,966806,6.771 -SaxParse/twitter,ns,2.53102e+06,483052,5.240 -ToCbor/canada,ns,1.41339e+06,556912,2.538 -ToCbor/citm_catalog,ns,1.04743e+06,259178,4.041 -ToCbor/floats,ns,9.04677e+06,1.90094e+06,4.759 -ToCbor/jeopardy,ns,7.39339e+07,2.20678e+07,3.350 -ToCbor/signed_ints,ns,1.15333e+07,2.827e+06,4.080 -ToCbor/small_signed_ints,ns,1.0394e+07,2.47974e+06,4.192 -ToCbor/twitter,ns,658566,143397,4.593 -ToCbor/unsigned_ints,ns,8.17966e+06,2.81588e+06,2.905 -ToJsonStrings/copy,ns,6.12e+06,5.65303e+06,1.083 -ToJsonStrings/move,ns,6.13061e+06,3.13303e+06,1.957 -Unflatten/canada,ns,4.25276e+07,1.10995e+07,3.831 -Unflatten/citm_catalog,ns,1.01866e+07,3.62185e+06,2.813 -Unflatten/twitter,ns,4.74536e+06,2.21103e+06,2.146 +Accept/canada,ns,1.27789e+07,1.34304e+06,9.515 +Accept/citm_catalog,ns,6.47666e+06,474064,13.662 +Accept/floats,ns,1.14227e+08,1.72173e+07,6.634 +Accept/jeopardy,ns,2.18081e+08,2.79002e+07,7.816 +Accept/signed_ints,ns,1.15981e+08,2.33778e+07,4.961 +Accept/small_signed_ints,ns,5.64996e+07,1.31818e+07,4.286 +Accept/twitter,ns,2.48725e+06,234277,10.617 +Accept/unsigned_ints,ns,1.14729e+08,2.28147e+07,5.029 +BinaryToCbor/1024,ns,315.368,108.041,2.919 +BinaryToCbor/128,ns,266.074,114.105,2.332 +BinaryToCbor/16,ns,246.212,49.912,4.933 +BinaryToCbor/16384,ns,950.054,418.045,2.273 +BinaryToCbor/2048,ns,340.213,126.796,2.683 +BinaryToCbor/256,ns,279.79,91.7512,3.049 +BinaryToCbor/32,ns,262.471,50.3433,5.214 +BinaryToCbor/32768,ns,1578.4,837.8,1.884 +BinaryToCbor/4096,ns,431.963,174.276,2.479 +BinaryToCbor/512,ns,296.768,102.073,2.907 +BinaryToCbor/64,ns,259.159,84.2641,3.076 +BinaryToCbor/8,ns,250.574,49.9122,5.020 +BinaryToCbor/8192,ns,527.418,253.616,2.080 +Copy/canada,ns,3.68841e+06,2.9017e+06,1.271 +Copy/citm_catalog,ns,1.64706e+06,1.48507e+06,1.109 +Copy/twitter,ns,810558,728698,1.112 +CopyAssign/canada,ns,3.73912e+06,2.94393e+06,1.270 +CopyAssign/citm_catalog,ns,1.6545e+06,1.53713e+06,1.076 +CopyAssign/twitter,ns,817997,752415,1.087 +CopyOnly/canada,ns,1.53602e+06,1.52075e+06,1.010 +CopyOnly/citm_catalog,ns,754817,794741,0.950 +CopyOnly/twitter,ns,406966,410330,0.992 +CopyRing/canada,ns,3.74734e+06,2.92592e+06,1.281 +CopyRing/citm_catalog,ns,1.7477e+06,1.54757e+06,1.129 +CopyRing/twitter,ns,876191,784261,1.117 +DestroyOnly/canada,ns,2.16216e+06,1.38217e+06,1.564 +DestroyOnly/citm_catalog,ns,895535,681877,1.313 +DestroyOnly/twitter,ns,406450,326620,1.244 +Diff/canada,ns,3.91782e+07,3.75209e+06,10.442 +Diff/citm_catalog,ns,6.91552e+06,1.09211e+06,6.332 +Diff/twitter,ns,4.92965e+06,639734,7.706 +Dump/canada / -,ns,6.70617e+06,2.31399e+06,2.898 +Dump/canada / 4,ns,8.81664e+06,3.03083e+06,2.909 +Dump/citm_catalog / -,ns,1.39132e+06,295525,4.708 +Dump/citm_catalog / 4,ns,1.94729e+06,421536,4.620 +Dump/floats / -,ns,6.35321e+07,2.37757e+07,2.672 +Dump/floats / 4,ns,7.19879e+07,2.4663e+07,2.919 +Dump/jeopardy / -,ns,2.0176e+08,3.0624e+07,6.588 +Dump/jeopardy / 4,ns,2.20493e+08,3.43504e+07,6.419 +Dump/signed_ints / -,ns,2.36853e+07,1.07405e+07,2.205 +Dump/signed_ints / 4,ns,3.2029e+07,1.13731e+07,2.816 +Dump/small_signed_ints / -,ns,1.78623e+07,7.93339e+06,2.252 +Dump/small_signed_ints / 4,ns,2.50508e+07,8.80939e+06,2.844 +Dump/twitter / -,ns,1.40813e+06,213513,6.595 +Dump/twitter / 4,ns,1.59095e+06,249353,6.380 +Dump/unsigned_ints / -,ns,2.35653e+07,8.07378e+06,2.919 +Dump/unsigned_ints / 4,ns,3.17269e+07,8.50708e+06,3.729 +Equal/canada,ns,463162,336269,1.377 +Equal/citm_catalog,ns,264124,260967,1.012 +Equal/twitter,ns,138843,128906,1.077 +Flatten/canada,ns,2.86941e+07,1.1214e+07,2.559 +Flatten/citm_catalog,ns,6.4406e+06,3.00538e+06,2.143 +Flatten/twitter,ns,3.53051e+06,2.05449e+06,1.718 +FlattenOrdered/citm_catalog,ns,2.56371e+08,1.40896e+06,181.958 +FlattenOrdered/twitter,ns,5.00313e+07,863594,57.934 +FromBinaryBuffer/bjdata / canada,ns,8.15141e+06,4.17154e+06,1.954 +FromBinaryBuffer/bjdata / twitter,ns,3.18297e+06,893076,3.564 +FromBinaryBuffer/bjdata_optimized / canada,ns,8.73882e+06,2.42167e+06,3.609 +FromBinaryBuffer/bjdata_optimized / twitter,ns,3.15905e+06,884856,3.570 +FromBinaryBuffer/bson / canada,ns,9.33283e+06,4.27358e+06,2.184 +FromBinaryBuffer/bson / citm_catalog,ns,3.91854e+06,1.61073e+06,2.433 +FromBinaryBuffer/bson / twitter,ns,3.176e+06,910290,3.489 +FromBinaryBuffer/cbor / canada,ns,8.39002e+06,2.08256e+06,4.029 +FromBinaryBuffer/cbor / citm_catalog,ns,3.71495e+06,1.31999e+06,2.814 +FromBinaryBuffer/cbor / floats,ns,2.91606e+07,5.48446e+06,5.317 +FromBinaryBuffer/cbor / jeopardy,ns,3.52964e+08,1.00739e+08,3.504 +FromBinaryBuffer/cbor / signed_ints,ns,3.59874e+07,9.77712e+06,3.681 +FromBinaryBuffer/cbor / twitter,ns,3.08997e+06,878827,3.516 +FromBinaryBuffer/msgpack / canada,ns,8.25869e+06,2.09779e+06,3.937 +FromBinaryBuffer/msgpack / citm_catalog,ns,3.71825e+06,1.28675e+06,2.890 +FromBinaryBuffer/msgpack / jeopardy,ns,3.56624e+08,9.69017e+07,3.680 +FromBinaryBuffer/msgpack / twitter,ns,3.06392e+06,850067,3.604 +FromBinaryBuffer/ubjson / canada,ns,8.12649e+06,4.14411e+06,1.961 +FromBinaryBuffer/ubjson / citm_catalog,ns,3.82184e+06,1.65659e+06,2.307 +FromBinaryBuffer/ubjson / jeopardy,ns,3.65507e+08,1.01303e+08,3.608 +FromBinaryBuffer/ubjson / twitter,ns,3.15221e+06,895746,3.519 +FromBinaryBuffer/ubjson_optimized / canada,ns,8.5126e+06,2.38858e+06,3.564 +FromBinaryBuffer/ubjson_optimized / twitter,ns,3.12199e+06,882166,3.539 +FromBinaryFile/bjdata / twitter,ns,1.04222e+07,1.45214e+06,7.177 +FromBinaryFile/bson / twitter,ns,1.02874e+07,1.23514e+06,8.329 +FromBinaryFile/cbor / canada,ns,1.43434e+07,2.4071e+06,5.959 +FromBinaryFile/cbor / twitter,ns,9.92359e+06,1.075e+06,9.231 +FromBinaryFile/ubjson / canada,ns,1.35516e+07,6.2336e+06,2.174 +FromBinaryFile/ubjson / twitter,ns,1.05159e+07,1.46077e+06,7.199 +FromBinaryShape/containers / bjdata,ns,1.43175e+07,7.24204e+06,1.977 +FromBinaryShape/containers / bson,ns,1.74215e+07,7.97531e+06,2.184 +FromBinaryShape/containers / cbor,ns,1.3898e+07,3.93021e+06,3.536 +FromBinaryShape/containers / msgpack,ns,1.378e+07,3.88449e+06,3.547 +FromBinaryShape/containers / ubjson,ns,1.44223e+07,7.2737e+06,1.983 +FromBinaryShape/containers / ubjson_optimized,ns,1.49736e+07,4.48674e+06,3.337 +FromBinaryShape/nested / bjdata,ns,96363.9,38197.9,2.523 +FromBinaryShape/nested / bson,ns,102515,42496.1,2.412 +FromBinaryShape/nested / cbor,ns,93842.1,35385.5,2.652 +FromBinaryShape/nested / msgpack,ns,92033,34888.5,2.638 +FromBinaryShape/nested / ubjson,ns,96455.9,37922.6,2.543 +FromBinaryShape/scalars / bjdata,ns,2.48048e+07,1.1476e+07,2.161 +FromBinaryShape/scalars / cbor,ns,2.56641e+07,5.68711e+06,4.513 +FromBinaryShape/scalars / msgpack,ns,2.44254e+07,5.56716e+06,4.387 +FromBinaryShape/scalars / ubjson,ns,2.49328e+07,1.15997e+07,2.149 +FromCborChunkedString/10000 chunks,ns,90902.3,61512.6,1.478 +FromMsgpack/canada,ns,1.43596e+07,2.40425e+06,5.973 +FromMsgpack/citm_catalog,ns,9.03526e+06,1.66705e+06,5.420 +FromMsgpack/floats,ns,5.97879e+07,2.82314e+07,2.118 +FromMsgpack/jeopardy,ns,1.14023e+09,1.1207e+08,10.174 +FromMsgpack/signed_ints,ns,6.30943e+07,3.27435e+07,1.927 +FromMsgpack/small_signed_ints,ns,6.34225e+07,3.52538e+07,1.799 +FromMsgpack/twitter,ns,9.99383e+06,1.01241e+06,9.871 +FromMsgpack/unsigned_ints,ns,5.61151e+07,2.82024e+07,1.990 +"GetArray>",ns,2242.43,641.094,3.498 +GetArray>,ns,8157.44,1172.81,6.955 +GetArray>,ns,58833.4,41553,1.416 +GetArray>,ns,6725.67,670.816,10.026 +GetMap/citm_catalog,ns,3.44193e+06,2.43771e+06,1.412 +GetVectorDouble/floats,ns,6.7017e+06,650766,10.298 +GetVectorInt/signed_ints,ns,8.06579e+06,3.40643e+06,2.368 +Iterate/canada,ns,873618,445143,1.963 +Iterate/citm_catalog,ns,301801,157823,1.912 +Iterate/twitter,ns,87345,58936.4,1.482 +JsonPointerAt/citm_catalog,ns,1.85369e+06,1.1599e+06,1.598 +JsonPointerAt/twitter,ns,791487,599585,1.320 +JsonPointerContains/citm_catalog,ns,2.73824e+06,1.25465e+06,2.182 +JsonPointerContains/twitter,ns,1.32403e+06,620312,2.134 +JsonPointerParse/citm_catalog,ns,5.72778e+06,2.21453e+06,2.586 +JsonPointerParse/twitter,ns,2.4672e+06,1.00864e+06,2.446 +JsonPointerToString/citm_catalog,ns,6.65484e+06,1.89788e+06,3.506 +JsonPointerToString/twitter,ns,2.13903e+06,811916,2.635 +ParseFILE/canada,ns,5.29148e+07,6.01689e+06,8.794 +ParseFILE/citm_catalog,ns,3.49593e+07,2.34075e+06,14.935 +ParseFILE/twitter,ns,1.38263e+07,1.34963e+06,10.245 +ParseFile/canada,ns,1.76922e+07,6.22534e+06,2.842 +ParseFile/citm_catalog,ns,7.85962e+06,2.47244e+06,3.179 +ParseFile/floats,ns,1.29413e+08,4.83839e+07,2.675 +ParseFile/jeopardy,ns,3.30328e+08,1.56161e+08,2.115 +ParseFile/signed_ints,ns,1.27675e+08,4.65862e+07,2.741 +ParseFile/small_signed_ints,ns,6.44651e+07,3.33577e+07,1.933 +ParseFile/twitter,ns,3.39729e+06,1.37932e+06,2.463 +ParseFile/unsigned_ints,ns,1.23326e+08,4.73146e+07,2.607 +ParseIndented/canada / 4,ns,3.41603e+07,4.60976e+06,7.410 +ParseIndented/citm_catalog / 4,ns,7.45491e+06,1.45798e+06,5.113 +ParseIndented/jeopardy / 4,ns,3.38801e+08,1.14349e+08,2.963 +ParseIndented/twitter / 4,ns,3.61322e+06,975391,3.704 +ParseStreamValues/ndjson,ns,7.07974e+06,3.7154e+06,1.906 +ParseStreamValues/numbers,ns,1.92884e+06,388042,4.971 +ParseString/canada,ns,1.52389e+07,3.73427e+06,4.081 +ParseString/citm_catalog,ns,7.40128e+06,1.44821e+06,5.111 +ParseString/floats,ns,1.19856e+08,2.49654e+07,4.801 +ParseString/jeopardy,ns,3.03449e+08,1.13053e+08,2.684 +ParseString/signed_ints,ns,1.21175e+08,2.86805e+07,4.225 +ParseString/small_signed_ints,ns,6.07636e+07,1.77037e+07,3.432 +ParseString/twitter,ns,3.21074e+06,920551,3.488 +ParseString/unsigned_ints,ns,1.20011e+08,2.85056e+07,4.210 +ParseStringOrdered/canada,ns,1.52544e+07,3.77964e+06,4.036 +ParseStringOrdered/citm_catalog,ns,1.09927e+07,1.34339e+06,8.183 +ParseStringOrdered/jeopardy,ns,3.60435e+08,9.81296e+07,3.673 +ParseStringOrdered/twitter,ns,4.41151e+06,803859,5.488 +Patch/canada,ns,1.01249e+07,3.41425e+06,2.965 +Patch/citm_catalog,ns,2.54415e+06,1.65413e+06,1.538 +Patch/twitter,ns,1.4932e+06,870217,1.716 +SaxParse/canada,ns,1.28611e+07,2.49889e+06,5.147 +SaxParse/citm_catalog,ns,6.43798e+06,655372,9.823 +SaxParse/twitter,ns,2.48859e+06,334038,7.450 +ToCbor/canada,ns,1.39101e+06,554952,2.507 +ToCbor/citm_catalog,ns,1.0334e+06,260397,3.969 +ToCbor/floats,ns,8.93763e+06,1.84589e+06,4.842 +ToCbor/jeopardy,ns,7.14785e+07,2.10551e+07,3.395 +ToCbor/signed_ints,ns,1.13863e+07,2.74211e+06,4.152 +ToCbor/small_signed_ints,ns,1.02822e+07,2.37622e+06,4.327 +ToCbor/twitter,ns,636979,144369,4.412 +ToCbor/unsigned_ints,ns,8.04576e+06,2.74066e+06,2.936 +ToJsonStrings/copy,ns,5.85988e+06,5.60056e+06,1.046 +ToJsonStrings/move,ns,5.92335e+06,3.04643e+06,1.944 +Unflatten/canada,ns,4.17811e+07,1.08132e+07,3.864 +Unflatten/citm_catalog,ns,9.80315e+06,3.53672e+06,2.772 +Unflatten/twitter,ns,4.56968e+06,2.16566e+06,2.110 diff --git a/docs/mkdocs/scripts/figures/data/perf_timeline.csv b/docs/mkdocs/scripts/figures/data/perf_timeline.csv index 36506c26f..ca4c7f3dc 100644 --- a/docs/mkdocs/scripts/figures/data/perf_timeline.csv +++ b/docs/mkdocs/scripts/figures/data/perf_timeline.csv @@ -351,4 +351,11 @@ index,commit,date,pr,subject,parse_twitter,parse_citm,parse_canada,parse_citm_co 349,b18b6fc7e6,2026-11-02,6013,Build the parser's syntax error prefix with one concat() (#6013),1370.175,2435.337,6098.834,2320.728,1726.256,472.914,210.817,289.786,2292.841,419.186,1306.593,139.277,1481.709,1714.543,177.065,366.270,971.330 350,07876e2292,2026-11-02,6015,json_view: a value that is not found has no bytes in its exception context (#6015),1361.297,2435.980,6080.718,2305.853,1707.733,474.621,210.382,291.568,2337.276,424.783,1329.556,139.590,1450.506,1690.804,178.472,366.370,977.807 351,baba5db36f,2026-11-02,6016,"Fix the MSVC and GCC builds of develop (C4127, -Weffc++) (#6016)",1381.280,2440.908,6116.068,2303.611,1713.472,476.121,210.492,290.105,2319.878,420.598,1318.037,139.554,1471.388,1729.097,177.078,369.621,959.145 -352,candidate,,,develop + open pull requests,1392.967,2469.204,6110.380,2348.760,1730.819,474.089,212.339,290.760,2284.428,420.179,1320.938,137.755,1441.341,1697.486,176.758,364.547,955.117 +352,57b898ef99,2026-11-03,5998,Replace a multibyte decimal point in dump() of a long double (#5998),1376.416,2456.476,6107.073,2325.534,1714.240,471.800,213.484,290.901,2288.426,420.062,1304.744,139.492,1441.231,1696.537,176.981,363.955,944.685 +353,efc437ef6e,2026-11-04,6002,UBJSON/BJData/MessagePack reader: reject a container count equal to SIZE_MAX (#6002),1376.138,2441.279,6136.755,2331.556,1708.185,467.554,210.231,291.606,2314.834,415.023,1321.171,138.603,1456.238,1718.533,176.858,366.713,938.783 +354,42825fba07,2026-11-04,6020,Binary writers: zero only a window ahead of the vector sink's position (#6020),1391.971,2460.961,6101.484,2312.584,1736.846,484.624,211.385,289.579,2309.943,416.103,1316.307,138.308,1464.425,1715.552,179.565,367.624,969.541 +355,1da8735154,2026-11-04,6023,Fix leak and crash when an allocation throws during parsing (#6023),1358.000,2456.832,6148.140,2333.761,1752.168,487.998,213.374,290.735,2324.377,420.402,1316.165,139.748,1460.000,1714.216,179.958,367.953,970.615 +356,e48800f09d,2026-11-04,6001,Binary reader and writer: remove checks that invariants make dead (#6001),1371.292,2434.395,6104.099,2313.769,1711.288,483.297,211.214,288.130,2308.992,416.639,1300.966,138.719,1455.595,1695.539,180.445,370.313,962.574 +357,951271127b,2026-11-07,6028,Binary readers: append strings straight from contiguous input (#6028),1381.807,2431.713,6099.235,2311.519,1694.104,464.615,207.900,288.438,2322.463,418.952,1227.851,138.811,1468.723,1706.816,177.249,369.912,975.798 +358,18138227dc,2026-11-07,6030,Scan the buffer of a FILE in bulk with glibc and the Apple C library (#6030),1379.500,2439.343,6147.771,2308.199,1689.427,482.217,213.967,290.466,2309.747,420.209,1239.525,139.367,1443.438,1731.583,180.401,364.380,975.476 +359,candidate,,,develop + open pull requests,1230.726,2155.896,5188.718,2038.886,1713.280,234.359,212.584,289.591,2313.669,425.788,1234.309,137.017,1444.999,1699.919,179.250,367.586,954.772 diff --git a/docs/mkdocs/scripts/figures/data/perf_usecases_mac.json b/docs/mkdocs/scripts/figures/data/perf_usecases_mac.json index a937d3455..5c82cc46b 100644 --- a/docs/mkdocs/scripts/figures/data/perf_usecases_mac.json +++ b/docs/mkdocs/scripts/figures/data/perf_usecases_mac.json @@ -4,35 +4,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 169.6, + "us": 172.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 169.6, + "us": 172.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 176.5, + "us": 178.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 176.5, + "us": 178.3, "level": "full" }, "variants": { "accept": { - "us": 169.6, + "us": 172.0, "level": "full" }, "read (reused)": { - "us": 176.5, + "us": 178.3, "level": "full" }, "parse": { - "us": 183.0, + "us": 182.9, "level": "full" } } @@ -40,67 +40,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 450.9, + "us": 234.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 450.9, + "us": 234.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 450.9, + "us": 234.1, "level": "full" }, "parse": { - "us": 1357.3, + "us": 1205.8, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 181.3, + "variant": "insitu (copy)", + "us": 183.2, "level": "full" }, "best_any": { - "variant": "read", - "us": 181.3, + "variant": "insitu (copy)", + "us": 183.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 183.1, + "us": 184.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 183.1, + "us": 184.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 172.5, - "level": "full" - }, - "read": { - "us": 181.3, - "level": "full" - }, - "read (reused allocator)": { - "us": 183.1, + "us": 169.1, "level": "full" }, "insitu (copy)": { - "us": 183.6, + "us": 183.2, + "level": "full" + }, + "read (reused allocator)": { + "us": 184.4, + "level": "full" + }, + "read": { + "us": 185.2, "level": "full" }, "read (raw numbers)": { - "us": 192.5, + "us": 196.6, "level": "full" } } @@ -108,31 +108,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 211.9, + "us": 215.1, "level": "full" }, "best_any": { "variant": "DOM", - "us": 211.9, + "us": 215.1, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 196.2, + "us": 195.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 196.2, + "us": 195.0, "level": "full" }, "variants": { "DOM (reused)": { - "us": 196.2, + "us": 195.0, "level": "full" }, "DOM": { - "us": 211.9, + "us": 215.1, "level": "full" } } @@ -141,14 +141,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 381.5, + "us": 381.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 381.5, + "us": 381.8, "level": "no UTF-8" } } @@ -156,35 +156,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 331.3, + "us": 333.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 331.3, + "us": 333.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 331.3, + "us": 333.2, + "level": "full" + }, + "generic (double, strict)": { + "us": 913.2, "level": "full" }, "generic (double)": { - "us": 912.3, + "us": 915.8, "level": "partial" }, - "generic (double, strict)": { - "us": 913.8, - "level": "full" - }, "generic": { - "us": 1271.7, + "us": 1275.5, "level": "partial" }, "generic (strict)": { - "us": 1274.5, + "us": 1285.5, "level": "full" } } @@ -192,143 +192,143 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 534.8, + "us": 539.5, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 534.8, + "us": 539.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 533.2, + "us": 542.6, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 533.2, + "us": 542.6, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 533.2, + "SAX (numbers: none)": { + "us": 539.5, "level": "full" }, - "SAX (numbers: none)": { - "us": 534.8, + "SAX (reused)": { + "us": 542.6, "level": "full" }, "SAX": { - "us": 535.0, + "us": 543.8, "level": "full" }, "parse (numbers: none)": { - "us": 859.9, + "us": 867.9, "level": "full" }, "parser (reused)": { - "us": 868.8, + "us": 877.8, "level": "full" }, "parse": { - "us": 870.5, + "us": 881.2, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX (default precision)", - "us": 1311.2, + "variant": "insitu (copy)", + "us": 1317.7, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 694.3, + "us": 706.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1348.2, + "us": 1374.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1189.3, + "us": 1194.4, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 685.9, + "us": 689.3, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 694.3, + "us": 706.2, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 713.3, + "us": 718.7, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 721.8, + "us": 725.8, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 1144.1, + "us": 1155.0, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1162.4, + "us": 1176.8, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1171.8, + "us": 1180.8, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1189.3, + "us": 1194.4, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1198.1, + "us": 1209.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1307.4, - "level": "full" - }, - "SAX (default precision)": { - "us": 1311.2, + "us": 1310.8, "level": "full" }, "insitu (copy)": { - "us": 1320.5, + "us": 1317.7, + "level": "full" + }, + "SAX (default precision)": { + "us": 1322.6, "level": "full" }, "SAX": { - "us": 1323.5, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 1335.6, + "us": 1330.0, "level": "full" }, "SAX (string stream, default precision)": { - "us": 1347.0, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1348.2, + "us": 1341.2, "level": "full" }, "SAX (string stream)": { - "us": 1359.5, + "us": 1355.7, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 1362.9, + "level": "full" + }, + "Document (reused allocator)": { + "us": 1374.7, "level": "full" }, "Document": { - "us": 1360.1, + "us": 1381.3, "level": "full" } } @@ -361,30 +361,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 325.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 325.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 325.7, - "level": "full" - }, - "IgnoredAny": { - "us": 418.6, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -420,41 +396,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 325.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 325.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 325.7, + "level": "full" + }, + "IgnoredAny": { + "us": 418.6, + "level": "full" + } + } } }, "citm_catalog": { "nlohmann json_document": { "best": { "variant": "accept", - "us": 312.9, + "us": 312.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 312.9, + "us": 312.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 359.4, + "us": 359.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 359.4, + "us": 359.1, "level": "full" }, "variants": { "accept": { - "us": 312.9, + "us": 312.7, "level": "full" }, "read (reused)": { - "us": 359.4, + "us": 359.1, "level": "full" }, "parse": { - "us": 360.3, + "us": 360.5, "level": "full" } } @@ -462,67 +462,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 888.0, + "us": 455.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 888.0, + "us": 455.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 888.0, + "us": 455.9, "level": "full" }, "parse": { - "us": 2406.5, + "us": 2112.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 476.8, + "variant": "read", + "us": 476.2, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 476.8, + "variant": "read", + "us": 476.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 480.0, + "us": 484.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 480.0, + "us": 484.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 450.8, - "level": "full" - }, - "insitu (copy)": { - "us": 476.8, - "level": "full" - }, - "read (reused allocator)": { - "us": 480.0, + "us": 447.3, "level": "full" }, "read": { - "us": 481.1, + "us": 476.2, + "level": "full" + }, + "insitu (copy)": { + "us": 477.5, + "level": "full" + }, + "read (reused allocator)": { + "us": 484.7, "level": "full" }, "read (raw numbers)": { - "us": 529.1, + "us": 525.5, "level": "full" } } @@ -530,31 +530,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 451.8, + "us": 460.5, "level": "full" }, "best_any": { "variant": "DOM", - "us": 451.8, + "us": 460.5, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 449.3, + "us": 454.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 449.3, + "us": 454.6, "level": "full" }, "variants": { "DOM (reused)": { - "us": 449.3, + "us": 454.6, "level": "full" }, "DOM": { - "us": 451.8, + "us": 460.5, "level": "full" } } @@ -578,83 +578,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 862.2, + "us": 854.5, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 862.2, + "us": 854.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 862.2, - "level": "full" - }, - "generic (double, strict)": { - "us": 1917.4, + "us": 854.5, "level": "full" }, "generic (double)": { - "us": 1921.0, + "us": 1921.8, "level": "partial" }, - "generic (strict)": { - "us": 2713.3, + "generic (double, strict)": { + "us": 1931.2, "level": "full" }, "generic": { - "us": 2727.9, + "us": 2702.6, "level": "partial" + }, + "generic (strict)": { + "us": 2706.2, + "level": "full" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 994.5, + "us": 989.8, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 994.5, + "us": 989.8, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 1019.7, + "us": 1020.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 1019.7, + "us": 1020.1, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 994.5, - "level": "full" - }, - "SAX (reused)": { - "us": 1019.7, + "us": 989.8, "level": "full" }, "SAX": { - "us": 1020.7, + "us": 1019.3, + "level": "full" + }, + "SAX (reused)": { + "us": 1020.1, "level": "full" }, "parse (numbers: none)": { - "us": 1462.9, - "level": "full" - }, - "parse": { - "us": 1480.0, + "us": 1467.9, "level": "full" }, "parser (reused)": { - "us": 1480.0, + "us": 1486.9, + "level": "full" + }, + "parse": { + "us": 1489.7, "level": "full" } } @@ -662,95 +662,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 1396.9, + "us": 1391.2, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 1031.8, + "us": 1033.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1689.7, + "us": 1698.0, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1621.8, + "us": 1611.8, "level": "no UTF-8" }, "variants": { "SAX (string stream, default precision) (no encoding check)": { - "us": 1031.8, + "us": 1033.2, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1122.7, + "us": 1114.8, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1127.3, + "us": 1128.1, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1140.9, + "us": 1162.2, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 1358.3, + "us": 1357.1, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 1396.9, + "us": 1391.2, "level": "full" }, "SAX (string stream)": { - "us": 1444.8, + "us": 1445.5, "level": "full" }, "SAX (default precision)": { - "us": 1445.3, - "level": "full" - }, - "insitu (copy untimed)": { - "us": 1545.6, + "us": 1447.1, "level": "full" }, "SAX (no encoding check)": { - "us": 1549.8, + "us": 1547.5, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 1569.7, + "insitu (copy untimed)": { + "us": 1549.6, "level": "full" }, - "SAX (raw numbers) (no encoding check)": { - "us": 1605.0, + "insitu (copy)": { + "us": 1583.6, + "level": "full" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1611.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1616.2, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1621.8, + "us": 1614.8, "level": "no UTF-8" }, "SAX": { - "us": 1639.2, + "us": 1658.8, "level": "full" }, + "SAX (raw numbers) (no encoding check)": { + "us": 1659.9, + "level": "no UTF-8" + }, "Document (reused allocator)": { - "us": 1689.7, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 1700.8, + "us": 1698.0, "level": "full" }, "Document": { - "us": 1705.5, + "us": 1703.9, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 1724.8, "level": "full" } } @@ -783,30 +783,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 680.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 680.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 680.8, - "level": "full" - }, - "IgnoredAny": { - "us": 798.3, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -842,41 +818,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 680.8, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 680.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 680.8, + "level": "full" + }, + "IgnoredAny": { + "us": 798.3, + "level": "full" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "accept", - "us": 885.8, + "us": 904.8, "level": "full" }, "best_any": { "variant": "accept", - "us": 885.8, + "us": 904.8, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 955.0, + "us": 942.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 955.0, + "us": 942.2, "level": "full" }, "variants": { "accept": { - "us": 885.8, + "us": 904.8, "level": "full" }, "read (reused)": { - "us": 955.0, + "us": 942.2, "level": "full" }, "parse": { - "us": 956.1, + "us": 943.0, "level": "full" } } @@ -884,23 +884,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 2405.4, + "us": 1253.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 2405.4, + "us": 1253.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 2405.4, + "us": 1253.0, "level": "full" }, "parse": { - "us": 6000.5, + "us": 5078.3, "level": "full" } } @@ -908,43 +908,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 1492.5, + "us": 1487.2, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 1492.5, + "us": 1487.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1507.7, + "us": 1509.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1507.7, + "us": 1509.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 1457.0, + "us": 1452.3, "level": "full" }, "insitu (copy)": { - "us": 1492.5, + "us": 1487.2, "level": "full" }, "read": { - "us": 1500.2, + "us": 1496.8, "level": "full" }, "read (reused allocator)": { - "us": 1507.7, + "us": 1509.4, "level": "full" }, "read (raw numbers)": { - "us": 1746.0, + "us": 1724.2, "level": "full" } } @@ -952,31 +952,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 1888.5, + "us": 1889.9, "level": "full" }, "best_any": { "variant": "DOM", - "us": 1888.5, + "us": 1889.9, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 1883.4, + "us": 1888.9, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 1883.4, + "us": 1888.9, "level": "full" }, "variants": { "DOM (reused)": { - "us": 1883.4, + "us": 1888.9, "level": "full" }, "DOM": { - "us": 1888.5, + "us": 1889.9, "level": "full" } } @@ -985,14 +985,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 2577.6, + "us": 2578.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 2577.6, + "us": 2578.8, "level": "no UTF-8" } } @@ -1000,35 +1000,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1325.9, + "us": 1302.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1325.9, + "us": 1302.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1325.9, - "level": "full" - }, - "generic (double, strict)": { - "us": 5910.9, + "us": 1302.2, "level": "full" }, "generic (double)": { - "us": 6022.0, + "us": 5870.4, "level": "partial" }, + "generic (double, strict)": { + "us": 5935.6, + "level": "full" + }, "generic (strict)": { - "us": 9316.7, + "us": 9296.8, "level": "full" }, "generic": { - "us": 9317.5, + "us": 9340.5, "level": "partial" } } @@ -1036,47 +1036,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 1466.8, + "us": 1449.2, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 1466.8, + "us": 1449.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 3098.2, + "us": 3062.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 3098.2, + "us": 3062.1, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 1466.8, + "us": 1449.2, "level": "full" }, "parse (numbers: none)": { - "us": 2095.5, + "us": 2078.1, "level": "full" }, "SAX (reused)": { - "us": 3098.2, + "us": 3062.1, "level": "full" }, "SAX": { - "us": 3109.1, + "us": 3067.0, "level": "full" }, "parser (reused)": { - "us": 3631.0, + "us": 3621.6, "level": "full" }, "parse": { - "us": 3644.0, + "us": 3645.9, "level": "full" } } @@ -1084,96 +1084,96 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 1982.0, + "us": 1971.0, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision)", - "us": 1982.0, + "us": 1971.0, "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 7345.7, + "us": 7311.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 7345.7, + "us": 7311.7, "level": "full" }, "variants": { "SAX (string stream, default precision)": { - "us": 1982.0, + "us": 1971.0, "level": "full" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1999.2, + "us": 1984.2, + "level": "no UTF-8" + }, + "SAX (default precision) (no encoding check)": { + "us": 2538.5, "level": "no UTF-8" }, "SAX (default precision)": { - "us": 2484.0, + "us": 2625.3, "level": "full" }, - "SAX (default precision) (no encoding check)": { - "us": 2565.0, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 6261.5, - "level": "no UTF-8" - }, "SAX (string stream)": { - "us": 6280.2, + "us": 6279.2, "level": "full" }, - "insitu (copy untimed)": { - "us": 6735.5, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 6821.7, + "SAX (string stream) (no encoding check)": { + "us": 6311.3, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 6857.6, + "insitu (copy untimed) (no encoding check)": { + "us": 6754.8, + "level": "no UTF-8" + }, + "insitu (copy untimed)": { + "us": 6764.6, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 6858.0, + "us": 6807.8, "level": "no UTF-8" }, - "SAX (no encoding check)": { - "us": 6980.3, - "level": "no UTF-8" + "insitu (copy)": { + "us": 6892.5, + "level": "full" }, "SAX": { - "us": 6996.5, + "us": 6963.1, "level": "full" }, + "SAX (no encoding check)": { + "us": 6968.1, + "level": "no UTF-8" + }, "Document (reused allocator)": { - "us": 7345.7, - "level": "full" - }, - "Document": { - "us": 7376.6, + "us": 7311.7, "level": "full" }, "Document (no encoding check)": { - "us": 7399.8, + "us": 7337.0, "level": "no UTF-8" }, + "Document": { + "us": 7351.8, + "level": "full" + }, "Document (reused allocator) (no encoding check)": { - "us": 7446.8, + "us": 7380.8, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 9472.8, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 9451.3, + "us": 9522.1, "level": "full" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 9522.8, - "level": "no UTF-8" } } }, @@ -1205,30 +1205,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1939.1, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 1939.1, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1939.1, - "level": "full" - }, - "IgnoredAny": { - "us": 2086.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -1264,41 +1240,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1939.1, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 1939.1, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1939.1, + "level": "full" + }, + "IgnoredAny": { + "us": 2086.8, + "level": "full" + } + } } }, "jeopardy": { "nlohmann json_document": { "best": { "variant": "accept", - "us": 20873.2, + "us": 20926.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 20873.2, + "us": 20926.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 22491.8, + "us": 22589.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 22491.8, + "us": 22589.5, "level": "full" }, "variants": { "accept": { - "us": 20873.2, + "us": 20926.3, "level": "full" }, "read (reused)": { - "us": 22491.8, + "us": 22589.5, "level": "full" }, "parse": { - "us": 23091.8, + "us": 23205.4, "level": "full" } } @@ -1306,67 +1306,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 55286.0, + "us": 27563.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 55286.0, + "us": 27563.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 55286.0, + "us": 27563.4, "level": "full" }, "parse": { - "us": 166730.9, + "us": 149627.2, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 31498.8, + "variant": "read", + "us": 30921.8, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 31498.8, + "variant": "read", + "us": 30921.8, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 31543.8, + "us": 30936.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 31543.8, + "us": 30936.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 30239.6, - "level": "full" - }, - "insitu (copy)": { - "us": 31498.8, - "level": "full" - }, - "read (reused allocator)": { - "us": 31543.8, - "level": "full" - }, - "read (raw numbers)": { - "us": 31545.0, + "us": 29796.4, "level": "full" }, "read": { - "us": 31614.2, + "us": 30921.8, + "level": "full" + }, + "read (reused allocator)": { + "us": 30936.3, + "level": "full" + }, + "insitu (copy)": { + "us": 30984.0, + "level": "full" + }, + "read (raw numbers)": { + "us": 31081.2, "level": "full" } } @@ -1374,31 +1374,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 28843.2, + "us": 28889.7, "level": "full" }, "best_any": { "variant": "DOM", - "us": 28843.2, + "us": 28889.7, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 28444.3, + "us": 28859.5, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 28444.3, + "us": 28859.5, "level": "full" }, "variants": { "DOM (reused)": { - "us": 28444.3, + "us": 28859.5, "level": "full" }, "DOM": { - "us": 28843.2, + "us": 28889.7, "level": "full" } } @@ -1407,14 +1407,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 41617.2, + "us": 40996.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 41617.2, + "us": 40996.5, "level": "no UTF-8" } } @@ -1422,35 +1422,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 45192.2, + "us": 46251.0, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 45192.2, + "us": 46251.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 45192.2, + "us": 46251.0, "level": "full" }, "generic (double)": { - "us": 89467.3, + "us": 90091.9, "level": "partial" }, "generic (double, strict)": { - "us": 89602.5, + "us": 90132.8, "level": "full" }, "generic": { - "us": 131063.1, + "us": 133300.4, "level": "partial" }, "generic (strict)": { - "us": 131198.8, + "us": 133749.5, "level": "full" } } @@ -1458,47 +1458,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 53939.3, + "us": 54480.0, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 53939.3, + "us": 54480.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 54415.7, + "us": 54238.3, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 54415.7, + "us": 54238.3, "level": "full" }, "variants": { + "SAX (reused)": { + "us": 54238.3, + "level": "full" + }, "SAX (numbers: none)": { - "us": 53939.3, + "us": 54480.0, "level": "full" }, "SAX": { - "us": 54192.5, - "level": "full" - }, - "SAX (reused)": { - "us": 54415.7, + "us": 54537.5, "level": "full" }, "parser (reused)": { - "us": 88553.8, - "level": "full" - }, - "parse": { - "us": 90383.7, + "us": 89137.2, "level": "full" }, "parse (numbers: none)": { - "us": 90510.6, + "us": 90504.9, + "level": "full" + }, + "parse": { + "us": 91394.0, "level": "full" } } @@ -1506,95 +1506,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 134679.0, + "us": 133695.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 64733.5, + "us": 64731.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 156135.2, + "us": 156954.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 143701.0, + "us": 143505.8, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 63589.0, + "us": 63452.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 64733.5, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 71496.2, + "us": 64731.8, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 71771.5, + "us": 71059.4, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 71655.5, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 134679.0, + "us": 133695.3, "level": "full" }, "SAX (string stream)": { - "us": 134981.8, + "us": 134438.4, "level": "full" }, - "SAX (no encoding check)": { - "us": 136366.4, + "SAX (raw numbers) (no encoding check)": { + "us": 136328.5, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 136778.8, + "us": 136646.2, "level": "no UTF-8" }, - "SAX (raw numbers) (no encoding check)": { - "us": 137711.7, + "SAX (no encoding check)": { + "us": 136903.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 140586.2, + "us": 138550.0, "level": "full" }, "insitu (copy)": { - "us": 141376.9, + "us": 139341.2, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 143701.0, + "us": 143505.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 145538.5, + "us": 145901.9, "level": "no UTF-8" }, "SAX": { - "us": 154349.1, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 154625.2, + "us": 154061.0, "level": "full" }, "SAX (default precision)": { - "us": 155243.8, + "us": 154526.9, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 154603.9, "level": "full" }, "Document (reused allocator)": { - "us": 156135.2, + "us": 156954.4, "level": "full" }, "Document": { - "us": 157729.5, + "us": 159044.5, "level": "full" } } @@ -1627,30 +1627,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 31450.0, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 31450.0, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 31450.0, - "level": "full" - }, - "IgnoredAny": { - "us": 47199.4, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -1686,6 +1662,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 31450.0, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 31450.0, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 31450.0, + "level": "full" + }, + "IgnoredAny": { + "us": 47199.4, + "level": "full" + } + } } }, "status": { @@ -1728,23 +1728,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 2.4, + "us": 1.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 2.4, + "us": 1.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 2.4, + "us": 1.1, "level": "full" }, "parse": { - "us": 7.6, + "us": 6.6, "level": "full" } } @@ -1829,14 +1829,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1.6, + "us": 1.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1.6, + "us": 1.7, "level": "no UTF-8" } } @@ -1872,7 +1872,7 @@ "level": "partial" }, "generic (strict)": { - "us": 6.5, + "us": 6.6, "level": "full" } } @@ -1880,12 +1880,12 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 2.3, + "us": 2.4, "level": "full" }, "best_any": { "variant": "SAX", - "us": 2.3, + "us": 2.4, "level": "full" }, "best_reused": { @@ -1899,16 +1899,16 @@ "level": "full" }, "variants": { - "SAX": { + "SAX (reused)": { "us": 2.3, "level": "full" }, + "SAX": { + "us": 2.4, + "level": "full" + }, "SAX (numbers: none)": { - "us": 2.3, - "level": "full" - }, - "SAX (reused)": { - "us": 2.3, + "us": 2.4, "level": "full" }, "parser (reused)": { @@ -1928,31 +1928,31 @@ "RapidJSON": { "best": { "variant": "SAX (default precision)", - "us": 6.0, + "us": 6.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2.6, + "us": 2.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 6.2, + "us": 6.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 5.4, + "us": 5.5, "level": "no UTF-8" }, "variants": { "insitu (copy) (no encoding check)": { - "us": 2.6, + "us": 2.7, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 2.6, + "us": 2.7, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { @@ -1972,26 +1972,18 @@ "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 5.4, + "us": 5.5, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 5.4, + "us": 5.5, "level": "no UTF-8" }, - "SAX (default precision)": { - "us": 6.0, - "level": "full" - }, "Document (no encoding check)": { "us": 6.0, "level": "no UTF-8" }, - "SAX": { - "us": 6.1, - "level": "full" - }, - "SAX (string stream)": { + "SAX (default precision)": { "us": 6.1, "level": "full" }, @@ -1999,7 +1991,11 @@ "us": 6.1, "level": "full" }, - "Document (reused allocator)": { + "SAX": { + "us": 6.2, + "level": "full" + }, + "SAX (string stream)": { "us": 6.2, "level": "full" }, @@ -2007,7 +2003,7 @@ "us": 6.3, "level": "full" }, - "insitu (copy untimed)": { + "Document (reused allocator)": { "us": 6.4, "level": "full" }, @@ -2015,8 +2011,12 @@ "us": 6.5, "level": "full" }, + "insitu (copy untimed)": { + "us": 6.5, + "level": "full" + }, "Document": { - "us": 6.7, + "us": 6.8, "level": "full" } } @@ -2049,30 +2049,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1.4, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 1.4, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1.4, - "level": "full" - }, - "IgnoredAny": { - "us": 1.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -2108,41 +2084,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1.4, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 1.4, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1.4, + "level": "full" + }, + "IgnoredAny": { + "us": 1.8, + "level": "full" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "accept", - "us": 149.1, + "us": 151.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 149.1, + "us": 151.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 159.6, + "us": 157.7, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 159.6, + "us": 157.7, "level": "full" }, "variants": { "accept": { - "us": 149.1, + "us": 151.0, "level": "full" }, "read (reused)": { - "us": 159.6, + "us": 157.7, "level": "full" }, "parse": { - "us": 161.4, + "us": 164.1, "level": "full" } } @@ -2150,23 +2150,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 398.8, + "us": 185.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 398.8, + "us": 185.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 398.8, + "us": 185.4, "level": "full" }, "parse": { - "us": 1321.2, + "us": 1161.4, "level": "full" } } @@ -2174,43 +2174,43 @@ "yyjson": { "best": { "variant": "read", - "us": 163.5, + "us": 158.3, "level": "full" }, "best_any": { "variant": "read", - "us": 163.5, + "us": 158.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 161.0, + "us": 160.1, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 161.0, + "us": 160.1, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 154.3, - "level": "full" - }, - "read (reused allocator)": { - "us": 161.0, + "us": 153.2, "level": "full" }, "read": { - "us": 163.5, + "us": 158.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 160.1, "level": "full" }, "insitu (copy)": { - "us": 165.8, + "us": 162.8, "level": "full" }, "read (raw numbers)": { - "us": 172.4, + "us": 171.1, "level": "full" } } @@ -2218,31 +2218,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 186.5, + "us": 187.9, "level": "full" }, "best_any": { "variant": "DOM", - "us": 186.5, + "us": 187.9, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 168.3, + "us": 172.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 168.3, + "us": 172.0, "level": "full" }, "variants": { "DOM (reused)": { - "us": 168.3, + "us": 172.0, "level": "full" }, "DOM": { - "us": 186.5, + "us": 187.9, "level": "full" } } @@ -2251,14 +2251,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 257.0, + "us": 258.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 257.0, + "us": 258.7, "level": "no UTF-8" } } @@ -2266,83 +2266,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 272.7, + "us": 275.9, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 272.7, + "us": 275.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 272.7, + "us": 275.9, + "level": "full" + }, + "generic (double, strict)": { + "us": 822.9, "level": "full" }, "generic (double)": { - "us": 825.7, + "us": 830.6, "level": "partial" }, - "generic (double, strict)": { - "us": 830.4, - "level": "full" - }, - "generic (strict)": { - "us": 1166.5, - "level": "full" - }, "generic": { - "us": 1186.7, + "us": 1162.5, "level": "partial" + }, + "generic (strict)": { + "us": 1177.5, + "level": "full" } } }, "Boost.JSON": { "best": { "variant": "SAX", - "us": 455.1, + "us": 464.0, "level": "full" }, "best_any": { "variant": "SAX", - "us": 455.1, + "us": 464.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 455.7, + "us": 460.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 455.7, + "us": 460.7, "level": "full" }, "variants": { - "SAX": { - "us": 455.1, + "SAX (reused)": { + "us": 460.7, "level": "full" }, - "SAX (reused)": { - "us": 455.7, + "SAX": { + "us": 464.0, "level": "full" }, "SAX (numbers: none)": { - "us": 461.0, + "us": 465.6, "level": "full" }, "parse (numbers: none)": { - "us": 776.7, + "us": 778.6, "level": "full" }, "parser (reused)": { - "us": 779.3, + "us": 779.8, "level": "full" }, "parse": { - "us": 779.8, + "us": 781.4, "level": "full" } } @@ -2350,95 +2350,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1082.7, + "us": 1091.0, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 480.8, + "us": 474.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1153.4, + "us": 1184.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1012.0, + "us": 1029.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 474.2, + "us": 473.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 480.8, + "us": 474.5, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 538.5, + "us": 542.9, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 548.1, + "us": 559.9, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 945.8, + "us": 964.6, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 967.8, + "us": 986.4, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 980.1, + "us": 1006.3, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1012.0, + "us": 1029.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1025.5, + "us": 1033.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1077.1, + "us": 1083.0, "level": "full" }, "insitu (copy)": { - "us": 1082.7, - "level": "full" - }, - "SAX (string stream, default precision)": { - "us": 1106.9, - "level": "full" - }, - "SAX (default precision)": { - "us": 1108.3, + "us": 1091.0, "level": "full" }, "SAX (string stream)": { - "us": 1115.1, + "us": 1119.6, + "level": "full" + }, + "SAX (default precision)": { + "us": 1122.7, + "level": "full" + }, + "SAX (string stream, default precision)": { + "us": 1124.9, "level": "full" }, "SAX": { - "us": 1133.3, + "us": 1133.6, "level": "full" }, "SAX (raw numbers)": { - "us": 1148.4, + "us": 1155.3, "level": "full" }, "Document (reused allocator)": { - "us": 1153.4, + "us": 1184.7, "level": "full" }, "Document": { - "us": 1162.1, + "us": 1193.5, "level": "full" } } @@ -2471,30 +2471,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 235.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 235.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 235.7, - "level": "full" - }, - "IgnoredAny": { - "us": 315.3, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -2530,41 +2506,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 235.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 235.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 235.7, + "level": "full" + }, + "IgnoredAny": { + "us": 315.3, + "level": "full" + } + } } }, "citm_catalog_min": { "nlohmann json_document": { "best": { "variant": "accept", - "us": 193.7, + "us": 195.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 193.7, + "us": 195.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 243.8, + "us": 243.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 243.8, + "us": 243.6, "level": "full" }, "variants": { "accept": { - "us": 193.7, + "us": 195.0, "level": "full" }, "read (reused)": { - "us": 243.8, + "us": 243.6, "level": "full" }, "parse": { - "us": 244.2, + "us": 246.0, "level": "full" } } @@ -2572,23 +2572,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 678.0, + "us": 279.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 678.0, + "us": 279.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 678.0, + "us": 279.3, "level": "full" }, "parse": { - "us": 2314.4, + "us": 1975.0, "level": "full" } } @@ -2596,43 +2596,43 @@ "yyjson": { "best": { "variant": "read", - "us": 284.2, + "us": 285.1, "level": "full" }, "best_any": { "variant": "read", - "us": 284.2, + "us": 285.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 286.7, + "us": 284.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 286.7, + "us": 284.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 274.6, - "level": "full" - }, - "read": { - "us": 284.2, - "level": "full" - }, - "insitu (copy)": { - "us": 284.6, + "us": 277.2, "level": "full" }, "read (reused allocator)": { - "us": 286.7, + "us": 284.3, + "level": "full" + }, + "read": { + "us": 285.1, + "level": "full" + }, + "insitu (copy)": { + "us": 285.2, "level": "full" }, "read (raw numbers)": { - "us": 347.5, + "us": 340.6, "level": "full" } } @@ -2640,31 +2640,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 332.8, + "us": 325.8, "level": "full" }, "best_any": { "variant": "DOM", - "us": 332.8, + "us": 325.8, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 325.6, + "us": 323.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 325.6, + "us": 323.7, "level": "full" }, "variants": { "DOM (reused)": { - "us": 325.6, + "us": 323.7, "level": "full" }, "DOM": { - "us": 332.8, + "us": 325.8, "level": "full" } } @@ -2673,14 +2673,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 552.5, + "us": 550.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 552.5, + "us": 550.5, "level": "no UTF-8" } } @@ -2688,83 +2688,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 470.9, + "us": 469.6, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 470.9, + "us": 469.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 470.9, + "us": 469.6, "level": "full" }, "generic (double)": { - "us": 1580.3, + "us": 1565.8, "level": "partial" }, "generic (double, strict)": { - "us": 1592.4, + "us": 1583.1, + "level": "full" + }, + "generic (strict)": { + "us": 2338.3, "level": "full" }, "generic": { - "us": 2359.8, + "us": 2366.3, "level": "partial" - }, - "generic (strict)": { - "us": 2369.5, - "level": "full" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 438.8, + "us": 442.9, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 438.8, + "us": 442.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 464.0, + "us": 457.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 464.0, + "us": 457.7, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 438.8, - "level": "full" - }, - "SAX": { - "us": 457.3, + "us": 442.9, "level": "full" }, "SAX (reused)": { + "us": 457.7, + "level": "full" + }, + "SAX": { "us": 464.0, "level": "full" }, "parse (numbers: none)": { - "us": 927.2, - "level": "full" - }, - "parser (reused)": { - "us": 945.5, + "us": 931.8, "level": "full" }, "parse": { - "us": 952.3, + "us": 946.5, + "level": "full" + }, + "parser (reused)": { + "us": 956.3, "level": "full" } } @@ -2772,95 +2772,95 @@ "RapidJSON": { "best": { "variant": "SAX (default precision)", - "us": 936.3, + "us": 922.6, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 653.3, + "us": 655.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1238.4, + "us": 1246.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1151.2, + "us": 1157.7, "level": "no UTF-8" }, "variants": { "SAX (string stream, default precision) (no encoding check)": { - "us": 653.3, + "us": 655.7, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 744.5, + "us": 756.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 754.5, + "us": 771.2, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 822.4, + "us": 821.3, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 869.2, + "us": 864.0, "level": "no UTF-8" }, "SAX (default precision)": { - "us": 936.3, + "us": 922.6, "level": "full" }, "SAX (string stream, default precision)": { - "us": 970.2, + "us": 967.6, + "level": "full" + }, + "SAX (string stream)": { + "us": 1048.5, "level": "full" }, "SAX (no encoding check)": { - "us": 1022.5, + "us": 1059.1, "level": "no UTF-8" }, - "SAX (string stream)": { - "us": 1038.3, + "insitu (copy untimed)": { + "us": 1113.6, "level": "full" }, "insitu (copy)": { - "us": 1113.0, - "level": "full" - }, - "insitu (copy untimed)": { - "us": 1114.2, + "us": 1128.7, "level": "full" }, "SAX": { - "us": 1126.3, + "us": 1134.8, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 1151.2, + "Document (no encoding check)": { + "us": 1153.8, "level": "no UTF-8" }, - "Document (no encoding check)": { - "us": 1152.5, + "Document (reused allocator) (no encoding check)": { + "us": 1157.7, "level": "no UTF-8" }, "Document": { - "us": 1235.8, + "us": 1218.5, "level": "full" }, "Document (reused allocator)": { - "us": 1238.4, + "us": 1246.5, "level": "full" }, "SAX (raw numbers) (no encoding check)": { - "us": 1281.6, + "us": 1358.8, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 1337.9, + "us": 1428.7, "level": "full" } } @@ -2893,30 +2893,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 380.5, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 380.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 380.5, - "level": "full" - }, - "IgnoredAny": { - "us": 570.4, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "tape (copy)", @@ -2952,6 +2928,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 380.5, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 380.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 380.5, + "level": "full" + }, + "IgnoredAny": { + "us": 570.4, + "level": "full" + } + } } } }, @@ -2960,35 +2960,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 224.0, + "us": 219.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 224.0, + "us": 219.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 223.5, + "us": 220.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 223.5, + "us": 220.2, "level": "full" }, "variants": { - "read (reused)": { - "us": 223.5, + "parse": { + "us": 219.0, "level": "full" }, - "parse": { - "us": 224.0, + "read (reused)": { + "us": 220.2, "level": "full" }, "parse_copy": { - "us": 230.6, + "us": 233.0, "level": "full" } } @@ -2996,23 +2996,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 465.2, + "us": 303.0, "level": "full" }, "best_any": { "variant": "sax", - "us": 465.2, + "us": 303.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 465.2, + "us": 303.0, "level": "full" }, "parse": { - "us": 1414.6, + "us": 1266.7, "level": "full" } } @@ -3020,39 +3020,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 230.9, + "us": 231.0, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 230.9, + "us": 231.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 237.0, + "us": 237.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 237.0, + "us": 237.2, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 218.7, + "us": 221.7, "level": "full" }, "insitu (copy)": { - "us": 230.9, + "us": 231.0, "level": "full" }, "read": { - "us": 231.2, + "us": 233.5, "level": "full" }, "read (reused allocator)": { - "us": 237.0, + "us": 237.2, "level": "full" } } @@ -3060,39 +3060,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 248.8, + "us": 249.3, "level": "full" }, "best_any": { "variant": "DOM", - "us": 248.8, + "us": 249.3, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 247.3, + "us": 247.5, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 247.3, + "us": 247.5, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 247.3, - "level": "full" - }, - "DOM (reused)": { - "us": 247.4, + "us": 247.5, "level": "full" }, "DOM": { - "us": 248.8, + "us": 249.3, + "level": "full" + }, + "DOM (reused)": { + "us": 249.6, "level": "full" }, "On-Demand": { - "us": 251.1, + "us": 254.2, "level": "full" } } @@ -3101,14 +3101,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 427.8, + "us": 428.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 427.8, + "us": 428.0, "level": "no UTF-8" } } @@ -3116,35 +3116,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 967.9, + "us": 973.5, "level": "full" }, "best_any": { "variant": "generic (double, strict)", - "us": 967.9, + "us": 973.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double, strict)": { - "us": 967.9, + "us": 973.5, "level": "full" }, "generic (double)": { - "us": 970.8, + "us": 978.5, "level": "partial" }, "generic": { - "us": 1318.0, + "us": 1333.5, "level": "partial" }, "generic (strict)": { - "us": 1326.5, + "us": 1334.0, "level": "full" }, "lazy_json": { - "us": 1955.2, + "us": 1921.7, "level": "partial" } }, @@ -3155,39 +3155,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 535.0, + "us": 538.3, "level": "full" }, "best_any": { "variant": "SAX", - "us": 535.0, + "us": 538.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 532.9, + "us": 534.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 532.9, + "us": 534.7, "level": "full" }, "variants": { "SAX (reused)": { - "us": 532.9, + "us": 534.7, "level": "full" }, "SAX": { - "us": 535.0, - "level": "full" - }, - "parse": { - "us": 914.4, + "us": 538.3, "level": "full" }, "parser (reused)": { - "us": 915.5, + "us": 910.1, + "level": "full" + }, + "parse": { + "us": 923.7, "level": "full" } } @@ -3195,71 +3195,71 @@ "RapidJSON": { "best": { "variant": "SAX", - "us": 1329.3, + "us": 1332.2, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 735.1, + "us": 738.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1401.0, + "us": 1409.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1231.2, + "us": 1237.2, "level": "no UTF-8" }, "variants": { - "SAX (string stream) (no encoding check)": { - "us": 735.1, + "insitu (copy untimed) (no encoding check)": { + "us": 737.8, "level": "no UTF-8" }, - "insitu (copy untimed) (no encoding check)": { - "us": 739.2, + "SAX (string stream) (no encoding check)": { + "us": 738.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 745.0, + "us": 753.8, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1160.1, + "us": 1160.8, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1231.2, + "us": 1237.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1243.0, + "us": 1254.2, "level": "no UTF-8" }, "SAX": { - "us": 1329.3, + "us": 1332.2, "level": "full" }, "insitu (copy untimed)": { - "us": 1355.9, - "level": "full" - }, - "SAX (string stream)": { - "us": 1357.7, + "us": 1355.2, "level": "full" }, "insitu (copy)": { - "us": 1358.5, + "us": 1365.1, "level": "full" }, - "Document (reused allocator)": { - "us": 1401.0, + "SAX (string stream)": { + "us": 1365.5, "level": "full" }, "Document": { - "us": 1405.1, + "us": 1408.2, + "level": "full" + }, + "Document (reused allocator)": { + "us": 1409.8, "level": "full" } } @@ -3288,30 +3288,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 363.8, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 363.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 363.8, - "level": "full" - }, - "Value": { - "us": 464.0, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -3347,41 +3323,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 363.8, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 363.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 363.8, + "level": "full" + }, + "Value": { + "us": 464.0, + "level": "full" + } + } } }, "citm_catalog": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 484.7, + "us": 493.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 484.7, + "us": 493.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 483.7, + "us": 486.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 483.7, + "us": 486.1, "level": "full" }, "variants": { "read (reused)": { - "us": 483.7, + "us": 486.1, "level": "full" }, "parse": { - "us": 484.7, + "us": 493.0, "level": "full" }, "parse_copy": { - "us": 512.4, + "us": 516.6, "level": "full" } } @@ -3389,63 +3389,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 925.3, + "us": 602.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 925.3, + "us": 602.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 925.3, + "us": 602.3, "level": "full" }, "parse": { - "us": 2535.6, + "us": 2251.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 581.2, + "variant": "read", + "us": 571.3, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 581.2, + "variant": "read", + "us": 571.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 587.0, + "us": 589.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 587.0, + "us": 589.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 550.7, - "level": "full" - }, - "insitu (copy)": { - "us": 581.2, + "us": 552.5, "level": "full" }, "read": { - "us": 582.7, + "us": 571.3, + "level": "full" + }, + "insitu (copy)": { + "us": 577.8, "level": "full" }, "read (reused allocator)": { - "us": 587.0, + "us": 589.7, "level": "full" } } @@ -3453,39 +3453,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 570.8, + "us": 572.3, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 570.8, + "us": 572.3, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 581.8, + "us": 583.8, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 581.8, + "us": 583.8, "level": "full" }, "variants": { "On-Demand": { - "us": 570.8, + "us": 572.3, "level": "full" }, "On-Demand (reused)": { - "us": 581.8, - "level": "full" - }, - "DOM (reused)": { - "us": 587.2, + "us": 583.8, "level": "full" }, "DOM": { - "us": 590.9, + "us": 593.0, + "level": "full" + }, + "DOM (reused)": { + "us": 595.4, "level": "full" } } @@ -3494,14 +3494,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1086.6, + "us": 1098.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1086.6, + "us": 1098.5, "level": "no UTF-8" } } @@ -3509,35 +3509,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2048.8, + "us": 2057.3, "level": "full" }, "best_any": { - "variant": "generic (double, strict)", - "us": 2048.8, - "level": "full" + "variant": "generic (double)", + "us": 2045.1, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double, strict)": { - "us": 2048.8, - "level": "full" - }, "generic (double)": { - "us": 2049.7, + "us": 2045.1, "level": "partial" }, + "generic (double, strict)": { + "us": 2057.3, + "level": "full" + }, "generic": { - "us": 2832.0, + "us": 2837.5, "level": "partial" }, "generic (strict)": { - "us": 2856.2, + "us": 2857.5, "level": "full" }, "lazy_json": { - "us": 7968.5, + "us": 8218.5, "level": "partial" } }, @@ -3548,39 +3548,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 1010.2, + "us": 1027.5, "level": "full" }, "best_any": { "variant": "SAX", - "us": 1010.2, + "us": 1027.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 1006.5, + "us": 1008.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 1006.5, + "us": 1008.1, "level": "full" }, "variants": { "SAX (reused)": { - "us": 1006.5, + "us": 1008.1, "level": "full" }, "SAX": { - "us": 1010.2, + "us": 1027.5, "level": "full" }, "parse": { - "us": 1574.8, + "us": 1608.1, "level": "full" }, "parser (reused)": { - "us": 1576.3, + "us": 1610.4, "level": "full" } } @@ -3588,71 +3588,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 1455.3, + "us": 1471.8, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 1136.2, + "us": 1156.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1790.8, + "us": 1825.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1712.6, + "us": 1746.0, "level": "no UTF-8" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 1136.2, + "us": 1156.8, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1223.3, + "us": 1241.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1255.3, + "us": 1279.6, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 1455.3, + "us": 1471.8, "level": "full" }, "SAX (no encoding check)": { - "us": 1565.0, + "us": 1565.6, "level": "no UTF-8" }, - "SAX": { - "us": 1639.8, + "insitu (copy untimed)": { + "us": 1649.0, "level": "full" }, - "insitu (copy untimed)": { - "us": 1657.8, + "SAX": { + "us": 1661.7, "level": "full" }, "insitu (copy)": { - "us": 1670.6, + "us": 1698.7, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1712.6, + "us": 1746.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1716.0, + "us": 1746.4, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 1790.8, + "Document": { + "us": 1805.8, "level": "full" }, - "Document": { - "us": 1804.8, + "Document (reused allocator)": { + "us": 1825.7, "level": "full" } } @@ -3681,30 +3681,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 777.5, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 777.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 777.5, - "level": "full" - }, - "Value": { - "us": 1008.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -3740,41 +3716,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 777.5, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 777.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 777.5, + "level": "full" + }, + "Value": { + "us": 1008.5, + "level": "full" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 1815.8, + "us": 1802.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 1815.8, + "us": 1802.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1814.8, + "us": 1804.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1814.8, + "us": 1804.9, "level": "full" }, "variants": { - "read (reused)": { - "us": 1814.8, + "parse": { + "us": 1802.6, "level": "full" }, - "parse": { - "us": 1815.8, + "read (reused)": { + "us": 1804.9, "level": "full" }, "parse_copy": { - "us": 1861.5, + "us": 1842.5, "level": "full" } } @@ -3782,23 +3782,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 3072.1, + "us": 2207.7, "level": "full" }, "best_any": { "variant": "sax", - "us": 3072.1, + "us": 2207.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 3072.1, + "us": 2207.7, "level": "full" }, "parse": { - "us": 6451.6, + "us": 5477.1, "level": "full" } } @@ -3806,39 +3806,39 @@ "yyjson": { "best": { "variant": "read", - "us": 1948.4, + "us": 1875.0, "level": "full" }, "best_any": { "variant": "read", - "us": 1948.4, + "us": 1875.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1945.0, + "us": 1919.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1945.0, + "us": 1919.2, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 1906.5, - "level": "full" - }, - "read (reused allocator)": { - "us": 1945.0, + "us": 1837.7, "level": "full" }, "read": { - "us": 1948.4, + "us": 1875.0, "level": "full" }, "insitu (copy)": { - "us": 1958.3, + "us": 1880.8, + "level": "full" + }, + "read (reused allocator)": { + "us": 1919.2, "level": "full" } } @@ -3846,39 +3846,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 2374.0, + "us": 2397.6, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 2374.0, + "us": 2397.6, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 2379.3, + "us": 2381.3, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 2379.3, + "us": 2381.3, "level": "full" }, "variants": { - "On-Demand": { - "us": 2374.0, + "On-Demand (reused)": { + "us": 2381.3, "level": "full" }, - "On-Demand (reused)": { - "us": 2379.3, + "On-Demand": { + "us": 2397.6, "level": "full" }, "DOM (reused)": { - "us": 2426.8, + "us": 2420.6, "level": "full" }, "DOM": { - "us": 2431.0, + "us": 2427.9, "level": "full" } } @@ -3887,14 +3887,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 2992.6, + "us": 2975.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 2992.6, + "us": 2975.2, "level": "no UTF-8" } } @@ -3902,35 +3902,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 6330.8, + "us": 6337.5, "level": "full" }, "best_any": { - "variant": "generic (double, strict)", - "us": 6330.8, - "level": "full" + "variant": "generic (double)", + "us": 6326.1, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double, strict)": { - "us": 6330.8, - "level": "full" - }, "generic (double)": { - "us": 6408.4, + "us": 6326.1, "level": "partial" }, - "generic (strict)": { - "us": 9738.4, + "generic (double, strict)": { + "us": 6337.5, "level": "full" }, "generic": { - "us": 9802.6, + "us": 9632.3, "level": "partial" }, + "generic (strict)": { + "us": 9651.4, + "level": "full" + }, "lazy_json": { - "us": 12005.4, + "us": 11982.8, "level": "partial" } }, @@ -3941,39 +3941,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 3066.7, + "us": 3084.4, "level": "full" }, "best_any": { "variant": "SAX", - "us": 3066.7, + "us": 3084.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 3067.8, + "us": 3077.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 3067.8, + "us": 3077.8, "level": "full" }, "variants": { - "SAX": { - "us": 3066.7, + "SAX (reused)": { + "us": 3077.8, "level": "full" }, - "SAX (reused)": { - "us": 3067.8, + "SAX": { + "us": 3084.4, "level": "full" }, "parser (reused)": { - "us": 4017.5, + "us": 4002.8, "level": "full" }, "parse": { - "us": 4046.4, + "us": 4022.4, "level": "full" } } @@ -3981,71 +3981,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 6453.3, + "us": 6448.0, "level": "full" }, "best_any": { - "variant": "SAX (string stream)", - "us": 6453.3, - "level": "full" + "variant": "SAX (string stream) (no encoding check)", + "us": 6432.3, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 7705.2, + "us": 7843.1, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 7705.2, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 7705.3, + "level": "no UTF-8" }, "variants": { - "SAX (string stream)": { - "us": 6453.3, - "level": "full" - }, "SAX (string stream) (no encoding check)": { - "us": 6484.0, + "us": 6432.3, "level": "no UTF-8" }, + "SAX (string stream)": { + "us": 6448.0, + "level": "full" + }, "SAX (no encoding check)": { - "us": 7003.9, + "us": 6919.5, "level": "no UTF-8" }, "SAX": { - "us": 7006.7, + "us": 6931.2, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 7199.5, + "us": 7134.5, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 7201.1, + "insitu (copy untimed)": { + "us": 7194.9, "level": "full" }, - "insitu (copy untimed)": { - "us": 7220.0, + "insitu (copy)": { + "us": 7216.1, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 7258.3, - "level": "no UTF-8" - }, - "Document (reused allocator)": { - "us": 7705.2, - "level": "full" - }, - "Document": { - "us": 7736.4, - "level": "full" - }, - "Document (no encoding check)": { - "us": 7768.0, + "us": 7224.8, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 7820.7, + "us": 7705.3, + "level": "no UTF-8" + }, + "Document": { + "us": 7798.2, + "level": "full" + }, + "Document (reused allocator)": { + "us": 7843.1, + "level": "full" + }, + "Document (no encoding check)": { + "us": 7854.4, "level": "no UTF-8" } } @@ -4074,30 +4074,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 2702.9, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 2702.9, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 2702.9, - "level": "full" - }, - "Value": { - "us": 3706.6, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -4133,41 +4109,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 2702.9, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 2702.9, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 2702.9, + "level": "full" + }, + "Value": { + "us": 3706.6, + "level": "full" + } + } } }, "jeopardy": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 28986.8, + "us": 28897.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 28986.8, + "us": 28897.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 29025.1, + "us": 28802.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 29025.1, + "us": 28802.2, "level": "full" }, "variants": { - "parse": { - "us": 28986.8, + "read (reused)": { + "us": 28802.2, "level": "full" }, - "read (reused)": { - "us": 29025.1, + "parse": { + "us": 28897.5, "level": "full" }, "parse_copy": { - "us": 30541.2, + "us": 30213.5, "level": "full" } } @@ -4175,23 +4175,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 64088.8, + "us": 44687.7, "level": "full" }, "best_any": { "variant": "sax", - "us": 64088.8, + "us": 44687.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 64088.8, + "us": 44687.7, "level": "full" }, "parse": { - "us": 174598.5, + "us": 159072.0, "level": "full" } } @@ -4199,39 +4199,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 38250.8, + "us": 37817.0, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 38250.8, + "us": 37817.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 38317.9, + "us": 38209.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 38317.9, + "us": 38209.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 37511.6, + "us": 37055.6, "level": "full" }, "insitu (copy)": { - "us": 38250.8, - "level": "full" - }, - "read (reused allocator)": { - "us": 38317.9, + "us": 37817.0, "level": "full" }, "read": { - "us": 38916.7, + "us": 38163.2, + "level": "full" + }, + "read (reused allocator)": { + "us": 38209.0, "level": "full" } } @@ -4239,39 +4239,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 35111.1, + "us": 34994.5, "level": "full" }, "best_any": { "variant": "DOM", - "us": 35111.1, + "us": 34994.5, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 35264.0, + "us": 35152.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 35264.0, + "us": 35152.6, "level": "full" }, "variants": { "DOM": { - "us": 35111.1, + "us": 34994.5, "level": "full" }, "DOM (reused)": { - "us": 35264.0, + "us": 35152.6, "level": "full" }, "On-Demand (reused)": { - "us": 35698.0, + "us": 35647.7, "level": "full" }, "On-Demand": { - "us": 35730.0, + "us": 35725.2, "level": "full" } } @@ -4280,14 +4280,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 48687.5, + "us": 48487.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 48687.5, + "us": 48487.0, "level": "no UTF-8" } } @@ -4295,35 +4295,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 99763.0, + "us": 100271.7, "level": "full" }, "best_any": { "variant": "generic (double)", - "us": 99629.9, + "us": 100267.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double)": { - "us": 99629.9, + "us": 100267.7, "level": "partial" }, "generic (double, strict)": { - "us": 99763.0, - "level": "full" - }, - "generic (strict)": { - "us": 141016.3, + "us": 100271.7, "level": "full" }, "generic": { - "us": 141315.6, + "us": 143688.7, "level": "partial" }, + "generic (strict)": { + "us": 144313.7, + "level": "full" + }, "lazy_json": { - "us": 149334.4, + "us": 150613.8, "level": "partial" } }, @@ -4334,39 +4334,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 53704.2, + "us": 54765.4, "level": "full" }, "best_any": { "variant": "SAX", - "us": 53704.2, + "us": 54765.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 53956.3, + "us": 53655.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 53956.3, + "us": 53655.1, "level": "full" }, "variants": { - "SAX": { - "us": 53704.2, - "level": "full" - }, "SAX (reused)": { - "us": 53956.3, + "us": 53655.1, "level": "full" }, - "parser (reused)": { - "us": 95269.8, + "SAX": { + "us": 54765.4, "level": "full" }, "parse": { - "us": 96281.3, + "us": 95469.6, + "level": "full" + }, + "parser (reused)": { + "us": 96878.1, "level": "full" } } @@ -4374,71 +4374,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 136103.0, + "us": 136329.9, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 72226.9, + "us": 71646.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 163157.3, + "us": 163920.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 149474.4, + "us": 150384.2, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 69604.5, + "us": 70284.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 72226.9, + "us": 71646.5, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 72406.0, + "us": 72349.4, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 136103.0, + "us": 136329.9, "level": "full" }, "SAX (no encoding check)": { - "us": 136834.2, + "us": 137252.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 145645.6, + "us": 146204.5, + "level": "full" + }, + "insitu (copy)": { + "us": 148138.9, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 149474.4, - "level": "no UTF-8" - }, - "insitu (copy)": { - "us": 149723.9, - "level": "full" - }, - "Document (no encoding check)": { - "us": 151254.2, + "us": 150384.2, "level": "no UTF-8" }, "SAX": { - "us": 152317.3, + "us": 151978.4, "level": "full" }, + "Document (no encoding check)": { + "us": 152992.5, + "level": "no UTF-8" + }, "Document (reused allocator)": { - "us": 163157.3, + "us": 163920.7, "level": "full" }, "Document": { - "us": 166280.8, + "us": 166452.1, "level": "full" } } @@ -4467,30 +4467,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 41360.7, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 41360.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 41360.7, - "level": "full" - }, - "Value": { - "us": 47265.9, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -4526,6 +4502,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 41360.7, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 41360.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 41360.7, + "level": "full" + }, + "Value": { + "us": 47265.9, + "level": "full" + } + } } }, "status": { @@ -4568,23 +4568,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 2.4, + "us": 1.6, "level": "full" }, "best_any": { "variant": "sax", - "us": 2.4, + "us": 1.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 2.4, + "us": 1.6, "level": "full" }, "parse": { - "us": 7.9, + "us": 6.8, "level": "full" } } @@ -4592,12 +4592,12 @@ "yyjson": { "best": { "variant": "read", - "us": 1.2, + "us": 1.1, "level": "full" }, "best_any": { "variant": "read", - "us": 1.2, + "us": 1.1, "level": "full" }, "best_reused": { @@ -4611,6 +4611,10 @@ "level": "full" }, "variants": { + "read": { + "us": 1.1, + "level": "full" + }, "insitu (copy untimed)": { "us": 1.1, "level": "full" @@ -4619,10 +4623,6 @@ "us": 1.1, "level": "full" }, - "read": { - "us": 1.2, - "level": "full" - }, "insitu (copy)": { "us": 1.2, "level": "full" @@ -4704,7 +4704,7 @@ "level": "partial" }, "generic (double)": { - "us": 4.9, + "us": 4.8, "level": "partial" }, "generic (double, strict)": { @@ -4767,7 +4767,7 @@ "RapidJSON": { "best": { "variant": "SAX", - "us": 6.1, + "us": 6.2, "level": "full" }, "best_any": { @@ -4777,7 +4777,7 @@ }, "best_reused": { "variant": "Document (reused allocator)", - "us": 6.5, + "us": 6.6, "level": "full" }, "best_reused_any": { @@ -4799,7 +4799,7 @@ "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 5.3, + "us": 5.4, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { @@ -4807,11 +4807,11 @@ "level": "no UTF-8" }, "SAX": { - "us": 6.1, + "us": 6.2, "level": "full" }, "SAX (string stream)": { - "us": 6.1, + "us": 6.2, "level": "full" }, "Document (no encoding check)": { @@ -4819,7 +4819,7 @@ "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 6.5, + "us": 6.6, "level": "full" }, "insitu (copy)": { @@ -4860,30 +4860,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 1.7, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 1.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 1.7, - "level": "full" - }, - "Value": { - "us": 2.2, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -4919,41 +4895,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 1.7, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 1.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 1.7, + "level": "full" + }, + "Value": { + "us": 2.2, + "level": "full" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 205.0, + "us": 207.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 205.0, + "us": 207.2, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 198.9, + "us": 201.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 198.9, + "us": 201.1, "level": "full" }, "variants": { "read (reused)": { - "us": 198.9, + "us": 201.1, "level": "full" }, "parse": { - "us": 205.0, + "us": 207.2, "level": "full" }, "parse_copy": { - "us": 211.0, + "us": 211.8, "level": "full" } } @@ -4961,63 +4961,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 415.3, + "us": 268.1, "level": "full" }, "best_any": { "variant": "sax", - "us": 415.3, + "us": 268.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 415.3, + "us": 268.1, "level": "full" }, "parse": { - "us": 1386.9, + "us": 1221.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 212.2, + "variant": "read", + "us": 208.4, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 212.2, + "variant": "read", + "us": 208.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 207.3, + "us": 207.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 207.3, + "us": 207.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 199.6, + "us": 200.0, "level": "full" }, "read (reused allocator)": { - "us": 207.3, - "level": "full" - }, - "insitu (copy)": { - "us": 212.2, + "us": 207.4, "level": "full" }, "read": { - "us": 213.6, + "us": 208.4, + "level": "full" + }, + "insitu (copy)": { + "us": 208.9, "level": "full" } } @@ -5025,39 +5025,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 222.1, + "us": 222.7, "level": "full" }, "best_any": { "variant": "DOM", - "us": 222.1, + "us": 222.7, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 224.0, + "us": 226.4, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 224.0, + "us": 226.4, "level": "full" }, "variants": { "DOM": { - "us": 222.1, + "us": 222.7, "level": "full" }, "DOM (reused)": { - "us": 224.0, + "us": 226.4, "level": "full" }, "On-Demand (reused)": { - "us": 231.7, + "us": 227.6, "level": "full" }, "On-Demand": { - "us": 232.5, + "us": 236.0, "level": "full" } } @@ -5066,14 +5066,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 303.9, + "us": 304.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 303.9, + "us": 304.3, "level": "no UTF-8" } } @@ -5081,35 +5081,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 886.5, + "us": 887.2, "level": "full" }, "best_any": { - "variant": "generic (double, strict)", - "us": 886.5, - "level": "full" + "variant": "generic (double)", + "us": 882.7, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double, strict)": { - "us": 886.5, - "level": "full" - }, "generic (double)": { - "us": 886.8, + "us": 882.7, "level": "partial" }, + "generic (double, strict)": { + "us": 887.2, + "level": "full" + }, "generic": { - "us": 1228.9, + "us": 1221.7, "level": "partial" }, "generic (strict)": { - "us": 1231.7, + "us": 1224.6, "level": "full" }, "lazy_json": { - "us": 1327.8, + "us": 1308.4, "level": "partial" } }, @@ -5120,111 +5120,111 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 452.5, + "us": 457.9, "level": "full" }, "best_any": { "variant": "SAX", - "us": 452.5, + "us": 457.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 452.5, + "us": 455.2, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 452.5, + "us": 455.2, "level": "full" }, "variants": { - "SAX": { - "us": 452.5, + "SAX (reused)": { + "us": 455.2, "level": "full" }, - "SAX (reused)": { - "us": 452.5, + "SAX": { + "us": 457.9, "level": "full" }, "parser (reused)": { - "us": 827.1, + "us": 820.3, "level": "full" }, "parse": { - "us": 830.2, + "us": 838.3, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX", - "us": 1115.7, + "variant": "SAX (string stream)", + "us": 1124.5, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 538.9, + "us": 524.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1204.4, + "us": 1212.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1061.2, + "us": 1058.0, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 522.0, + "us": 511.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 538.9, + "us": 524.9, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 557.8, + "us": 558.0, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 972.0, + "us": 967.0, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1061.2, + "us": 1058.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1067.5, + "us": 1063.4, "level": "no UTF-8" }, - "SAX": { - "us": 1115.7, - "level": "full" - }, "insitu (copy untimed)": { - "us": 1123.6, - "level": "full" - }, - "insitu (copy)": { - "us": 1125.9, + "us": 1114.0, "level": "full" }, "SAX (string stream)": { - "us": 1126.8, + "us": 1124.5, + "level": "full" + }, + "insitu (copy)": { + "us": 1137.5, + "level": "full" + }, + "SAX": { + "us": 1140.0, "level": "full" }, "Document (reused allocator)": { - "us": 1204.4, + "us": 1212.6, "level": "full" }, "Document": { - "us": 1212.6, + "us": 1221.2, "level": "full" } } @@ -5253,30 +5253,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 258.2, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 258.2, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 258.2, - "level": "full" - }, - "Value": { - "us": 375.1, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -5312,41 +5288,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 258.2, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 258.2, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 258.2, + "level": "full" + }, + "Value": { + "us": 375.1, + "level": "full" + } + } } }, "citm_catalog_min": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 369.2, + "us": 372.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 369.2, + "us": 372.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 367.1, + "us": 367.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 367.1, + "us": 367.6, "level": "full" }, "variants": { "read (reused)": { - "us": 367.1, + "us": 367.6, "level": "full" }, "parse": { - "us": 369.2, + "us": 372.4, "level": "full" }, "parse_copy": { - "us": 376.8, + "us": 376.2, "level": "full" } } @@ -5354,63 +5354,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 779.7, + "us": 407.6, "level": "full" }, "best_any": { "variant": "sax", - "us": 779.7, + "us": 407.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 779.7, + "us": 407.6, "level": "full" }, "parse": { - "us": 2411.3, + "us": 2079.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 384.0, + "variant": "insitu (copy)", + "us": 376.9, "level": "full" }, "best_any": { - "variant": "read", - "us": 384.0, + "variant": "insitu (copy)", + "us": 376.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 382.2, + "us": 378.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 382.2, + "us": 378.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 372.7, - "level": "full" - }, - "read (reused allocator)": { - "us": 382.2, - "level": "full" - }, - "read": { - "us": 384.0, + "us": 369.0, "level": "full" }, "insitu (copy)": { - "us": 386.1, + "us": 376.9, + "level": "full" + }, + "read (reused allocator)": { + "us": 378.3, + "level": "full" + }, + "read": { + "us": 378.4, "level": "full" } } @@ -5418,39 +5418,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 441.5, + "us": 447.6, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 441.5, + "us": 447.6, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 446.3, + "us": 451.4, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 446.3, + "us": 451.4, "level": "full" }, "variants": { "On-Demand": { - "us": 441.5, + "us": 447.6, "level": "full" }, "On-Demand (reused)": { - "us": 446.3, + "us": 451.4, "level": "full" }, "DOM (reused)": { - "us": 457.8, + "us": 455.9, "level": "full" }, "DOM": { - "us": 464.2, + "us": 464.3, "level": "full" } } @@ -5459,14 +5459,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 651.2, + "us": 654.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 651.2, + "us": 654.2, "level": "no UTF-8" } } @@ -5474,35 +5474,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 1716.8, + "us": 1693.1, "level": "full" }, "best_any": { "variant": "generic (double)", - "us": 1698.8, + "us": 1685.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double)": { - "us": 1698.8, + "us": 1685.4, "level": "partial" }, "generic (double, strict)": { - "us": 1716.8, + "us": 1693.1, "level": "full" }, "generic": { - "us": 2482.6, + "us": 2456.7, "level": "partial" }, "generic (strict)": { - "us": 2514.5, + "us": 2489.0, "level": "full" }, "lazy_json": { - "us": 2642.2, + "us": 2696.2, "level": "partial" } }, @@ -5513,39 +5513,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 464.2, + "us": 459.2, "level": "full" }, "best_any": { "variant": "SAX", - "us": 464.2, + "us": 459.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 464.3, + "us": 457.4, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 464.3, + "us": 457.4, "level": "full" }, "variants": { - "SAX": { - "us": 464.2, + "SAX (reused)": { + "us": 457.4, "level": "full" }, - "SAX (reused)": { - "us": 464.3, + "SAX": { + "us": 459.2, "level": "full" }, "parse": { - "us": 1042.3, + "us": 1049.1, "level": "full" }, "parser (reused)": { - "us": 1046.2, + "us": 1051.8, "level": "full" } } @@ -5553,71 +5553,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 1055.3, + "us": 1052.0, "level": "full" }, "best_any": { - "variant": "insitu (copy) (no encoding check)", - "us": 848.7, + "variant": "SAX (string stream) (no encoding check)", + "us": 858.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1338.1, + "us": 1356.1, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1254.5, + "us": 1258.0, "level": "no UTF-8" }, "variants": { + "SAX (string stream) (no encoding check)": { + "us": 858.6, + "level": "no UTF-8" + }, "insitu (copy untimed) (no encoding check)": { - "us": 838.9, + "us": 870.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 848.7, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 860.0, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 1038.6, + "us": 873.8, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 1055.3, + "us": 1052.0, "level": "full" }, + "SAX (no encoding check)": { + "us": 1068.8, + "level": "no UTF-8" + }, "SAX": { - "us": 1129.1, + "us": 1154.3, "level": "full" }, "insitu (copy untimed)": { - "us": 1211.2, + "us": 1223.7, "level": "full" }, "insitu (copy)": { - "us": 1218.6, + "us": 1234.8, "level": "full" }, - "Document (no encoding check)": { - "us": 1248.4, + "Document (reused allocator) (no encoding check)": { + "us": 1258.0, "level": "no UTF-8" }, - "Document (reused allocator) (no encoding check)": { - "us": 1254.5, + "Document (no encoding check)": { + "us": 1262.9, "level": "no UTF-8" }, "Document": { - "us": 1321.5, + "us": 1341.8, "level": "full" }, "Document (reused allocator)": { - "us": 1338.1, + "us": 1356.1, "level": "full" } } @@ -5646,30 +5646,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "visitor", - "us": 526.5, - "level": "full" - }, - "best_any": { - "variant": "visitor", - "us": 526.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "visitor": { - "us": 526.5, - "level": "full" - }, - "Value": { - "us": 707.3, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "visitor (copy)", @@ -5705,6 +5681,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "visitor", + "us": 526.5, + "level": "full" + }, + "best_any": { + "variant": "visitor", + "us": 526.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "visitor": { + "us": 526.5, + "level": "full" + }, + "Value": { + "us": 707.3, + "level": "full" + } + } } } }, @@ -5713,63 +5713,63 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 184.3, + "us": 183.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 184.3, + "us": 183.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 179.1, + "us": 178.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 179.1, + "us": 178.9, "level": "full" }, "variants": { "read (reused)": { - "us": 179.1, + "us": 178.9, "level": "full" }, "parse": { - "us": 184.3, + "us": 183.4, "level": "full" }, "structs (from_json)": { - "us": 185.2, + "us": 183.4, "level": "full" }, "parse_copy": { - "us": 193.5, + "us": 194.0, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 1360.0, + "variant": "parse", + "us": 1208.3, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 1360.0, + "variant": "parse", + "us": 1208.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 1360.0, + "parse": { + "us": 1208.3, "level": "full" }, - "parse": { - "us": 1366.5, + "structs (from_json)": { + "us": 1212.6, "level": "full" } } @@ -5777,43 +5777,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 190.2, + "us": 191.3, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 190.2, + "us": 191.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 193.1, + "us": 193.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 193.1, + "us": 193.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 178.4, + "us": 181.5, "level": "full" }, "insitu (copy)": { - "us": 190.2, + "us": 191.3, "level": "full" }, "read (reused allocator)": { - "us": 193.1, + "us": 193.7, "level": "full" }, "read": { - "us": 196.0, + "us": 193.8, "level": "full" }, "read (raw numbers)": { - "us": 205.6, + "us": 209.0, "level": "full" } } @@ -5821,47 +5821,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 195.7, + "us": 192.3, "level": "full" }, "best_any": { "variant": "On-Demand structs", - "us": 126.6, + "us": 128.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 194.6, + "us": 196.4, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 137.0, + "us": 139.6, "level": "partial" }, "variants": { "On-Demand structs": { - "us": 126.6, + "us": 128.4, "level": "partial" }, "On-Demand (key selectors)": { - "us": 131.0, - "level": "partial" - }, - "On-Demand": { - "us": 135.2, + "us": 133.5, "level": "partial" }, "On-Demand (reused)": { - "us": 137.0, + "us": 139.6, "level": "partial" }, - "DOM (reused)": { - "us": 194.6, - "level": "full" + "On-Demand": { + "us": 139.9, + "level": "partial" }, "DOM": { - "us": 195.7, + "us": 192.3, + "level": "full" + }, + "DOM (reused)": { + "us": 196.4, "level": "full" } } @@ -5870,14 +5870,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 384.8, + "us": 385.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 384.8, + "us": 385.1, "level": "no UTF-8" } } @@ -5885,43 +5885,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 311.2, + "us": 313.7, "level": "full" }, "best_any": { "variant": "structs", - "us": 241.4, + "us": 237.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 241.4, + "us": 237.9, "level": "partial" }, "structs (validate_skipped)": { - "us": 311.2, + "us": 313.7, "level": "full" }, "lazy_json": { - "us": 723.7, + "us": 691.4, + "level": "partial" + }, + "generic (double)": { + "us": 978.7, "level": "partial" }, "generic (double, strict)": { - "us": 973.2, + "us": 979.4, "level": "full" }, - "generic (double)": { - "us": 978.5, - "level": "partial" - }, "generic": { - "us": 1326.6, + "us": 1330.7, "level": "partial" }, "generic (strict)": { - "us": 1331.8, + "us": 1330.7, "level": "full" } }, @@ -5932,35 +5932,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 617.1, + "us": 623.4, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 617.1, + "us": 623.4, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 881.0, + "us": 878.1, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 881.0, + "us": 878.1, "level": "full" }, "variants": { "parse_into structs": { - "us": 617.1, + "us": 623.4, "level": "full" }, "parser (reused)": { - "us": 881.0, + "us": 878.1, "level": "full" }, "parse": { - "us": 886.0, + "us": 884.4, "level": "full" } }, @@ -5971,71 +5971,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1318.3, + "us": 1313.6, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 690.0, + "us": 701.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1358.1, + "us": 1365.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1186.8, + "us": 1186.2, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 678.8, + "us": 690.6, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 690.0, + "us": 701.2, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 886.0, + "us": 875.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1186.8, + "us": 1186.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1200.5, + "us": 1195.0, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1204.8, + "us": 1210.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1303.9, + "us": 1309.9, "level": "full" }, "insitu (copy)": { - "us": 1318.3, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1358.1, + "us": 1313.6, "level": "full" }, "Document": { - "us": 1362.2, + "us": 1364.1, + "level": "full" + }, + "Document (reused allocator)": { + "us": 1365.8, "level": "full" }, "Document (raw numbers)": { - "us": 1370.5, + "us": 1381.5, "level": "full" }, "Document (string stream)": { - "us": 1431.8, + "us": 1427.0, "level": "full" } } @@ -6068,30 +6068,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 332.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 332.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 332.7, - "level": "full" - }, - "structs": { - "us": 404.0, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -6115,45 +6091,69 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 332.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 332.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 332.7, + "level": "full" + }, + "structs": { + "us": 404.0, + "level": "full" + } + } } }, "citm_catalog": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 362.8, + "us": 362.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 362.8, + "us": 362.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 361.9, + "us": 361.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 361.9, + "us": 361.8, "level": "full" }, "variants": { "read (reused)": { - "us": 361.9, + "us": 361.8, "level": "full" }, "parse": { - "us": 362.8, + "us": 362.6, "level": "full" }, "structs (from_json)": { - "us": 379.5, + "us": 378.8, "level": "full" }, "parse_copy": { - "us": 390.8, + "us": 393.5, "level": "full" } } @@ -6161,67 +6161,67 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 2416.3, + "us": 2128.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 2416.3, + "us": 2128.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2416.3, + "us": 2128.5, "level": "full" }, "structs (from_json)": { - "us": 2429.2, + "us": 2135.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 478.9, + "variant": "read", + "us": 480.2, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 478.9, + "variant": "read", + "us": 480.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 494.4, + "us": 490.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 494.4, + "us": 490.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 455.6, - "level": "full" - }, - "insitu (copy)": { - "us": 478.9, + "us": 455.0, "level": "full" }, "read": { - "us": 483.8, + "us": 480.2, + "level": "full" + }, + "insitu (copy)": { + "us": 482.3, "level": "full" }, "read (reused allocator)": { - "us": 494.4, + "us": 490.4, "level": "full" }, "read (raw numbers)": { - "us": 538.2, + "us": 535.9, "level": "full" } } @@ -6229,47 +6229,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 449.8, + "us": 453.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 354.2, + "us": 355.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 447.0, + "us": 454.6, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 351.9, + "us": 358.1, "level": "partial" }, "variants": { - "On-Demand (reused)": { - "us": 351.9, + "On-Demand": { + "us": 355.5, "level": "partial" }, - "On-Demand": { - "us": 354.2, + "On-Demand (reused)": { + "us": 358.1, "level": "partial" }, "On-Demand (key selectors)": { - "us": 362.8, + "us": 362.5, "level": "partial" }, "On-Demand structs": { - "us": 371.1, + "us": 380.7, "level": "partial" }, - "DOM (reused)": { - "us": 447.0, + "DOM": { + "us": 453.7, "level": "full" }, - "DOM": { - "us": 449.8, + "DOM (reused)": { + "us": 454.6, "level": "full" } } @@ -6278,14 +6278,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 990.0, + "us": 992.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 990.0, + "us": 992.8, "level": "no UTF-8" } } @@ -6293,43 +6293,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 854.4, + "us": 852.1, "level": "full" }, "best_any": { "variant": "structs", - "us": 255.1, + "us": 252.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 255.1, + "us": 252.7, "level": "partial" }, "structs (validate_skipped)": { - "us": 854.4, - "level": "full" - }, - "generic (double, strict)": { - "us": 1951.3, + "us": 852.1, "level": "full" }, "generic (double)": { - "us": 1953.0, + "us": 1954.8, "level": "partial" }, + "generic (double, strict)": { + "us": 1973.6, + "level": "full" + }, "generic (strict)": { - "us": 2744.5, + "us": 2771.7, "level": "full" }, "generic": { - "us": 2745.9, + "us": 2785.2, "level": "partial" }, "lazy_json": { - "us": 5155.3, + "us": 5188.2, "level": "partial" } }, @@ -6340,35 +6340,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1205.2, + "us": 1207.9, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1205.2, + "us": 1207.9, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1489.8, + "us": 1490.1, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1489.8, + "us": 1490.1, "level": "full" }, "variants": { "parse_into structs": { - "us": 1205.2, + "us": 1207.9, "level": "full" }, "parser (reused)": { - "us": 1489.8, + "us": 1490.1, "level": "full" }, "parse": { - "us": 1493.0, + "us": 1502.0, "level": "full" } }, @@ -6379,71 +6379,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1590.2, + "us": 1577.5, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1157.9, + "us": 1165.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1691.1, + "us": 1694.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1612.0, + "us": 1616.1, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1125.7, + "us": 1131.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1157.9, + "us": 1165.5, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1291.4, + "us": 1276.8, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1554.3, + "us": 1554.8, "level": "full" }, "insitu (copy)": { - "us": 1590.2, + "us": 1577.5, "level": "full" }, "Document (string stream)": { - "us": 1594.0, + "us": 1584.2, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1612.0, + "us": 1616.1, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1621.7, + "us": 1621.3, + "level": "no UTF-8" + }, + "Document (raw numbers) (no encoding check)": { + "us": 1694.1, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1691.1, + "us": 1694.6, "level": "full" }, - "Document (raw numbers) (no encoding check)": { - "us": 1697.8, - "level": "no UTF-8" - }, "Document": { - "us": 1704.6, + "us": 1730.1, "level": "full" }, "Document (raw numbers)": { - "us": 1777.5, + "us": 1808.6, "level": "full" } } @@ -6476,30 +6476,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 690.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 690.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 690.8, - "level": "full" - }, - "structs": { - "us": 812.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -6523,69 +6499,93 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 690.8, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 690.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 690.8, + "level": "full" + }, + "structs": { + "us": 812.8, + "level": "full" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 956.4, + "us": 943.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 956.4, + "us": 943.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 956.0, + "us": 942.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 956.0, + "us": 942.3, "level": "full" }, "variants": { "read (reused)": { - "us": 956.0, + "us": 942.3, "level": "full" }, "parse": { - "us": 956.4, + "us": 943.5, "level": "full" }, "structs (from_json)": { - "us": 962.8, + "us": 945.7, "level": "full" }, "parse_copy": { - "us": 999.8, + "us": 977.8, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 6047.2, + "variant": "parse", + "us": 5088.1, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 6047.2, + "variant": "parse", + "us": 5088.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 6047.2, + "parse": { + "us": 5088.1, "level": "full" }, - "parse": { - "us": 6055.2, + "structs (from_json)": { + "us": 5092.2, "level": "full" } } @@ -6593,43 +6593,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 1484.6, + "us": 1489.4, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 1484.6, + "us": 1489.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1492.2, + "us": 1509.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1492.2, + "us": 1509.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 1461.4, + "us": 1455.5, "level": "full" }, "insitu (copy)": { - "us": 1484.6, - "level": "full" - }, - "read (reused allocator)": { - "us": 1492.2, + "us": 1489.4, "level": "full" }, "read": { - "us": 1493.8, + "us": 1496.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 1509.6, "level": "full" }, "read (raw numbers)": { - "us": 1729.4, + "us": 1730.3, "level": "full" } } @@ -6637,47 +6637,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 1886.2, + "us": 1892.9, "level": "full" }, "best_any": { - "variant": "On-Demand (key selectors)", - "us": 566.2, + "variant": "On-Demand", + "us": 571.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 1883.7, + "us": 1891.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 573.2, + "us": 568.2, "level": "partial" }, "variants": { - "On-Demand (key selectors)": { - "us": 566.2, + "On-Demand (reused)": { + "us": 568.2, "level": "partial" }, "On-Demand": { - "us": 567.0, + "us": 571.4, "level": "partial" }, - "On-Demand (reused)": { - "us": 573.2, + "On-Demand (key selectors)": { + "us": 571.5, "level": "partial" }, "On-Demand structs": { - "us": 697.8, + "us": 697.4, "level": "partial" }, "DOM (reused)": { - "us": 1883.7, + "us": 1891.1, "level": "full" }, "DOM": { - "us": 1886.2, + "us": 1892.9, "level": "full" } } @@ -6686,14 +6686,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 2585.5, + "us": 2611.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 2585.5, + "us": 2611.1, "level": "no UTF-8" } } @@ -6701,44 +6701,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 1315.8, + "us": 1303.2, "level": "full" }, "best_any": { "variant": "structs", - "us": 313.3, + "us": 310.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 313.3, + "us": 310.4, "level": "partial" }, "structs (validate_skipped)": { - "us": 1315.8, + "us": 1303.2, "level": "full" }, "lazy_json": { - "us": 1993.4, + "us": 2003.1, "level": "partial" }, "generic (double)": { - "us": 5937.2, + "us": 5934.2, "level": "partial" }, "generic (double, strict)": { - "us": 5942.6, - "level": "full" - }, - "generic (strict)": { - "us": 9359.8, + "us": 5946.0, "level": "full" }, "generic": { - "us": 9409.2, + "us": 9340.6, "level": "partial" + }, + "generic (strict)": { + "us": 9377.7, + "level": "full" } }, "excluded": { @@ -6748,35 +6748,35 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 3650.1, + "us": 3638.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 3650.1, + "us": 3638.2, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 3669.6, + "us": 3627.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 3669.6, + "us": 3627.8, "level": "full" }, "variants": { - "parse": { - "us": 3650.1, + "parser (reused)": { + "us": 3627.8, "level": "full" }, - "parser (reused)": { - "us": 3669.6, + "parse": { + "us": 3638.2, "level": "full" }, "parse_into structs": { - "us": 3773.2, + "us": 3768.2, "level": "full" } }, @@ -6787,71 +6787,71 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 6776.0, + "us": 6813.8, "level": "full" }, "best_any": { - "variant": "Document (string stream)", - "us": 6776.0, - "level": "full" + "variant": "Document (string stream) (no encoding check)", + "us": 6744.7, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 7377.9, + "us": 7433.9, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 7377.9, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 7330.5, + "level": "no UTF-8" }, "variants": { + "Document (string stream) (no encoding check)": { + "us": 6744.7, + "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 6804.0, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 6776.0, + "us": 6813.8, "level": "full" }, "insitu (copy)": { - "us": 6799.9, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 6825.8, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 6857.2, - "level": "no UTF-8" - }, - "insitu (copy untimed)": { - "us": 6865.2, + "us": 6836.9, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 6872.9, + "us": 6871.9, "level": "no UTF-8" }, - "Document (no encoding check)": { - "us": 7347.1, - "level": "no UTF-8" - }, - "Document": { - "us": 7358.0, - "level": "full" - }, - "Document (reused allocator)": { - "us": 7377.9, + "insitu (copy untimed)": { + "us": 6891.3, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 7422.8, + "us": 7330.5, + "level": "no UTF-8" + }, + "Document": { + "us": 7344.2, + "level": "full" + }, + "Document (reused allocator)": { + "us": 7433.9, + "level": "full" + }, + "Document (no encoding check)": { + "us": 7473.3, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 9466.5, + "us": 9457.9, "level": "no UTF-8" }, "Document (raw numbers)": { - "us": 9559.0, + "us": 9481.1, "level": "full" } } @@ -6884,30 +6884,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1936.4, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 1936.4, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1936.4, - "level": "full" - }, - "structs": { - "us": 2073.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -6931,45 +6907,69 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1936.4, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 1936.4, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1936.4, + "level": "full" + }, + "structs": { + "us": 2073.5, + "level": "full" + } + } } }, "jeopardy": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 24991.3, + "us": 24800.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 24991.3, + "us": 24800.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 24108.3, + "us": 24371.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 24108.3, + "us": 24371.6, "level": "full" }, "variants": { "read (reused)": { - "us": 24108.3, + "us": 24371.6, "level": "full" }, "parse": { - "us": 24991.3, + "us": 24800.6, "level": "full" }, "parse_copy": { - "us": 26098.8, + "us": 25980.0, "level": "full" }, "structs (from_json)": { - "us": 30575.1, + "us": 30264.4, "level": "full" } } @@ -6977,23 +6977,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 179533.0, + "us": 163712.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 179533.0, + "us": 163712.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 179533.0, + "us": 163712.5, "level": "full" }, "structs (from_json)": { - "us": 183413.8, + "us": 165077.7, "level": "full" } } @@ -7001,43 +7001,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 33002.2, + "us": 32776.8, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 33002.2, + "us": 32776.8, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 33930.3, + "us": 33605.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 33930.3, + "us": 33605.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 32514.5, + "us": 32306.4, "level": "full" }, "read (raw numbers)": { - "us": 33002.2, - "level": "full" - }, - "read (reused allocator)": { - "us": 33930.3, + "us": 32776.8, "level": "full" }, "read": { - "us": 34016.8, + "us": 33534.5, + "level": "full" + }, + "read (reused allocator)": { + "us": 33605.4, "level": "full" }, "insitu (copy)": { - "us": 34161.8, + "us": 33619.4, "level": "full" } } @@ -7045,47 +7045,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 30504.0, + "us": 30713.9, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 19562.1, + "us": 19632.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 30308.7, + "us": 30673.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 19607.0, + "us": 19588.8, "level": "partial" }, "variants": { - "On-Demand": { - "us": 19562.1, + "On-Demand (reused)": { + "us": 19588.8, "level": "partial" }, - "On-Demand (reused)": { - "us": 19607.0, + "On-Demand": { + "us": 19632.7, "level": "partial" }, "On-Demand (key selectors)": { - "us": 22068.9, + "us": 22098.1, "level": "partial" }, "On-Demand structs": { - "us": 27406.3, + "us": 27474.9, "level": "partial" }, "DOM (reused)": { - "us": 30308.7, + "us": 30673.7, "level": "full" }, "DOM": { - "us": 30504.0, + "us": 30713.9, "level": "full" } } @@ -7094,14 +7094,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 45858.5, + "us": 46355.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 45858.5, + "us": 46355.6, "level": "no UTF-8" } } @@ -7109,44 +7109,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 46924.4, + "us": 47692.1, "level": "full" }, "best_any": { "variant": "structs", - "us": 37578.0, + "us": 36012.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 37578.0, + "us": 36012.8, "level": "partial" }, "structs (validate_skipped)": { - "us": 46924.4, - "level": "full" - }, - "generic (double, strict)": { - "us": 95348.5, + "us": 47692.1, "level": "full" }, "generic (double)": { - "us": 95425.0, + "us": 95434.2, "level": "partial" }, + "generic (double, strict)": { + "us": 96062.9, + "level": "full" + }, "lazy_json": { - "us": 98994.3, + "us": 100388.6, + "level": "partial" + }, + "generic": { + "us": 139199.4, "level": "partial" }, "generic (strict)": { - "us": 136975.1, + "us": 139744.5, "level": "full" - }, - "generic": { - "us": 137208.3, - "level": "partial" } }, "excluded": { @@ -7156,35 +7156,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 67255.4, + "us": 67922.9, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 67255.4, + "us": 67922.9, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 94889.2, + "us": 95880.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 94889.2, + "us": 95880.8, "level": "full" }, "variants": { "parse_into structs": { - "us": 67255.4, - "level": "full" - }, - "parse": { - "us": 94295.5, + "us": 67922.9, "level": "full" }, "parser (reused)": { - "us": 94889.2, + "us": 95880.8, + "level": "full" + }, + "parse": { + "us": 96336.2, "level": "full" } }, @@ -7195,71 +7195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 144436.2, + "us": 144649.4, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 67089.8, + "us": 67617.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 157473.5, + "us": 159328.0, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 145266.0, + "us": 145148.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 65624.6, + "us": 66707.6, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 67089.8, + "us": 67617.2, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 86510.8, + "us": 86640.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 141509.4, + "us": 142970.9, "level": "full" }, "insitu (copy)": { - "us": 144436.2, + "us": 144649.4, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 145266.0, + "us": 145148.5, "level": "no UTF-8" }, "Document (string stream)": { - "us": 146474.4, + "us": 146465.2, "level": "full" }, "Document (raw numbers) (no encoding check)": { - "us": 147821.3, + "us": 148328.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 148806.2, + "us": 148361.5, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 157473.5, - "level": "full" - }, - "Document": { - "us": 161788.8, + "us": 159328.0, "level": "full" }, "Document (raw numbers)": { - "us": 162254.5, + "us": 161326.6, + "level": "full" + }, + "Document": { + "us": 162234.3, "level": "full" } } @@ -7292,30 +7292,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 40660.1, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 40660.1, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 40660.1, - "level": "full" - }, - "structs": { - "us": 53704.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -7339,6 +7315,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 40660.1, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 40660.1, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 40660.1, + "level": "full" + }, + "structs": { + "us": 53704.8, + "level": "full" + } + } } }, "status": { @@ -7385,23 +7385,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 7.6, + "us": 6.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 7.6, + "us": 6.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 7.6, + "us": 6.6, "level": "full" }, "structs (from_json)": { - "us": 7.6, + "us": 6.6, "level": "full" } } @@ -7541,7 +7541,7 @@ "level": "partial" }, "generic (double)": { - "us": 5.2, + "us": 5.1, "level": "partial" }, "generic (double, strict)": { @@ -7549,7 +7549,7 @@ "level": "full" }, "generic": { - "us": 7.2, + "us": 7.1, "level": "partial" }, "generic (strict)": { @@ -7603,17 +7603,17 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 6.5, + "us": 6.6, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2.7, + "us": 2.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 6.3, + "us": 6.4, "level": "full" }, "best_reused_any": { @@ -7623,11 +7623,11 @@ }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2.6, + "us": 2.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2.7, + "us": 2.8, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { @@ -7639,36 +7639,36 @@ "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 6.0, - "level": "no UTF-8" - }, - "Document (raw numbers) (no encoding check)": { "us": 6.1, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 6.3, - "level": "full" + "Document (raw numbers) (no encoding check)": { + "us": 6.2, + "level": "no UTF-8" }, - "insitu (copy)": { - "us": 6.5, + "Document (reused allocator)": { + "us": 6.4, "level": "full" }, "insitu (copy untimed)": { "us": 6.5, "level": "full" }, - "Document": { - "us": 6.8, + "insitu (copy)": { + "us": 6.6, "level": "full" }, "Document (string stream)": { "us": 6.8, "level": "full" }, - "Document (raw numbers)": { + "Document": { "us": 6.9, "level": "full" + }, + "Document (raw numbers)": { + "us": 7.1, + "level": "full" } } }, @@ -7700,30 +7700,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "structs", - "us": 1.7, - "level": "full" - }, - "best_any": { - "variant": "structs", - "us": 1.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "structs": { - "us": 1.7, - "level": "full" - }, - "Value": { - "us": 1.7, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -7747,45 +7723,69 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "structs", + "us": 1.7, + "level": "full" + }, + "best_any": { + "variant": "structs", + "us": 1.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "structs": { + "us": 1.7, + "level": "full" + }, + "Value": { + "us": 1.7, + "level": "full" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 165.1, + "us": 164.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 165.1, + "us": 164.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 160.2, + "us": 163.0, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 160.2, + "us": 163.0, "level": "full" }, "variants": { "read (reused)": { - "us": 160.2, + "us": 163.0, "level": "full" }, "parse": { - "us": 165.1, + "us": 164.9, "level": "full" }, "structs (from_json)": { - "us": 165.5, + "us": 166.8, "level": "full" }, "parse_copy": { - "us": 171.0, + "us": 174.8, "level": "full" } } @@ -7793,23 +7793,23 @@ "nlohmann json": { "best": { "variant": "structs (from_json)", - "us": 1331.1, + "us": 1191.8, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 1331.1, + "us": 1191.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "structs (from_json)": { - "us": 1331.1, + "us": 1191.8, "level": "full" }, "parse": { - "us": 1333.0, + "us": 1193.0, "level": "full" } } @@ -7817,43 +7817,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 169.3, + "us": 172.7, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 169.3, + "us": 172.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 169.7, + "us": 169.8, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 169.7, + "us": 169.8, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 159.0, - "level": "full" - }, - "insitu (copy)": { - "us": 169.3, + "us": 162.8, "level": "full" }, "read (reused allocator)": { - "us": 169.7, + "us": 169.8, + "level": "full" + }, + "insitu (copy)": { + "us": 172.7, "level": "full" }, "read": { - "us": 175.3, + "us": 172.9, "level": "full" }, "read (raw numbers)": { - "us": 189.2, + "us": 189.0, "level": "full" } } @@ -7861,47 +7861,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 171.2, + "us": 173.7, "level": "full" }, "best_any": { "variant": "On-Demand structs", - "us": 105.9, + "us": 109.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 176.5, + "us": 176.3, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 117.6, + "us": 120.7, "level": "partial" }, "variants": { "On-Demand structs": { - "us": 105.9, + "us": 109.3, "level": "partial" }, "On-Demand (key selectors)": { - "us": 115.2, + "us": 113.7, "level": "partial" }, "On-Demand": { - "us": 115.6, + "us": 118.8, "level": "partial" }, "On-Demand (reused)": { - "us": 117.6, + "us": 120.7, "level": "partial" }, "DOM": { - "us": 171.2, + "us": 173.7, "level": "full" }, "DOM (reused)": { - "us": 176.5, + "us": 176.3, "level": "full" } } @@ -7910,14 +7910,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 261.5, + "us": 263.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 261.5, + "us": 263.0, "level": "no UTF-8" } } @@ -7925,43 +7925,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 264.0, + "us": 269.5, "level": "full" }, "best_any": { "variant": "structs", - "us": 216.6, + "us": 220.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 216.6, + "us": 220.1, "level": "partial" }, "structs (validate_skipped)": { - "us": 264.0, + "us": 269.5, "level": "full" }, "lazy_json": { - "us": 450.2, - "level": "partial" - }, - "generic (double)": { - "us": 889.6, + "us": 436.5, "level": "partial" }, "generic (double, strict)": { - "us": 891.2, + "us": 899.2, "level": "full" }, + "generic (double)": { + "us": 900.9, + "level": "partial" + }, "generic": { - "us": 1232.0, + "us": 1231.4, "level": "partial" }, "generic (strict)": { - "us": 1234.8, + "us": 1246.5, "level": "full" } }, @@ -7972,35 +7972,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 539.9, + "us": 552.5, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 539.9, + "us": 552.5, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 787.9, + "us": 801.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 787.9, + "us": 801.8, "level": "full" }, "variants": { "parse_into structs": { - "us": 539.9, - "level": "full" - }, - "parser (reused)": { - "us": 787.9, + "us": 552.5, "level": "full" }, "parse": { - "us": 795.6, + "us": 799.8, + "level": "full" + }, + "parser (reused)": { + "us": 801.8, "level": "full" } }, @@ -8011,71 +8011,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1090.3, + "us": 1096.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 485.6, + "us": 487.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1161.6, + "us": 1178.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1026.3, + "us": 1029.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 482.4, + "us": 470.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 485.6, + "us": 487.1, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 666.8, + "us": 657.5, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1026.3, + "us": 1029.3, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1027.3, + "us": 1037.4, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1046.8, + "us": 1058.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1082.0, + "us": 1088.6, "level": "full" }, "insitu (copy)": { - "us": 1090.3, + "us": 1096.1, "level": "full" }, "Document (string stream)": { - "us": 1159.7, + "us": 1174.6, "level": "full" }, "Document (reused allocator)": { - "us": 1161.6, + "us": 1178.5, "level": "full" }, "Document": { - "us": 1173.4, + "us": 1179.5, "level": "full" }, "Document (raw numbers)": { - "us": 1188.2, + "us": 1216.4, "level": "full" } } @@ -8108,30 +8108,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 242.4, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 242.4, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 242.4, - "level": "full" - }, - "structs": { - "us": 301.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -8155,45 +8131,69 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 242.4, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 242.4, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 242.4, + "level": "full" + }, + "structs": { + "us": 301.5, + "level": "full" + } + } } }, "citm_catalog_min": { "nlohmann json_document": { "best": { "variant": "parse", - "us": 247.1, + "us": 250.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 247.1, + "us": 250.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 245.4, + "us": 248.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 245.4, + "us": 248.3, "level": "full" }, "variants": { "read (reused)": { - "us": 245.4, + "us": 248.3, "level": "full" }, "parse": { - "us": 247.1, + "us": 250.9, "level": "full" }, "parse_copy": { - "us": 254.4, + "us": 255.5, "level": "full" }, "structs (from_json)": { - "us": 262.1, + "us": 264.0, "level": "full" } } @@ -8201,23 +8201,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 2287.4, + "us": 1952.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 2287.4, + "us": 1952.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2287.4, + "us": 1952.8, "level": "full" }, "structs (from_json)": { - "us": 2293.4, + "us": 1984.2, "level": "full" } } @@ -8225,43 +8225,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 284.2, + "us": 286.8, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 284.2, + "us": 286.8, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 289.0, + "us": 292.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 289.0, + "us": 292.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 277.2, + "us": 279.2, "level": "full" }, "insitu (copy)": { - "us": 284.2, - "level": "full" - }, - "read (reused allocator)": { - "us": 289.0, + "us": 286.8, "level": "full" }, "read": { - "us": 289.3, + "us": 287.0, + "level": "full" + }, + "read (reused allocator)": { + "us": 292.0, "level": "full" }, "read (raw numbers)": { - "us": 349.0, + "us": 351.3, "level": "full" } } @@ -8269,17 +8269,17 @@ "simdjson": { "best": { "variant": "DOM", - "us": 327.9, + "us": 326.0, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 221.5, + "us": 221.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 325.2, + "us": 324.2, "level": "full" }, "best_reused_any": { @@ -8289,7 +8289,7 @@ }, "variants": { "On-Demand": { - "us": 221.5, + "us": 221.4, "level": "partial" }, "On-Demand (reused)": { @@ -8297,19 +8297,19 @@ "level": "partial" }, "On-Demand (key selectors)": { - "us": 224.7, + "us": 227.7, "level": "partial" }, "On-Demand structs": { - "us": 240.0, + "us": 244.1, "level": "partial" }, "DOM (reused)": { - "us": 325.2, + "us": 324.2, "level": "full" }, "DOM": { - "us": 327.9, + "us": 326.0, "level": "full" } } @@ -8318,14 +8318,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 555.4, + "us": 551.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 555.4, + "us": 551.1, "level": "no UTF-8" } } @@ -8333,44 +8333,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 469.6, + "us": 477.2, "level": "full" }, "best_any": { "variant": "structs", - "us": 129.9, + "us": 130.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 129.9, + "us": 130.5, "level": "partial" }, "structs (validate_skipped)": { - "us": 469.6, + "us": 477.2, "level": "full" }, "lazy_json": { - "us": 1269.0, + "us": 1277.2, "level": "partial" }, "generic (double)": { - "us": 1610.8, + "us": 1605.5, "level": "partial" }, "generic (double, strict)": { - "us": 1637.5, - "level": "full" - }, - "generic (strict)": { - "us": 2376.0, + "us": 1610.1, "level": "full" }, "generic": { - "us": 2390.6, + "us": 2383.6, "level": "partial" + }, + "generic (strict)": { + "us": 2396.6, + "level": "full" } }, "excluded": { @@ -8380,35 +8380,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 691.7, + "us": 692.0, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 691.7, + "us": 692.0, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 959.3, + "us": 963.1, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 959.3, + "us": 963.1, "level": "full" }, "variants": { "parse_into structs": { - "us": 691.7, + "us": 692.0, "level": "full" }, "parse": { - "us": 956.2, + "us": 952.6, "level": "full" }, "parser (reused)": { - "us": 959.3, + "us": 963.1, "level": "full" } }, @@ -8419,71 +8419,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1125.3, + "us": 1123.5, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 759.9, + "us": 761.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1226.4, + "us": 1236.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1140.9, + "us": 1145.2, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 748.7, + "us": 756.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 759.9, + "us": 761.8, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 998.2, + "us": 991.0, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1121.1, + "us": 1119.1, "level": "full" }, "insitu (copy)": { - "us": 1125.3, + "us": 1123.5, "level": "full" }, "Document (no encoding check)": { - "us": 1132.7, + "us": 1145.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1140.9, + "us": 1145.2, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1152.3, + "us": 1165.0, "level": "full" }, "Document": { - "us": 1218.8, + "us": 1229.6, "level": "full" }, "Document (reused allocator)": { - "us": 1226.4, + "us": 1236.4, "level": "full" }, "Document (raw numbers) (no encoding check)": { - "us": 1381.0, + "us": 1368.9, "level": "no UTF-8" }, "Document (raw numbers)": { - "us": 1443.1, + "us": 1452.0, "level": "full" } } @@ -8516,30 +8516,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 393.9, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 393.9, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 393.9, - "level": "full" - }, - "structs": { - "us": 586.0, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "structs (copy)", @@ -8563,6 +8539,30 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 393.9, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 393.9, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 393.9, + "level": "full" + }, + "structs": { + "us": 586.0, + "level": "full" + } + } } } }, @@ -8571,23 +8571,23 @@ "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 282.8, + "us": 280.6, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 282.8, + "us": 280.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 282.8, + "us": 280.6, "level": "full" }, "editable": { - "us": 291.0, + "us": 287.5, "level": "full" } } @@ -8595,23 +8595,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 1273.0, + "us": 1114.9, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 1273.0, + "us": 1114.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 1273.0, + "us": 1114.9, "level": "full" }, "parse": { - "us": 1617.2, + "us": 1467.1, "level": "full" } } @@ -8619,27 +8619,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 439.6, + "us": 440.0, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 439.6, + "us": 440.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 426.7, + "us": 426.4, "level": "full" }, "insitu (copy) + mut copy": { - "us": 439.6, + "us": 440.0, "level": "full" }, "mut copy": { - "us": 443.3, + "us": 448.0, "level": "full" } } @@ -8648,14 +8648,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 486.0, + "us": 488.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 486.0, + "us": 488.3, "level": "no UTF-8" } } @@ -8663,23 +8663,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 1539.1, + "us": 1527.1, "level": "full" }, "best_any": { "variant": "generic", - "us": 1522.3, + "us": 1524.2, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 1522.3, + "us": 1524.2, "level": "partial" }, "generic (strict)": { - "us": 1539.1, + "us": 1527.1, "level": "full" } }, @@ -8691,19 +8691,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1367.5, + "us": 1355.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 1367.5, + "us": 1355.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1367.5, + "us": 1355.3, "level": "full" } } @@ -8711,47 +8711,47 @@ "RapidJSON": { "best": { "variant": "Document", - "us": 1921.7, + "us": 1924.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1356.4, + "us": 1356.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1343.5, + "us": 1343.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1356.4, + "us": 1356.0, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1486.8, + "us": 1462.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1761.1, + "us": 1749.9, "level": "no UTF-8" }, "Document": { - "us": 1921.7, + "us": 1924.1, "level": "full" }, "insitu (copy untimed)": { - "us": 1932.2, + "us": 1924.9, "level": "full" }, "insitu (copy)": { - "us": 1938.6, + "us": 1933.3, "level": "full" }, "Document (string stream)": { - "us": 2012.1, + "us": 1992.5, "level": "full" } } @@ -8776,26 +8776,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 633.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 633.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 633.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -8819,29 +8799,49 @@ "level": "full" } } - } - }, - "citm_catalog": { - "nlohmann json_document": { + }, + "sonic-rs": { "best": { - "variant": "editable", - "us": 559.5, + "variant": "Value", + "us": 633.8, "level": "full" }, "best_any": { - "variant": "editable", - "us": 559.5, + "variant": "Value", + "us": 633.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "editable": { - "us": 559.5, + "Value": { + "us": 633.8, + "level": "full" + } + } + } + }, + "citm_catalog": { + "nlohmann json_document": { + "best": { + "variant": "editable (source numbers)", + "us": 556.8, + "level": "full" + }, + "best_any": { + "variant": "editable (source numbers)", + "us": 556.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "editable (source numbers)": { + "us": 556.8, "level": "full" }, - "editable (source numbers)": { - "us": 560.4, + "editable": { + "us": 559.2, "level": "full" } } @@ -8849,51 +8849,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2344.5, + "us": 2065.0, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2344.5, + "us": 2065.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2344.5, + "us": 2065.0, "level": "full" }, "parse": { - "us": 2734.6, + "us": 2436.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + mut copy", - "us": 909.2, + "variant": "mut copy", + "us": 904.3, "level": "full" }, "best_any": { - "variant": "insitu (copy) + mut copy", - "us": 909.2, + "variant": "mut copy", + "us": 904.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 881.9, - "level": "full" - }, - "insitu (copy) + mut copy": { - "us": 909.2, + "us": 887.6, "level": "full" }, "mut copy": { - "us": 911.0, + "us": 904.3, + "level": "full" + }, + "insitu (copy) + mut copy": { + "us": 904.4, "level": "full" } } @@ -8902,14 +8902,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1223.8, + "us": 1218.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1223.8, + "us": 1218.3, "level": "no UTF-8" } } @@ -8917,24 +8917,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3235.2, + "us": 3216.5, "level": "full" }, "best_any": { - "variant": "generic", - "us": 3230.2, - "level": "partial" + "variant": "generic (strict)", + "us": 3216.5, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 3230.2, - "level": "partial" - }, "generic (strict)": { - "us": 3235.2, + "us": 3216.5, "level": "full" + }, + "generic": { + "us": 3225.2, + "level": "partial" } }, "excluded": { @@ -8945,19 +8945,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1992.5, + "us": 1997.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 1992.5, + "us": 1997.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1992.5, + "us": 1997.0, "level": "full" } } @@ -8965,47 +8965,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2426.0, + "us": 2393.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2001.5, + "us": 1992.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1964.0, + "us": 1962.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2001.5, + "us": 1992.5, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 2148.2, + "us": 2086.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2387.9, + "us": 2368.2, "level": "full" }, "insitu (copy)": { - "us": 2426.0, + "us": 2393.3, "level": "full" }, "Document (string stream)": { - "us": 2433.3, + "us": 2397.8, "level": "full" }, "Document (no encoding check)": { - "us": 2461.9, + "us": 2434.9, "level": "no UTF-8" }, "Document": { - "us": 2534.7, + "us": 2514.0, "level": "full" } } @@ -9030,26 +9030,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1256.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 1256.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1256.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -9073,29 +9053,49 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1256.8, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 1256.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1256.8, + "level": "full" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 1484.0, + "us": 1504.5, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 1484.0, + "us": 1504.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 1484.0, + "us": 1504.5, "level": "full" }, "editable": { - "us": 2764.6, + "us": 2736.6, "level": "full" } } @@ -9103,23 +9103,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 8334.2, + "us": 7348.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 8334.2, + "us": 7348.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 8334.2, + "us": 7348.5, "level": "full" }, "ordered_json": { - "us": 8408.0, + "us": 7377.5, "level": "full" } } @@ -9127,27 +9127,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 3728.2, + "us": 3692.1, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 3728.2, + "us": 3692.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 3641.7, + "us": 3644.9, "level": "full" }, "mut copy": { - "us": 3728.2, + "us": 3692.1, "level": "full" }, "insitu (copy) + mut copy": { - "us": 3747.4, + "us": 3695.5, "level": "full" } } @@ -9156,14 +9156,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 5638.4, + "us": 5662.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 5638.4, + "us": 5662.2, "level": "no UTF-8" } } @@ -9171,24 +9171,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 11083.2, + "us": 11032.9, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 11083.2, - "level": "full" + "variant": "generic", + "us": 11007.8, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 11083.2, - "level": "full" - }, "generic": { - "us": 11123.5, + "us": 11007.8, "level": "partial" + }, + "generic (strict)": { + "us": 11032.9, + "level": "full" } }, "excluded": { @@ -9199,19 +9199,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 6572.8, + "us": 6521.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 6572.8, + "us": 6521.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 6572.8, + "us": 6521.6, "level": "full" } } @@ -9219,47 +9219,47 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 13835.7, + "us": 13711.3, "level": "full" }, "best_any": { "variant": "Document (string stream)", - "us": 13835.7, + "us": 13711.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy untimed) (no encoding check)": { - "us": 13793.7, - "level": "no UTF-8" - }, - "Document (string stream)": { - "us": 13835.7, + "insitu (copy untimed)": { + "us": 13629.2, "level": "full" }, - "insitu (copy untimed)": { - "us": 13873.8, + "Document (string stream)": { + "us": 13711.3, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 13879.1, + "us": 13713.7, + "level": "no UTF-8" + }, + "insitu (copy) (no encoding check)": { + "us": 13715.7, "level": "no UTF-8" }, "insitu (copy)": { - "us": 13892.9, + "us": 13730.0, "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 13899.6, + "insitu (copy untimed) (no encoding check)": { + "us": 13731.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 14435.8, + "us": 14230.2, "level": "no UTF-8" }, "Document": { - "us": 14525.4, + "us": 14294.8, "level": "full" } } @@ -9284,26 +9284,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 4395.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 4395.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 4395.7, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -9327,29 +9307,49 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 4395.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 4395.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 4395.7, + "level": "full" + } + } } }, "jeopardy": { "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 57634.6, + "us": 57885.4, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 57634.6, + "us": 57885.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 57634.6, + "us": 57885.4, "level": "full" }, "editable": { - "us": 58057.4, + "us": 58018.6, "level": "full" } } @@ -9357,23 +9357,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 203232.0, + "us": 162216.4, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 203232.0, + "us": 162216.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 203232.0, + "us": 162216.4, "level": "full" }, "parse": { - "us": 244854.9, + "us": 262787.0, "level": "full" } } @@ -9381,27 +9381,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 84242.4, + "us": 84466.2, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 84242.4, + "us": 84466.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 84238.9, + "us": 82342.6, "level": "full" }, "insitu (copy) + mut copy": { - "us": 84242.4, + "us": 84466.2, "level": "full" }, "mut copy": { - "us": 84575.2, + "us": 86031.8, "level": "full" } } @@ -9410,14 +9410,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 62688.4, + "us": 63697.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 62688.4, + "us": 63697.4, "level": "no UTF-8" } } @@ -9425,23 +9425,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 178332.9, + "us": 183648.2, "level": "full" }, "best_any": { "variant": "generic", - "us": 176396.9, + "us": 183024.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 176396.9, + "us": 183024.4, "level": "partial" }, "generic (strict)": { - "us": 178332.9, + "us": 183648.2, "level": "full" } }, @@ -9453,67 +9453,67 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 155237.3, + "us": 157849.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 155237.3, + "us": 157849.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 155237.3, + "us": 157849.0, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "insitu (copy)", - "us": 224246.6, + "variant": "Document (string stream)", + "us": 224328.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 145819.4, + "us": 147902.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 144741.2, + "us": 147524.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 145819.4, + "us": 147902.4, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 164924.7, + "us": 163554.0, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 223372.8, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 221270.2, - "level": "full" - }, - "insitu (copy)": { - "us": 224246.6, + "us": 224070.0, "level": "full" }, "Document (string stream)": { - "us": 224879.1, + "us": 224328.1, "level": "full" }, - "Document (no encoding check)": { - "us": 225430.5, - "level": "no UTF-8" + "insitu (copy)": { + "us": 225502.8, + "level": "full" }, "Document": { - "us": 240143.2, + "us": 238537.5, "level": "full" } } @@ -9538,26 +9538,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 140935.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 140935.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 140935.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -9581,6 +9561,26 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 140935.8, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 140935.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 140935.8, + "level": "full" + } + } } }, "status": { @@ -9611,23 +9611,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 7.1, + "us": 6.3, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 7.1, + "us": 6.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 7.1, + "us": 6.3, "level": "full" }, "parse": { - "us": 8.7, + "us": 7.7, "level": "full" } } @@ -9679,23 +9679,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 8.3, + "us": 8.4, "level": "full" }, "best_any": { "variant": "generic", - "us": 8.3, + "us": 8.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 8.3, + "us": 8.4, "level": "partial" }, "generic (strict)": { - "us": 8.3, + "us": 8.4, "level": "full" } }, @@ -9727,27 +9727,27 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 10.4, + "us": 10.5, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 6.6, + "us": 6.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { + "insitu (copy) (no encoding check)": { + "us": 6.5, + "level": "no UTF-8" + }, "insitu (copy untimed) (no encoding check)": { "us": 6.5, "level": "no UTF-8" }, - "insitu (copy) (no encoding check)": { - "us": 6.6, - "level": "no UTF-8" - }, "Document (string stream) (no encoding check)": { - "us": 7.6, + "us": 7.5, "level": "no UTF-8" }, "Document (no encoding check)": { @@ -9759,15 +9759,15 @@ "level": "full" }, "insitu (copy)": { - "us": 10.4, - "level": "full" - }, - "Document": { "us": 10.5, "level": "full" }, "Document (string stream)": { - "us": 10.6, + "us": 10.5, + "level": "full" + }, + "Document": { + "us": 10.7, "level": "full" } } @@ -9792,26 +9792,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 3.8, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 3.8, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 3.8, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -9835,29 +9815,49 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 3.8, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 3.8, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 3.8, + "level": "full" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 260.5, + "us": 261.9, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 260.5, + "us": 261.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 260.5, + "us": 261.9, "level": "full" }, "editable": { - "us": 264.0, + "us": 269.8, "level": "full" } } @@ -9865,23 +9865,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 1238.4, + "us": 1079.4, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 1238.4, + "us": 1079.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 1238.4, + "us": 1079.4, "level": "full" }, "parse": { - "us": 1570.4, + "us": 1446.3, "level": "full" } } @@ -9889,27 +9889,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 410.8, + "us": 415.9, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 410.8, + "us": 415.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy) + mut copy": { - "us": 410.8, + "insitu (copy untimed) + mut copy": { + "us": 404.9, "level": "full" }, - "insitu (copy untimed) + mut copy": { - "us": 413.5, + "insitu (copy) + mut copy": { + "us": 415.9, "level": "full" }, "mut copy": { - "us": 416.3, + "us": 422.0, "level": "full" } } @@ -9918,14 +9918,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 359.7, + "us": 367.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 359.7, + "us": 367.6, "level": "no UTF-8" } } @@ -9933,23 +9933,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 1424.6, + "us": 1419.7, "level": "full" }, "best_any": { "variant": "generic", - "us": 1415.1, + "us": 1405.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 1415.1, + "us": 1405.9, "level": "partial" }, "generic (strict)": { - "us": 1424.6, + "us": 1419.7, "level": "full" } }, @@ -9961,19 +9961,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1268.2, + "us": 1275.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 1268.2, + "us": 1275.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1268.2, + "us": 1275.1, "level": "full" } } @@ -9981,47 +9981,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1685.7, + "us": 1694.0, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1129.6, + "us": 1148.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1123.6, + "us": 1134.9, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1129.6, + "us": 1148.3, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1238.1, + "us": 1238.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1575.2, + "us": 1585.5, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 1682.0, + "insitu (copy)": { + "us": 1694.0, "level": "full" }, - "insitu (copy)": { - "us": 1685.7, + "insitu (copy untimed)": { + "us": 1700.6, "level": "full" }, "Document": { - "us": 1720.0, + "us": 1735.5, "level": "full" }, "Document (string stream)": { - "us": 1721.3, + "us": 1742.9, "level": "full" } } @@ -10046,26 +10046,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 539.1, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 539.1, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 539.1, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -10089,29 +10069,49 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 539.1, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 539.1, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 539.1, + "level": "full" + } + } } }, "citm_catalog_min": { "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 442.6, + "us": 443.5, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 442.6, + "us": 443.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 442.6, + "us": 443.5, "level": "full" }, "editable": { - "us": 444.7, + "us": 443.7, "level": "full" } } @@ -10119,51 +10119,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2222.5, + "us": 1872.6, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2222.5, + "us": 1872.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2222.5, + "us": 1872.6, "level": "full" }, "parse": { - "us": 2598.0, + "us": 2261.9, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + mut copy", - "us": 704.0, + "variant": "mut copy", + "us": 710.0, "level": "full" }, "best_any": { - "variant": "insitu (copy) + mut copy", - "us": 704.0, + "variant": "mut copy", + "us": 710.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 700.5, - "level": "full" - }, - "insitu (copy) + mut copy": { - "us": 704.0, + "us": 703.4, "level": "full" }, "mut copy": { - "us": 712.1, + "us": 710.0, + "level": "full" + }, + "insitu (copy) + mut copy": { + "us": 720.0, "level": "full" } } @@ -10172,14 +10172,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 774.2, + "us": 782.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 774.2, + "us": 782.5, "level": "no UTF-8" } } @@ -10187,23 +10187,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 2911.8, + "us": 2887.9, "level": "full" }, "best_any": { "variant": "generic", - "us": 2897.2, + "us": 2858.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 2897.2, + "us": 2858.4, "level": "partial" }, "generic (strict)": { - "us": 2911.8, + "us": 2887.9, "level": "full" } }, @@ -10215,19 +10215,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1463.3, + "us": 1481.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 1463.3, + "us": 1481.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1463.3, + "us": 1481.5, "level": "full" } } @@ -10235,47 +10235,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1969.5, + "us": 1964.4, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1587.5, + "us": 1626.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1580.4, + "us": 1599.3, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1587.5, + "us": 1626.6, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1824.4, - "level": "no UTF-8" - }, - "insitu (copy untimed)": { - "us": 1948.5, - "level": "full" - }, - "Document (no encoding check)": { - "us": 1950.3, + "us": 1812.2, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1969.5, + "us": 1964.4, "level": "full" }, + "insitu (copy untimed)": { + "us": 1972.2, + "level": "full" + }, + "Document (no encoding check)": { + "us": 1978.2, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 1985.5, + "us": 1989.0, "level": "full" }, "Document": { - "us": 2033.5, + "us": 2050.3, "level": "full" } } @@ -10300,26 +10300,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 971.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 971.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 971.7, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -10343,6 +10323,26 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 971.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 971.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 971.7, + "level": "full" + } + } } } }, @@ -10351,39 +10351,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 252.4, + "us": 252.3, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 252.4, + "us": 252.3, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 246.9, + "us": 248.5, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 246.9, + "us": 248.5, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 246.9, + "us": 248.5, "level": "full" }, "parse + dump (source numbers)": { - "us": 252.4, + "us": 252.3, "level": "full" }, "parse + dump": { - "us": 259.4, + "us": 261.3, "level": "full" }, "parse_copy + dump": { - "us": 263.6, + "us": 265.3, "level": "full" } } @@ -10391,19 +10391,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 1600.2, + "us": 1445.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 1600.2, + "us": 1445.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 1600.2, + "us": 1445.5, "level": "full" } } @@ -10411,22 +10411,22 @@ "yyjson": { "best": { "variant": "insitu (copy) + write", - "us": 292.9, + "us": 298.2, "level": "full" }, "best_any": { "variant": "insitu (copy) + write", - "us": 292.9, + "us": 298.2, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 298.2, + "us": 296.8, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 298.2, + "us": 296.8, "level": "full" }, "variants": { @@ -10434,20 +10434,20 @@ "us": 279.2, "level": "full" }, - "insitu (copy) + write": { - "us": 292.9, + "read + write (reused allocator)": { + "us": 296.8, "level": "full" }, - "read + write (reused allocator)": { + "insitu (copy) + write": { "us": 298.2, "level": "full" }, "read + write": { - "us": 300.2, + "us": 301.5, "level": "full" }, "read (raw numbers) + write": { - "us": 312.6, + "us": 307.0, "level": "full" } } @@ -10455,35 +10455,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 423.4, + "us": 424.7, "level": "full" }, "best_any": { "variant": "minify", - "us": 62.3, + "us": 62.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 417.4, + "us": 410.5, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 417.4, + "us": 410.5, "level": "full" }, "variants": { "minify": { - "us": 62.3, + "us": 62.5, "level": "partial" }, "DOM (reused) + to_string": { - "us": 417.4, + "us": 410.5, "level": "full" }, "DOM + to_string": { - "us": 423.4, + "us": 424.7, "level": "full" } } @@ -10492,14 +10492,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 500.2, + "us": 504.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 500.2, + "us": 504.0, "level": "no UTF-8" } } @@ -10507,28 +10507,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 1505.4, + "us": 1512.0, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 281.1, + "us": 284.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 281.1, + "us": 284.5, + "level": "partial" + }, + "generic": { + "us": 1497.3, "level": "partial" }, "generic (strict)": { - "us": 1505.4, + "us": 1512.0, "level": "full" - }, - "generic": { - "us": 1518.0, - "level": "partial" } }, "excluded": { @@ -10539,95 +10539,95 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1393.2, + "us": 1407.4, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1393.2, + "us": 1407.4, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1410.6, + "us": 1390.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1410.6, + "us": 1390.8, "level": "full" }, "variants": { - "parse + serialize": { - "us": 1393.2, + "parser (reused) + serialize": { + "us": 1390.8, "level": "full" }, - "parser (reused) + serialize": { - "us": 1410.6, + "parse + serialize": { + "us": 1407.4, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX to Writer (raw numbers)", - "us": 1513.0, + "variant": "SAX to Writer", + "us": 1523.2, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1058.3, + "us": 1044.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 1995.4, + "us": 1972.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 1824.8, + "us": 1818.1, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1058.3, + "us": 1044.3, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1315.2, + "us": 1325.3, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1352.4, + "us": 1349.0, "level": "no UTF-8" }, - "SAX to Writer (raw numbers)": { - "us": 1513.0, + "SAX to Writer": { + "us": 1523.2, "level": "full" }, - "SAX to Writer": { - "us": 1525.4, + "SAX to Writer (raw numbers)": { + "us": 1549.5, "level": "full" }, "SAX to Writer (string stream)": { - "us": 1575.7, + "us": 1553.5, "level": "full" }, "Document + Writer (no encoding check)": { - "us": 1798.8, + "us": 1811.6, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 1824.8, + "us": 1818.1, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 1995.4, + "us": 1972.3, "level": "full" }, "Document + Writer": { - "us": 1996.8, + "us": 1986.1, "level": "full" } } @@ -10652,26 +10652,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 535.3, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 535.3, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 535.3, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -10691,45 +10671,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 535.3, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 535.3, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 535.3, + "level": "full" + } + } } }, "citm_catalog": { "nlohmann json_document": { "best": { - "variant": "parse + dump", - "us": 493.3, + "variant": "parse + dump (source numbers)", + "us": 494.0, "level": "full" }, "best_any": { - "variant": "parse + dump", - "us": 493.3, + "variant": "parse + dump (source numbers)", + "us": 494.0, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 492.3, + "us": 497.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 492.3, + "us": 497.2, "level": "full" }, "variants": { - "read + dump (reused)": { - "us": 492.3, + "parse + dump (source numbers)": { + "us": 494.0, "level": "full" }, "parse + dump": { - "us": 493.3, + "us": 495.5, "level": "full" }, - "parse + dump (source numbers)": { - "us": 493.6, + "read + dump (reused)": { + "us": 497.2, "level": "full" }, "parse_copy + dump": { - "us": 524.8, + "us": 523.7, "level": "full" } } @@ -10737,19 +10737,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 2706.3, + "us": 2406.3, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 2706.3, + "us": 2406.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 2706.3, + "us": 2406.3, "level": "full" } } @@ -10757,43 +10757,43 @@ "yyjson": { "best": { "variant": "read + write", - "us": 648.2, + "us": 641.8, "level": "full" }, "best_any": { "variant": "read + write", - "us": 648.2, + "us": 641.8, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 654.2, + "us": 649.5, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 654.2, + "us": 649.5, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 625.2, + "us": 614.4, "level": "full" }, "read + write": { - "us": 648.2, - "level": "full" - }, - "read + write (reused allocator)": { - "us": 654.2, + "us": 641.8, "level": "full" }, "insitu (copy) + write": { - "us": 657.3, + "us": 643.5, + "level": "full" + }, + "read + write (reused allocator)": { + "us": 649.5, "level": "full" }, "read (raw numbers) + write": { - "us": 720.8, + "us": 715.1, "level": "full" } } @@ -10801,35 +10801,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 848.2, + "us": 850.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 170.9, + "us": 168.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 881.8, + "us": 853.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 881.8, + "us": 853.0, "level": "full" }, "variants": { "minify": { - "us": 170.9, + "us": 168.4, "level": "partial" }, "DOM + to_string": { - "us": 848.2, + "us": 850.0, "level": "full" }, "DOM (reused) + to_string": { - "us": 881.8, + "us": 853.0, "level": "full" } } @@ -10838,14 +10838,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1220.5, + "us": 1216.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1220.5, + "us": 1216.6, "level": "no UTF-8" } } @@ -10853,27 +10853,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3225.4, + "us": 3245.1, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 728.8, + "us": 746.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 728.8, + "us": 746.6, "level": "partial" }, "generic": { - "us": 3209.1, + "us": 3229.2, "level": "partial" }, "generic (strict)": { - "us": 3225.4, + "us": 3245.1, "level": "full" } }, @@ -10885,31 +10885,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1986.5, + "us": 2003.1, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1986.5, + "us": 2003.1, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1982.2, + "us": 2024.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1982.2, + "us": 2024.2, "level": "full" }, "variants": { - "parser (reused) + serialize": { - "us": 1982.2, + "parse + serialize": { + "us": 2003.1, "level": "full" }, - "parse + serialize": { - "us": 1986.5, + "parser (reused) + serialize": { + "us": 2024.2, "level": "full" } } @@ -10917,63 +10917,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 1807.7, + "us": 1802.7, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1485.1, + "us": 1498.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2519.6, + "us": 2512.4, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2449.8, + "us": 2438.6, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1485.1, + "us": 1498.6, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1718.8, + "us": 1734.2, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 1807.7, + "us": 1802.7, "level": "full" }, "SAX to Writer": { - "us": 1815.2, + "us": 1843.5, "level": "full" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1988.1, + "us": 2006.3, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 2097.4, + "us": 2143.4, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2449.8, + "us": 2438.6, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 2464.5, + "us": 2444.3, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2519.6, + "us": 2512.4, "level": "full" }, "Document + Writer": { - "us": 2537.3, + "us": 2561.9, "level": "full" } } @@ -10998,26 +10998,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1134.5, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 1134.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1134.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -11037,45 +11017,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1134.5, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 1134.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1134.5, + "level": "full" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 1359.9, + "us": 1343.0, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 1359.9, + "us": 1343.0, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 2610.6, + "us": 2567.0, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 2610.6, + "us": 2567.0, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 1359.9, - "level": "full" - }, - "parse + dump": { - "us": 2581.5, + "us": 1343.0, "level": "full" }, "read + dump (reused)": { - "us": 2610.6, + "us": 2567.0, + "level": "full" + }, + "parse + dump": { + "us": 2570.2, "level": "full" }, "parse_copy + dump": { - "us": 2649.1, + "us": 2602.9, "level": "full" } } @@ -11083,19 +11083,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 8388.9, + "us": 7328.3, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 8388.9, + "us": 7328.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 8388.9, + "us": 7328.3, "level": "full" } } @@ -11103,43 +11103,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 2549.6, + "us": 2523.2, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 2549.6, + "us": 2523.2, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 3237.4, + "us": 3233.5, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 3237.4, + "us": 3233.5, "level": "full" }, "variants": { "read (raw numbers) + write": { - "us": 2549.6, + "us": 2523.2, "level": "full" }, "insitu (copy untimed) + write": { - "us": 3195.6, - "level": "full" - }, - "read + write": { - "us": 3223.1, + "us": 3175.2, "level": "full" }, "insitu (copy) + write": { - "us": 3225.6, + "us": 3222.2, + "level": "full" + }, + "read + write": { + "us": 3227.5, "level": "full" }, "read + write (reused allocator)": { - "us": 3237.4, + "us": 3233.5, "level": "full" } } @@ -11147,35 +11147,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 5120.0, + "us": 5093.9, "level": "full" }, "best_any": { "variant": "minify", - "us": 227.1, + "us": 227.2, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 5115.5, + "us": 5098.5, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 5115.5, + "us": 5098.5, "level": "full" }, "variants": { "minify": { - "us": 227.1, + "us": 227.2, "level": "partial" }, - "DOM (reused) + to_string": { - "us": 5115.5, + "DOM + to_string": { + "us": 5093.9, "level": "full" }, - "DOM + to_string": { - "us": 5120.0, + "DOM (reused) + to_string": { + "us": 5098.5, "level": "full" } } @@ -11184,14 +11184,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 5676.5, + "us": 5634.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 5676.5, + "us": 5634.0, "level": "no UTF-8" } } @@ -11199,28 +11199,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 11092.4, + "us": 11111.5, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1721.5, + "us": 1746.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1721.5, + "us": 1746.0, + "level": "partial" + }, + "generic": { + "us": 11044.4, "level": "partial" }, "generic (strict)": { - "us": 11092.4, + "us": 11111.5, "level": "full" - }, - "generic": { - "us": 11130.8, - "level": "partial" } }, "excluded": { @@ -11231,31 +11231,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 6542.4, + "us": 6555.2, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 6542.4, + "us": 6555.2, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 6524.1, + "us": 6556.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 6524.1, + "us": 6556.8, "level": "full" }, "variants": { - "parser (reused) + serialize": { - "us": 6524.1, + "parse + serialize": { + "us": 6555.2, "level": "full" }, - "parse + serialize": { - "us": 6542.4, + "parser (reused) + serialize": { + "us": 6556.8, "level": "full" } } @@ -11263,64 +11263,64 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (raw numbers)", - "us": 11009.0, + "us": 11568.4, "level": "full" }, "best_any": { - "variant": "SAX to Writer (raw numbers) (no encoding check)", - "us": 10908.5, - "level": "no UTF-8" + "variant": "SAX to Writer (raw numbers)", + "us": 11568.4, + "level": "full" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 14370.9, + "us": 14244.4, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator)", - "us": 14370.9, + "us": 14244.4, "level": "full" }, "variants": { - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 10908.5, - "level": "no UTF-8" - }, "SAX to Writer (raw numbers)": { - "us": 11009.0, + "us": 11568.4, "level": "full" }, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 11573.3, + "level": "no UTF-8" + }, "Document + Writer (reused allocator)": { - "us": 14370.9, + "us": 14244.4, "level": "full" }, "Document + Writer (no encoding check)": { - "us": 14434.6, + "us": 14317.4, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 14350.3, "level": "no UTF-8" }, "Document + Writer": { - "us": 14460.5, + "us": 14378.2, "level": "full" }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 14533.2, - "level": "no UTF-8" - }, "SAX to Writer (string stream) (no encoding check)": { - "us": 15103.5, + "us": 15020.1, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 15111.3, - "level": "full" - }, - "SAX to Writer": { - "us": 15554.3, + "us": 15055.9, "level": "full" }, "SAX to Writer (no encoding check)": { - "us": 15716.2, + "us": 15463.4, "level": "no UTF-8" + }, + "SAX to Writer": { + "us": 15505.3, + "level": "full" } } }, @@ -11344,26 +11344,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 4376.6, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 4376.6, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 4376.6, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -11383,45 +11363,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 4376.6, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 4376.6, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 4376.6, + "level": "full" + } + } } }, "jeopardy": { "nlohmann json_document": { "best": { - "variant": "parse + dump (source numbers)", - "us": 37817.3, + "variant": "parse + dump", + "us": 37624.4, "level": "full" }, "best_any": { - "variant": "parse + dump (source numbers)", - "us": 37817.3, + "variant": "parse + dump", + "us": 37624.4, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 37523.8, + "us": 37604.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 37523.8, + "us": 37604.2, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 37523.8, - "level": "full" - }, - "parse + dump (source numbers)": { - "us": 37817.3, + "us": 37604.2, "level": "full" }, "parse + dump": { - "us": 37882.5, + "us": 37624.4, + "level": "full" + }, + "parse + dump (source numbers)": { + "us": 37892.5, "level": "full" }, "parse_copy + dump": { - "us": 38976.6, + "us": 39054.3, "level": "full" } } @@ -11429,63 +11429,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 197745.3, + "us": 182131.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 197745.3, + "us": 182131.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 197745.3, + "us": 182131.5, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + write", - "us": 51134.1, + "variant": "read + write", + "us": 51001.2, "level": "full" }, "best_any": { - "variant": "insitu (copy) + write", - "us": 51134.1, + "variant": "read + write", + "us": 51001.2, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 51533.2, + "us": 50934.6, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 51533.2, + "us": 50934.6, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 50820.6, - "level": "full" - }, - "insitu (copy) + write": { - "us": 51134.1, + "us": 49957.7, "level": "full" }, "read + write (reused allocator)": { - "us": 51533.2, - "level": "full" - }, - "read (raw numbers) + write": { - "us": 51608.1, + "us": 50934.6, "level": "full" }, "read + write": { - "us": 51801.0, + "us": 51001.2, + "level": "full" + }, + "read (raw numbers) + write": { + "us": 51022.0, + "level": "full" + }, + "insitu (copy) + write": { + "us": 51098.8, "level": "full" } } @@ -11493,35 +11493,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 61059.3, + "us": 61202.1, "level": "full" }, "best_any": { "variant": "minify", - "us": 5761.8, + "us": 5756.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 61143.8, + "us": 61188.5, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 61143.8, + "us": 61188.5, "level": "full" }, "variants": { "minify": { - "us": 5761.8, + "us": 5756.5, "level": "partial" }, - "DOM + to_string": { - "us": 61059.3, + "DOM (reused) + to_string": { + "us": 61188.5, "level": "full" }, - "DOM (reused) + to_string": { - "us": 61143.8, + "DOM + to_string": { + "us": 61202.1, "level": "full" } } @@ -11530,14 +11530,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 61235.6, + "us": 61988.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 61235.6, + "us": 61988.1, "level": "no UTF-8" } } @@ -11545,27 +11545,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 168854.8, + "us": 172173.3, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 39975.8, + "us": 40438.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 39975.8, + "us": 40438.8, "level": "partial" }, "generic": { - "us": 165922.9, + "us": 167568.4, "level": "partial" }, "generic (strict)": { - "us": 168854.8, + "us": 172173.3, "level": "full" } }, @@ -11577,31 +11577,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 154677.0, + "us": 154865.2, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 154677.0, + "us": 154865.2, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 153505.1, + "us": 154743.4, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 153505.1, + "us": 154743.4, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 153505.1, + "us": 154743.4, "level": "full" }, "parse + serialize": { - "us": 154677.0, + "us": 154865.2, "level": "full" } } @@ -11609,63 +11609,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 174558.2, + "us": 174957.5, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 123119.2, + "us": 123907.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 239139.2, + "us": 239399.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 224809.3, + "us": 226887.8, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 123119.2, + "us": 123907.6, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 166787.6, + "us": 167510.8, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 168330.2, + "us": 168231.5, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 174558.2, + "us": 174957.5, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 180942.4, + "us": 180634.4, "level": "full" }, "SAX to Writer": { - "us": 181643.3, + "us": 182032.7, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 224809.3, + "us": 226887.8, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 226786.8, + "us": 229730.5, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 239139.2, + "us": 239399.3, "level": "full" }, "Document + Writer": { - "us": 241392.5, + "us": 242915.9, "level": "full" } } @@ -11690,26 +11690,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 64832.5, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 64832.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 64832.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -11729,18 +11709,38 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 64832.5, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 64832.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 64832.5, + "level": "full" + } + } } }, "status": { "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 1.4, + "us": 1.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 1.4, + "us": 1.5, "level": "full" }, "best_reused": { @@ -11754,12 +11754,12 @@ "level": "full" }, "variants": { - "parse + dump": { + "read + dump (reused)": { "us": 1.4, "level": "full" }, - "read + dump (reused)": { - "us": 1.4, + "parse + dump": { + "us": 1.5, "level": "full" }, "parse_copy + dump": { @@ -11775,19 +11775,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 8.8, + "us": 7.7, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 8.8, + "us": 7.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 8.8, + "us": 7.7, "level": "full" } } @@ -11839,7 +11839,7 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 2.4, + "us": 2.3, "level": "full" }, "best_any": { @@ -11849,12 +11849,12 @@ }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 2.3, + "us": 2.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 2.3, + "us": 2.2, "level": "full" }, "variants": { @@ -11863,11 +11863,11 @@ "level": "partial" }, "DOM (reused) + to_string": { - "us": 2.3, + "us": 2.2, "level": "full" }, "DOM + to_string": { - "us": 2.4, + "us": 2.3, "level": "full" } } @@ -11896,18 +11896,18 @@ }, "best_any": { "variant": "minify_json", - "us": 1.3, + "us": 1.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1.3, + "us": 1.4, "level": "partial" }, "generic": { - "us": 8.0, + "us": 7.9, "level": "partial" }, "generic (strict)": { @@ -11923,12 +11923,12 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 6.7, + "us": 6.8, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 6.7, + "us": 6.8, "level": "full" }, "best_reused": { @@ -11947,7 +11947,7 @@ "level": "full" }, "parse + serialize": { - "us": 6.7, + "us": 6.8, "level": "full" } } @@ -11955,17 +11955,17 @@ "RapidJSON": { "best": { "variant": "SAX to Writer", - "us": 8.1, + "us": 8.0, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 5.0, + "us": 4.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 10.2, + "us": 10.3, "level": "full" }, "best_reused_any": { @@ -11975,19 +11975,19 @@ }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 5.0, + "us": 4.9, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 7.4, + "us": 7.3, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 7.5, + "us": 7.6, "level": "no UTF-8" }, "SAX to Writer": { - "us": 8.1, + "us": 8.0, "level": "full" }, "SAX to Writer (string stream)": { @@ -11995,7 +11995,7 @@ "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 8.1, + "us": 8.2, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { @@ -12003,15 +12003,15 @@ "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 9.9, + "us": 10.0, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 10.2, + "us": 10.3, "level": "full" }, "Document + Writer": { - "us": 10.7, + "us": 11.0, "level": "full" } } @@ -12036,26 +12036,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 3.0, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 3.0, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 3.0, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -12075,45 +12055,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 3.0, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 3.0, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 3.0, + "level": "full" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 233.0, + "us": 231.7, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 233.0, + "us": 231.7, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 227.8, + "us": 234.4, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 227.8, + "us": 234.4, "level": "full" }, "variants": { - "read + dump (reused)": { - "us": 227.8, + "parse + dump (source numbers)": { + "us": 231.7, "level": "full" }, - "parse + dump (source numbers)": { - "us": 233.0, + "read + dump (reused)": { + "us": 234.4, "level": "full" }, "parse + dump": { - "us": 235.4, + "us": 240.0, "level": "full" }, "parse_copy + dump": { - "us": 244.4, + "us": 242.5, "level": "full" } } @@ -12121,19 +12121,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 1559.2, + "us": 1419.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 1559.2, + "us": 1419.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 1559.2, + "us": 1419.5, "level": "full" } } @@ -12151,21 +12151,21 @@ }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 269.4, + "us": 268.0, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 269.4, + "us": 268.0, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 267.0, + "us": 257.6, "level": "full" }, "read + write (reused allocator)": { - "us": 269.4, + "us": 268.0, "level": "full" }, "insitu (copy) + write": { @@ -12173,11 +12173,11 @@ "level": "full" }, "read + write": { - "us": 274.8, + "us": 272.9, "level": "full" }, "read (raw numbers) + write": { - "us": 283.8, + "us": 285.5, "level": "full" } } @@ -12185,7 +12185,7 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 397.3, + "us": 393.5, "level": "full" }, "best_any": { @@ -12195,12 +12195,12 @@ }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 389.9, + "us": 382.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 389.9, + "us": 382.8, "level": "full" }, "variants": { @@ -12209,11 +12209,11 @@ "level": "partial" }, "DOM (reused) + to_string": { - "us": 389.9, + "us": 382.8, "level": "full" }, "DOM + to_string": { - "us": 397.3, + "us": 393.5, "level": "full" } } @@ -12222,14 +12222,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 367.2, + "us": 378.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 367.2, + "us": 378.4, "level": "no UTF-8" } } @@ -12237,27 +12237,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 1396.0, + "us": 1392.9, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 241.9, + "us": 247.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 241.9, + "us": 247.4, "level": "partial" }, "generic": { - "us": 1390.0, + "us": 1388.7, "level": "partial" }, "generic (strict)": { - "us": 1396.0, + "us": 1392.9, "level": "full" } }, @@ -12269,31 +12269,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1287.0, + "us": 1290.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1287.0, + "us": 1290.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1296.0, + "us": 1293.5, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1296.0, + "us": 1293.5, "level": "full" }, "variants": { "parse + serialize": { - "us": 1287.0, + "us": 1290.7, "level": "full" }, "parser (reused) + serialize": { - "us": 1296.0, + "us": 1293.5, "level": "full" } } @@ -12301,63 +12301,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 1340.0, + "us": 1341.1, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 839.7, + "us": 854.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 1762.7, + "us": 1769.6, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 1618.5, + "us": 1630.3, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 839.7, + "us": 854.5, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1231.3, + "us": 1240.5, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1252.0, + "us": 1256.9, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 1340.0, + "us": 1341.1, "level": "full" }, "SAX to Writer": { - "us": 1353.2, + "us": 1386.2, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 1374.1, + "us": 1388.4, "level": "full" }, - "Document + Writer (no encoding check)": { - "us": 1609.3, - "level": "no UTF-8" - }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 1618.5, + "us": 1630.3, "level": "no UTF-8" }, - "Document + Writer": { - "us": 1762.5, - "level": "full" + "Document + Writer (no encoding check)": { + "us": 1630.7, + "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 1762.7, + "us": 1769.6, + "level": "full" + }, + "Document + Writer": { + "us": 1799.5, "level": "full" } } @@ -12382,26 +12382,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 457.7, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 457.7, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 457.7, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -12421,45 +12401,65 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 457.7, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 457.7, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 457.7, + "level": "full" + } + } } }, "citm_catalog_min": { "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 376.9, + "us": 377.5, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 376.9, + "us": 377.5, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 374.9, + "us": 379.3, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 374.9, + "us": 379.3, "level": "full" }, "variants": { - "read + dump (reused)": { - "us": 374.9, + "parse + dump (source numbers)": { + "us": 377.5, "level": "full" }, - "parse + dump (source numbers)": { - "us": 376.9, + "read + dump (reused)": { + "us": 379.3, "level": "full" }, "parse + dump": { - "us": 377.6, + "us": 379.5, "level": "full" }, "parse_copy + dump": { - "us": 385.4, + "us": 387.7, "level": "full" } } @@ -12467,19 +12467,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 2564.5, + "us": 2253.7, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 2564.5, + "us": 2253.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 2564.5, + "us": 2253.7, "level": "full" } } @@ -12487,43 +12487,43 @@ "yyjson": { "best": { "variant": "read + write", - "us": 448.9, + "us": 446.0, "level": "full" }, "best_any": { "variant": "read + write", - "us": 448.9, + "us": 446.0, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 450.9, + "us": 446.5, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 450.9, + "us": 446.5, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 445.0, + "us": 437.7, "level": "full" }, "read + write": { - "us": 448.9, - "level": "full" - }, - "insitu (copy) + write": { - "us": 449.2, + "us": 446.0, "level": "full" }, "read + write (reused allocator)": { - "us": 450.9, + "us": 446.5, + "level": "full" + }, + "insitu (copy) + write": { + "us": 448.7, "level": "full" }, "read (raw numbers) + write": { - "us": 525.4, + "us": 512.8, "level": "full" } } @@ -12531,35 +12531,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 708.1, + "us": 718.2, "level": "full" }, "best_any": { "variant": "minify", - "us": 48.4, + "us": 49.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 740.5, + "us": 714.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 740.5, + "us": 714.7, "level": "full" }, "variants": { "minify": { - "us": 48.4, + "us": 49.3, "level": "partial" }, - "DOM + to_string": { - "us": 708.1, + "DOM (reused) + to_string": { + "us": 714.7, "level": "full" }, - "DOM (reused) + to_string": { - "us": 740.5, + "DOM + to_string": { + "us": 718.2, "level": "full" } } @@ -12568,14 +12568,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 767.0, + "us": 778.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 767.0, + "us": 778.8, "level": "no UTF-8" } } @@ -12583,27 +12583,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 2829.5, + "us": 2827.6, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 438.7, + "us": 446.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 438.7, + "us": 446.7, "level": "partial" }, "generic": { - "us": 2825.5, + "us": 2789.5, "level": "partial" }, "generic (strict)": { - "us": 2829.5, + "us": 2827.6, "level": "full" } }, @@ -12615,31 +12615,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1445.3, + "us": 1470.0, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1445.3, + "us": 1470.0, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1448.5, + "us": 1443.0, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1448.5, + "us": 1443.0, "level": "full" }, "variants": { - "parse + serialize": { - "us": 1445.3, + "parser (reused) + serialize": { + "us": 1443.0, "level": "full" }, - "parser (reused) + serialize": { - "us": 1448.5, + "parse + serialize": { + "us": 1470.0, "level": "full" } } @@ -12647,63 +12647,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer", - "us": 1457.4, + "us": 1477.1, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1223.2, + "us": 1220.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2055.8, + "us": 2035.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 1959.2, + "us": 2010.5, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1223.2, + "us": 1220.9, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1404.9, + "us": 1386.5, "level": "no UTF-8" }, "SAX to Writer": { - "us": 1457.4, + "us": 1477.1, "level": "full" }, "SAX to Writer (string stream)": { - "us": 1476.6, + "us": 1485.2, "level": "full" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1694.9, + "us": 1735.0, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 1735.2, + "us": 1777.0, "level": "full" }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 1959.2, - "level": "no UTF-8" - }, "Document + Writer (no encoding check)": { - "us": 1966.3, + "us": 1994.8, "level": "no UTF-8" }, - "Document + Writer": { - "us": 2042.3, - "level": "full" + "Document + Writer (reused allocator) (no encoding check)": { + "us": 2010.5, + "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2055.8, + "us": 2035.3, + "level": "full" + }, + "Document + Writer": { + "us": 2046.8, "level": "full" } } @@ -12728,26 +12728,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 825.5, - "level": "full" - }, - "best_any": { - "variant": "Value", - "us": 825.5, - "level": "full" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 825.5, - "level": "full" - } - } - }, "simd-json": { "best": { "variant": "borrowed (copy)", @@ -12767,6 +12747,26 @@ "level": "full" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 825.5, + "level": "full" + }, + "best_any": { + "variant": "Value", + "us": 825.5, + "level": "full" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 825.5, + "level": "full" + } + } } } }, @@ -12774,24 +12774,24 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "dump", - "us": 74.3, + "variant": "dump (source numbers)", + "us": 72.8, "level": "n/a" }, "best_any": { - "variant": "dump", - "us": 74.3, + "variant": "dump (source numbers)", + "us": 72.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump": { - "us": 74.3, + "dump (source numbers)": { + "us": 72.8, "level": "n/a" }, - "dump (source numbers)": { - "us": 74.8, + "dump": { + "us": 76.2, "level": "n/a" } } @@ -12799,19 +12799,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 223.3, + "us": 216.2, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 223.3, + "us": 216.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 223.3, + "us": 216.2, "level": "n/a" } } @@ -12819,19 +12819,19 @@ "yyjson": { "best": { "variant": "write", - "us": 102.7, + "us": 100.8, "level": "n/a" }, "best_any": { "variant": "write", - "us": 102.7, + "us": 100.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 102.7, + "us": 100.8, "level": "n/a" } } @@ -12839,19 +12839,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 199.2, + "us": 201.2, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 199.2, + "us": 201.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 199.2, + "us": 201.2, "level": "n/a" } } @@ -12859,19 +12859,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 602.6, + "us": 595.6, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 602.6, + "us": 595.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 602.6, + "us": 595.6, "level": "n/a" } } @@ -12879,19 +12879,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 108.5, + "us": 113.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 108.5, + "us": 113.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 108.5, + "us": 113.6, "level": "n/a" } } @@ -12899,23 +12899,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 216.2, + "us": 212.3, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 216.2, + "us": 212.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 216.2, + "us": 212.3, "level": "n/a" }, "generic (strict)": { - "us": 226.0, + "us": 222.2, "level": "n/a" } }, @@ -12927,19 +12927,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 506.7, + "us": 499.1, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 506.7, + "us": 499.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 506.7, + "us": 499.1, "level": "n/a" } } @@ -12964,26 +12964,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 211.5, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 211.5, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 211.5, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -13003,29 +12983,49 @@ "level": "n/a" } } - } - }, - "citm_catalog": { - "nlohmann json_document": { + }, + "sonic-rs": { "best": { - "variant": "dump", - "us": 133.8, + "variant": "Value", + "us": 211.5, "level": "n/a" }, "best_any": { - "variant": "dump", - "us": 133.8, + "variant": "Value", + "us": 211.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump": { - "us": 133.8, + "Value": { + "us": 211.5, + "level": "n/a" + } + } + } + }, + "citm_catalog": { + "nlohmann json_document": { + "best": { + "variant": "dump (source numbers)", + "us": 136.3, + "level": "n/a" + }, + "best_any": { + "variant": "dump (source numbers)", + "us": 136.3, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "dump (source numbers)": { + "us": 136.3, "level": "n/a" }, - "dump (source numbers)": { - "us": 134.2, + "dump": { + "us": 138.7, "level": "n/a" } } @@ -13033,19 +13033,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 287.0, + "us": 287.1, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 287.0, + "us": 287.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 287.0, + "us": 287.1, "level": "n/a" } } @@ -13053,19 +13053,19 @@ "yyjson": { "best": { "variant": "write", - "us": 169.4, + "us": 167.2, "level": "n/a" }, "best_any": { "variant": "write", - "us": 169.4, + "us": 167.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 169.4, + "us": 167.2, "level": "n/a" } } @@ -13073,19 +13073,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 385.1, + "us": 416.4, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 385.1, + "us": 416.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 385.1, + "us": 416.4, "level": "n/a" } } @@ -13093,19 +13093,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 830.3, + "us": 836.2, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 830.3, + "us": 836.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 830.3, + "us": 836.2, "level": "n/a" } } @@ -13113,43 +13113,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 230.2, + "us": 240.1, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 230.2, + "us": 240.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 230.2, + "us": 240.1, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic", - "us": 469.3, + "variant": "generic (strict)", + "us": 476.2, "level": "n/a" }, "best_any": { - "variant": "generic", - "us": 469.3, + "variant": "generic (strict)", + "us": 476.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 469.3, + "generic (strict)": { + "us": 476.2, "level": "n/a" }, - "generic (strict)": { - "us": 473.3, + "generic": { + "us": 477.8, "level": "n/a" } }, @@ -13161,19 +13161,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 507.7, + "us": 511.2, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 507.7, + "us": 511.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 507.7, + "us": 511.2, "level": "n/a" } } @@ -13198,26 +13198,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 446.0, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 446.0, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 446.0, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -13237,29 +13217,49 @@ "level": "n/a" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 446.0, + "level": "n/a" + }, + "best_any": { + "variant": "Value", + "us": 446.0, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 446.0, + "level": "n/a" + } + } } }, "canada": { "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 401.2, + "us": 398.3, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 401.2, + "us": 398.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 401.2, + "us": 398.3, "level": "n/a" }, "dump": { - "us": 1621.2, + "us": 1625.2, "level": "n/a" } } @@ -13267,19 +13267,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 2275.8, + "us": 2273.5, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 2275.8, + "us": 2273.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 2275.8, + "us": 2273.5, "level": "n/a" } } @@ -13287,19 +13287,19 @@ "yyjson": { "best": { "variant": "write", - "us": 1731.3, + "us": 1719.1, "level": "n/a" }, "best_any": { "variant": "write", - "us": 1731.3, + "us": 1719.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 1731.3, + "us": 1719.1, "level": "n/a" } } @@ -13307,19 +13307,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 3241.4, + "us": 3185.9, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 3241.4, + "us": 3185.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 3241.4, + "us": 3185.9, "level": "n/a" } } @@ -13327,19 +13327,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 6995.1, + "us": 6927.8, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 6995.1, + "us": 6927.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 6995.1, + "us": 6927.8, "level": "n/a" } } @@ -13347,19 +13347,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 3093.4, + "us": 3108.7, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 3093.4, + "us": 3108.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 3093.4, + "us": 3108.7, "level": "n/a" } } @@ -13367,23 +13367,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 1720.0, + "us": 1701.6, "level": "n/a" }, "best_any": { "variant": "generic (strict)", - "us": 1720.0, + "us": 1701.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (strict)": { - "us": 1720.0, + "us": 1701.6, "level": "n/a" }, "generic": { - "us": 1720.5, + "us": 1729.8, "level": "n/a" } }, @@ -13395,19 +13395,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 2922.8, + "us": 2873.0, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 2922.8, + "us": 2873.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 2922.8, + "us": 2873.0, "level": "n/a" } } @@ -13432,26 +13432,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 2419.2, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 2419.2, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 2419.2, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -13471,29 +13451,49 @@ "level": "n/a" } } - } - }, - "jeopardy": { - "nlohmann json_document": { + }, + "sonic-rs": { "best": { - "variant": "dump", - "us": 14757.0, + "variant": "Value", + "us": 2419.2, "level": "n/a" }, "best_any": { - "variant": "dump", - "us": 14757.0, + "variant": "Value", + "us": 2419.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump": { - "us": 14757.0, + "Value": { + "us": 2419.2, + "level": "n/a" + } + } + } + }, + "jeopardy": { + "nlohmann json_document": { + "best": { + "variant": "dump (source numbers)", + "us": 14757.7, + "level": "n/a" + }, + "best_any": { + "variant": "dump (source numbers)", + "us": 14757.7, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "dump (source numbers)": { + "us": 14757.7, "level": "n/a" }, - "dump (source numbers)": { - "us": 14803.2, + "dump": { + "us": 14860.6, "level": "n/a" } } @@ -13501,19 +13501,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 31825.4, + "us": 30928.0, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 31825.4, + "us": 30928.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 31825.4, + "us": 30928.0, "level": "n/a" } } @@ -13521,19 +13521,19 @@ "yyjson": { "best": { "variant": "write", - "us": 20087.0, + "us": 19937.4, "level": "n/a" }, "best_any": { "variant": "write", - "us": 20087.0, + "us": 19937.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 20087.0, + "us": 19937.4, "level": "n/a" } } @@ -13541,19 +13541,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 32208.3, + "us": 32184.8, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 32208.3, + "us": 32184.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 32208.3, + "us": 32184.8, "level": "n/a" } } @@ -13561,19 +13561,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 81149.7, + "us": 80160.4, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 81149.7, + "us": 80160.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 81149.7, + "us": 80160.4, "level": "n/a" } } @@ -13581,19 +13581,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 19651.3, + "us": 20326.9, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 19651.3, + "us": 20326.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 19651.3, + "us": 20326.9, "level": "n/a" } } @@ -13601,23 +13601,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 33933.8, + "us": 34031.5, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 33933.8, + "us": 34031.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 33933.8, + "us": 34031.5, "level": "n/a" }, "generic (strict)": { - "us": 36934.7, + "us": 36951.1, "level": "n/a" } }, @@ -13629,19 +13629,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 62583.4, + "us": 63201.3, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 62583.4, + "us": 63201.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 62583.4, + "us": 63201.3, "level": "n/a" } } @@ -13666,26 +13666,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 33366.0, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 33366.0, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 33366.0, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -13705,6 +13685,26 @@ "level": "n/a" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 33366.0, + "level": "n/a" + }, + "best_any": { + "variant": "Value", + "us": 33366.0, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 33366.0, + "level": "n/a" + } + } } }, "status": { @@ -13795,19 +13795,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 3.9, + "us": 4.0, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 3.9, + "us": 4.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 3.9, + "us": 4.0, "level": "n/a" } } @@ -13815,19 +13815,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 0.8, + "us": 0.9, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 0.8, + "us": 0.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 0.8, + "us": 0.9, "level": "n/a" } } @@ -13900,26 +13900,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 1.5, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 1.5, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 1.5, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -13939,29 +13919,49 @@ "level": "n/a" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 1.5, + "level": "n/a" + }, + "best_any": { + "variant": "Value", + "us": 1.5, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 1.5, + "level": "n/a" + } + } } }, "twitter_min": { "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 73.2, + "us": 75.0, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 73.2, + "us": 75.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 73.2, + "us": 75.0, "level": "n/a" }, "dump": { - "us": 73.3, + "us": 77.9, "level": "n/a" } } @@ -13969,19 +13969,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 219.0, + "us": 218.0, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 219.0, + "us": 218.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 219.0, + "us": 218.0, "level": "n/a" } } @@ -13989,19 +13989,19 @@ "yyjson": { "best": { "variant": "write", - "us": 100.8, + "us": 103.9, "level": "n/a" }, "best_any": { "variant": "write", - "us": 100.8, + "us": 103.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 100.8, + "us": 103.9, "level": "n/a" } } @@ -14009,19 +14009,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 198.0, + "us": 206.3, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 198.0, + "us": 206.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 198.0, + "us": 206.3, "level": "n/a" } } @@ -14029,19 +14029,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 592.9, + "us": 603.7, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 592.9, + "us": 603.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 592.9, + "us": 603.7, "level": "n/a" } } @@ -14049,19 +14049,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 104.6, + "us": 114.0, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 104.6, + "us": 114.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 104.6, + "us": 114.0, "level": "n/a" } } @@ -14069,23 +14069,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 210.8, + "us": 216.2, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 210.8, + "us": 216.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 210.8, + "us": 216.2, "level": "n/a" }, "generic (strict)": { - "us": 220.2, + "us": 227.1, "level": "n/a" } }, @@ -14097,19 +14097,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 498.6, + "us": 508.5, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 498.6, + "us": 508.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 498.6, + "us": 508.5, "level": "n/a" } } @@ -14134,26 +14134,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 215.8, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 215.8, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 215.8, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -14173,29 +14153,49 @@ "level": "n/a" } } - } - }, - "citm_catalog_min": { - "nlohmann json_document": { + }, + "sonic-rs": { "best": { - "variant": "dump", - "us": 133.8, + "variant": "Value", + "us": 215.8, "level": "n/a" }, "best_any": { - "variant": "dump", - "us": 133.8, + "variant": "Value", + "us": 215.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump": { - "us": 133.8, + "Value": { + "us": 215.8, + "level": "n/a" + } + } + } + }, + "citm_catalog_min": { + "nlohmann json_document": { + "best": { + "variant": "dump (source numbers)", + "us": 136.8, + "level": "n/a" + }, + "best_any": { + "variant": "dump (source numbers)", + "us": 136.8, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "dump (source numbers)": { + "us": 136.8, "level": "n/a" }, - "dump (source numbers)": { - "us": 134.4, + "dump": { + "us": 139.1, "level": "n/a" } } @@ -14203,19 +14203,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 287.3, + "us": 290.0, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 287.3, + "us": 290.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 287.3, + "us": 290.0, "level": "n/a" } } @@ -14223,19 +14223,19 @@ "yyjson": { "best": { "variant": "write", - "us": 172.0, + "us": 167.0, "level": "n/a" }, "best_any": { "variant": "write", - "us": 172.0, + "us": 167.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 172.0, + "us": 167.0, "level": "n/a" } } @@ -14243,19 +14243,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 386.2, + "us": 387.4, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 386.2, + "us": 387.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 386.2, + "us": 387.4, "level": "n/a" } } @@ -14263,19 +14263,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 826.2, + "us": 851.9, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 826.2, + "us": 851.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 826.2, + "us": 851.9, "level": "n/a" } } @@ -14283,19 +14283,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 225.2, + "us": 233.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 225.2, + "us": 233.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 225.2, + "us": 233.6, "level": "n/a" } } @@ -14303,23 +14303,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 474.5, + "us": 479.3, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 474.5, + "us": 479.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 474.5, + "us": 479.3, "level": "n/a" }, "generic (strict)": { - "us": 475.0, + "us": 481.3, "level": "n/a" } }, @@ -14331,19 +14331,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 512.1, + "us": 511.4, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 512.1, + "us": 511.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 512.1, + "us": 511.4, "level": "n/a" } } @@ -14368,26 +14368,6 @@ } } }, - "sonic-rs": { - "best": { - "variant": "Value", - "us": 460.7, - "level": "n/a" - }, - "best_any": { - "variant": "Value", - "us": 460.7, - "level": "n/a" - }, - "best_reused": null, - "best_reused_any": null, - "variants": { - "Value": { - "us": 460.7, - "level": "n/a" - } - } - }, "simd-json": { "best": { "variant": "borrowed", @@ -14407,6 +14387,26 @@ "level": "n/a" } } + }, + "sonic-rs": { + "best": { + "variant": "Value", + "us": 460.7, + "level": "n/a" + }, + "best_any": { + "variant": "Value", + "us": 460.7, + "level": "n/a" + }, + "best_reused": null, + "best_reused_any": null, + "variants": { + "Value": { + "us": 460.7, + "level": "n/a" + } + } } } } diff --git a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-clang.json b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-clang.json index fccea0a86..57092132c 100644 --- a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-clang.json +++ b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-clang.json @@ -4,35 +4,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 254.6, + "us": 250.5, "level": "full" }, "best_any": { "variant": "accept", - "us": 254.6, + "us": 250.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 297.6, + "us": 296.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 297.6, + "us": 296.1, "level": "full" }, "variants": { "accept": { - "us": 254.6, + "us": 250.5, "level": "full" }, "read (reused)": { - "us": 297.6, + "us": 296.1, "level": "full" }, "parse": { - "us": 304.7, + "us": 302.5, "level": "full" } } @@ -40,67 +40,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 658.2, + "us": 335.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 658.2, + "us": 335.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 658.2, + "us": 335.0, "level": "full" }, "parse": { - "us": 3532.9, + "us": 3159.9, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 380.3, + "variant": "read", + "us": 382.7, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 380.3, + "variant": "read", + "us": 382.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 383.8, + "us": 387.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 383.8, + "us": 387.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 334.0, - "level": "full" - }, - "insitu (copy)": { - "us": 380.3, - "level": "full" - }, - "read (raw numbers)": { - "us": 380.9, + "us": 338.0, "level": "full" }, "read": { - "us": 381.7, + "us": 382.7, + "level": "full" + }, + "insitu (copy)": { + "us": 383.1, + "level": "full" + }, + "read (raw numbers)": { + "us": 386.3, "level": "full" }, "read (reused allocator)": { - "us": 383.8, + "us": 387.4, "level": "full" } } @@ -108,31 +108,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 305.5, + "us": 302.4, "level": "full" }, "best_any": { "variant": "DOM", - "us": 305.5, + "us": 302.4, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 305.4, + "us": 305.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 305.4, + "us": 305.6, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 305.4, + "DOM": { + "us": 302.4, "level": "full" }, - "DOM": { - "us": 305.5, + "DOM (reused)": { + "us": 305.6, "level": "full" } } @@ -141,14 +141,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 447.9, + "us": 451.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 447.9, + "us": 451.1, "level": "no UTF-8" } } @@ -156,35 +156,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 587.9, + "us": 594.4, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 587.9, + "us": 594.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 587.9, - "level": "full" - }, - "generic (double, strict)": { - "us": 2348.7, + "us": 594.4, "level": "full" }, "generic (double)": { - "us": 2364.0, + "us": 2390.9, "level": "partial" }, + "generic (double, strict)": { + "us": 2429.5, + "level": "full" + }, "generic (strict)": { - "us": 3393.6, + "us": 3455.0, "level": "full" }, "generic": { - "us": 3447.1, + "us": 3486.7, "level": "partial" } } @@ -192,47 +192,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 570.7, + "us": 569.5, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 570.7, + "us": 569.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 575.6, + "us": 572.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 575.6, + "us": 572.1, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 570.7, - "level": "full" - }, - "SAX": { - "us": 573.8, + "us": 569.5, "level": "full" }, "SAX (reused)": { - "us": 575.6, + "us": 572.1, + "level": "full" + }, + "SAX": { + "us": 580.5, "level": "full" }, "parse (numbers: none)": { - "us": 1193.7, + "us": 1192.1, "level": "full" }, "parser (reused)": { - "us": 1208.6, + "us": 1202.1, "level": "full" }, "parse": { - "us": 1209.1, + "us": 1209.2, "level": "full" } } @@ -240,95 +240,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1801.0, + "us": 1798.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1169.4, + "us": 1173.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2148.9, + "us": 2210.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1460.4, + "us": 1455.7, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1131.5, + "us": 1128.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1169.4, + "us": 1173.1, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1219.0, + "us": 1221.7, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1258.1, + "us": 1256.9, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 1282.0, + "us": 1273.0, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1296.3, + "us": 1304.1, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1340.1, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 1458.9, + "us": 1329.0, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1460.4, + "us": 1455.7, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1474.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1755.5, + "us": 1750.6, "level": "full" }, "insitu (copy)": { - "us": 1801.0, + "us": 1798.1, "level": "full" }, "SAX (default precision)": { - "us": 1964.3, + "us": 1979.5, "level": "full" }, "SAX": { - "us": 2003.1, + "us": 2015.1, "level": "full" }, "SAX (raw numbers)": { - "us": 2032.9, - "level": "full" - }, - "SAX (string stream, default precision)": { - "us": 2103.7, + "us": 2062.6, "level": "full" }, "SAX (string stream)": { - "us": 2115.6, + "us": 2118.7, "level": "full" }, - "Document (reused allocator)": { - "us": 2148.9, + "SAX (string stream, default precision)": { + "us": 2132.8, "level": "full" }, "Document": { - "us": 2212.2, + "us": 2209.6, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2210.6, "level": "full" } } @@ -426,35 +426,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 511.6, + "us": 508.8, "level": "full" }, "best_any": { "variant": "accept", - "us": 511.6, + "us": 508.8, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 770.3, + "us": 768.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 770.3, + "us": 768.6, "level": "full" }, "variants": { "accept": { - "us": 511.6, + "us": 508.8, "level": "full" }, "parse": { - "us": 746.0, + "us": 767.8, "level": "full" }, "read (reused)": { - "us": 770.3, + "us": 768.6, "level": "full" } } @@ -462,67 +462,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1389.6, + "us": 711.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 1389.6, + "us": 711.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1389.6, + "us": 711.3, "level": "full" }, "parse": { - "us": 5340.5, + "us": 4582.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 897.1, + "variant": "read", + "us": 887.1, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 897.1, + "variant": "read", + "us": 887.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1037.1, + "us": 909.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1037.1, + "us": 909.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 811.2, - "level": "full" - }, - "insitu (copy)": { - "us": 897.1, - "level": "full" - }, - "read (raw numbers)": { - "us": 912.7, + "us": 782.2, "level": "full" }, "read": { - "us": 946.8, + "us": 887.1, + "level": "full" + }, + "insitu (copy)": { + "us": 891.9, + "level": "full" + }, + "read (raw numbers)": { + "us": 907.3, "level": "full" }, "read (reused allocator)": { - "us": 1037.1, + "us": 909.3, "level": "full" } } @@ -530,31 +530,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 732.0, + "us": 720.7, "level": "full" }, "best_any": { "variant": "DOM", - "us": 732.0, + "us": 720.7, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 724.6, + "us": 717.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 724.6, + "us": 717.7, "level": "full" }, "variants": { "DOM (reused)": { - "us": 724.6, + "us": 717.7, "level": "full" }, "DOM": { - "us": 732.0, + "us": 720.7, "level": "full" } } @@ -563,14 +563,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1032.1, + "us": 998.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1032.1, + "us": 998.3, "level": "no UTF-8" } } @@ -578,83 +578,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1430.8, + "us": 1230.3, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1430.8, + "us": 1230.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1430.8, + "us": 1230.3, "level": "full" }, "generic (double, strict)": { - "us": 3995.2, + "us": 3865.5, "level": "full" }, "generic (double)": { - "us": 4123.3, + "us": 3885.3, + "level": "partial" + }, + "generic": { + "us": 6668.3, "level": "partial" }, "generic (strict)": { - "us": 6920.5, + "us": 6671.0, "level": "full" - }, - "generic": { - "us": 7111.1, - "level": "partial" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 909.8, + "us": 903.3, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 909.8, + "us": 903.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 925.3, + "us": 923.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 925.3, + "us": 923.7, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 909.8, - "level": "full" - }, - "SAX (reused)": { - "us": 925.3, + "us": 903.3, "level": "full" }, "SAX": { - "us": 937.7, + "us": 919.0, + "level": "full" + }, + "SAX (reused)": { + "us": 923.7, "level": "full" }, "parse (numbers: none)": { - "us": 1612.0, - "level": "full" - }, - "parse": { - "us": 1708.6, + "us": 1543.7, "level": "full" }, "parser (reused)": { - "us": 1710.5, + "us": 1609.4, + "level": "full" + }, + "parse": { + "us": 1610.7, "level": "full" } } @@ -662,95 +662,95 @@ "RapidJSON": { "best": { "variant": "SAX (default precision)", - "us": 1970.9, + "us": 1944.1, "level": "full" }, "best_any": { "variant": "SAX (default precision) (no encoding check)", - "us": 1572.1, + "us": 1504.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2520.2, + "us": 2457.2, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 2040.7, + "us": 1941.7, "level": "no UTF-8" }, "variants": { "SAX (default precision) (no encoding check)": { - "us": 1572.1, + "us": 1504.0, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1698.0, + "us": 1652.6, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1704.9, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 1838.7, + "us": 1710.3, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1914.3, + "us": 1807.5, "level": "no UTF-8" }, - "insitu (copy) (no encoding check)": { - "us": 1948.9, - "level": "no UTF-8" - }, - "SAX (default precision)": { - "us": 1970.9, - "level": "full" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 1994.7, + "SAX (string stream) (no encoding check)": { + "us": 1808.0, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 2040.7, + "us": 1941.7, + "level": "no UTF-8" + }, + "SAX (default precision)": { + "us": 1944.1, + "level": "full" + }, + "insitu (copy) (no encoding check)": { + "us": 1967.1, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 1987.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2101.7, + "us": 1991.3, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 2202.8, + "us": 2146.2, "level": "full" }, "SAX": { - "us": 2224.7, - "level": "full" - }, - "SAX (string stream)": { - "us": 2251.2, + "us": 2186.6, "level": "full" }, "insitu (copy untimed)": { - "us": 2315.2, + "us": 2226.6, + "level": "full" + }, + "SAX (string stream)": { + "us": 2238.8, "level": "full" }, "insitu (copy)": { - "us": 2350.4, + "us": 2292.0, "level": "full" }, "SAX (raw numbers)": { - "us": 2494.1, + "us": 2398.9, "level": "full" }, "Document (reused allocator)": { - "us": 2520.2, + "us": 2457.2, "level": "full" }, "Document": { - "us": 2589.4, + "us": 2474.8, "level": "full" } } @@ -848,35 +848,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 1055.0, + "us": 1031.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 1055.0, + "us": 1031.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1448.8, + "us": 1369.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1448.8, + "us": 1369.8, "level": "full" }, "variants": { "accept": { - "us": 1055.0, + "us": 1031.7, "level": "full" }, "parse": { - "us": 1396.6, + "us": 1366.6, "level": "full" }, "read (reused)": { - "us": 1448.8, + "us": 1369.8, "level": "full" } } @@ -884,23 +884,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 4264.7, + "us": 2018.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 4264.7, + "us": 2018.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 4264.7, + "us": 2018.4, "level": "full" }, "parse": { - "us": 11823.5, + "us": 9825.6, "level": "full" } } @@ -908,43 +908,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2580.3, + "us": 2571.9, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2580.3, + "us": 2571.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 2887.6, + "us": 2802.9, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 2887.6, + "us": 2802.9, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2580.3, + "us": 2571.9, "level": "full" }, "insitu (copy untimed)": { - "us": 2662.2, + "us": 2645.8, "level": "full" }, "insitu (copy)": { - "us": 2844.5, + "us": 2799.5, "level": "full" }, "read (reused allocator)": { - "us": 2887.6, + "us": 2802.9, "level": "full" }, "read": { - "us": 2966.7, + "us": 2839.7, "level": "full" } } @@ -952,31 +952,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3205.9, + "us": 3201.9, "level": "full" }, "best_any": { "variant": "DOM", - "us": 3205.9, + "us": 3201.9, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 3292.9, + "us": 3243.9, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 3292.9, + "us": 3243.9, "level": "full" }, "variants": { "DOM": { - "us": 3205.9, + "us": 3201.9, "level": "full" }, "DOM (reused)": { - "us": 3292.9, + "us": 3243.9, "level": "full" } } @@ -985,14 +985,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3143.4, + "us": 3030.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3143.4, + "us": 3030.6, "level": "no UTF-8" } } @@ -1000,83 +1000,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1867.4, + "us": 2138.6, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1867.4, + "us": 2138.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1867.4, + "us": 2138.6, "level": "full" }, "generic (double, strict)": { - "us": 11751.4, + "us": 11472.1, "level": "full" }, "generic (double)": { - "us": 11793.7, + "us": 11778.3, + "level": "partial" + }, + "generic": { + "us": 22749.4, "level": "partial" }, "generic (strict)": { - "us": 22606.9, + "us": 23027.0, "level": "full" - }, - "generic": { - "us": 22721.5, - "level": "partial" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 1684.1, + "us": 1678.4, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 1684.1, + "us": 1678.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5933.1, + "us": 5876.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5933.1, + "us": 5876.8, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 1684.1, + "us": 1678.4, "level": "full" }, "parse (numbers: none)": { - "us": 2459.5, + "us": 2461.2, "level": "full" }, "SAX (reused)": { - "us": 5933.1, + "us": 5876.8, "level": "full" }, "SAX": { - "us": 5979.3, + "us": 6027.6, "level": "full" }, "parser (reused)": { - "us": 6972.4, + "us": 6874.4, "level": "full" }, "parse": { - "us": 7150.0, + "us": 6967.6, "level": "full" } } @@ -1084,95 +1084,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 4117.8, + "us": 4019.3, "level": "full" }, "best_any": { - "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 4082.6, - "level": "no UTF-8" + "variant": "SAX (string stream, default precision)", + "us": 4019.3, + "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12334.6, + "us": 12682.9, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 12334.6, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 12227.2, + "level": "no UTF-8" }, "variants": { - "SAX (string stream, default precision) (no encoding check)": { - "us": 4082.6, - "level": "no UTF-8" - }, "SAX (string stream, default precision)": { - "us": 4117.8, + "us": 4019.3, "level": "full" }, + "SAX (string stream, default precision) (no encoding check)": { + "us": 4045.4, + "level": "no UTF-8" + }, "SAX (default precision)": { - "us": 4594.0, + "us": 4605.7, "level": "full" }, "SAX (default precision) (no encoding check)": { - "us": 5086.9, + "us": 5131.2, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 10530.4, + "us": 10606.4, "level": "full" }, "SAX (string stream) (no encoding check)": { - "us": 10837.2, + "us": 10627.2, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 10690.5, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 10851.7, + "us": 10961.6, "level": "full" }, - "SAX (raw numbers) (no encoding check)": { - "us": 10964.8, - "level": "no UTF-8" - }, "SAX": { - "us": 11392.6, + "us": 11107.9, "level": "full" }, "insitu (copy untimed)": { - "us": 11510.7, + "us": 11355.9, "level": "full" }, - "insitu (copy)": { - "us": 11686.9, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 11721.3, - "level": "no UTF-8" - }, "SAX (no encoding check)": { - "us": 11785.8, + "us": 11439.4, "level": "no UTF-8" }, - "insitu (copy) (no encoding check)": { - "us": 11843.6, + "insitu (copy untimed) (no encoding check)": { + "us": 11490.4, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 12334.6, + "insitu (copy)": { + "us": 11662.6, "level": "full" }, + "insitu (copy) (no encoding check)": { + "us": 11797.8, + "level": "no UTF-8" + }, "Document (no encoding check)": { - "us": 12422.8, + "us": 12169.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 12718.7, + "us": 12227.2, "level": "no UTF-8" }, "Document": { - "us": 13030.0, + "us": 12443.3, + "level": "full" + }, + "Document (reused allocator)": { + "us": 12682.9, "level": "full" } } @@ -1270,35 +1270,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 34729.3, + "us": 34454.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 34729.3, + "us": 34454.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 42999.2, + "us": 41359.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 42999.2, + "us": 41359.1, "level": "full" }, "variants": { "accept": { - "us": 34729.3, + "us": 34454.1, "level": "full" }, "read (reused)": { - "us": 42999.2, + "us": 41359.1, "level": "full" }, "parse": { - "us": 76775.5, + "us": 77208.3, "level": "full" } } @@ -1306,23 +1306,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 71981.6, + "us": 39512.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 71981.6, + "us": 39512.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 71981.6, + "us": 39512.7, "level": "full" }, "parse": { - "us": 384444.5, + "us": 344781.4, "level": "full" } } @@ -1330,43 +1330,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 119584.8, + "us": 123640.2, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 119584.8, + "us": 123640.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 55858.2, + "us": 56593.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 55858.2, + "us": 56593.3, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 55858.2, + "us": 56593.3, "level": "full" }, "insitu (copy untimed)": { - "us": 83152.6, + "us": 81175.2, "level": "full" }, "read (raw numbers)": { - "us": 119584.8, - "level": "full" - }, - "read": { - "us": 121327.6, + "us": 123640.2, "level": "full" }, "insitu (copy)": { - "us": 122616.5, + "us": 123915.2, + "level": "full" + }, + "read": { + "us": 124852.8, "level": "full" } } @@ -1374,31 +1374,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 113452.3, + "us": 116858.9, "level": "full" }, "best_any": { "variant": "DOM", - "us": 113452.3, + "us": 116858.9, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 47118.4, + "us": 48549.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 47118.4, + "us": 48549.8, "level": "full" }, "variants": { "DOM (reused)": { - "us": 47118.4, + "us": 48549.8, "level": "full" }, "DOM": { - "us": 113452.3, + "us": 116858.9, "level": "full" } } @@ -1407,14 +1407,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 94884.1, + "us": 95822.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 94884.1, + "us": 95822.6, "level": "no UTF-8" } } @@ -1422,179 +1422,179 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 75570.8, + "us": 73235.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 75570.8, + "us": 73235.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 75570.8, - "level": "full" - }, - "generic (double, strict)": { - "us": 233320.9, + "us": 73235.2, "level": "full" }, "generic (double)": { - "us": 234246.5, + "us": 226553.5, "level": "partial" }, - "generic (strict)": { - "us": 368574.7, + "generic (double, strict)": { + "us": 236875.4, "level": "full" }, "generic": { - "us": 375564.1, + "us": 374692.8, "level": "partial" + }, + "generic (strict)": { + "us": 387547.8, + "level": "full" } } }, "Boost.JSON": { "best": { - "variant": "SAX (numbers: none)", - "us": 55497.5, + "variant": "SAX", + "us": 55086.7, "level": "full" }, "best_any": { - "variant": "SAX (numbers: none)", - "us": 55497.5, + "variant": "SAX", + "us": 55086.7, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 55237.4, + "us": 55153.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 55237.4, + "us": 55153.8, "level": "full" }, "variants": { + "SAX": { + "us": 55086.7, + "level": "full" + }, "SAX (reused)": { - "us": 55237.4, + "us": 55153.8, "level": "full" }, "SAX (numbers: none)": { - "us": 55497.5, - "level": "full" - }, - "SAX": { - "us": 55950.4, + "us": 55774.9, "level": "full" }, "parser (reused)": { - "us": 126349.5, + "us": 124571.6, "level": "full" }, "parse": { - "us": 182277.1, + "us": 184759.2, "level": "full" }, "parse (numbers: none)": { - "us": 184971.0, + "us": 187158.9, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "insitu (copy)", - "us": 234135.6, + "variant": "SAX (string stream, default precision)", + "us": 232683.8, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 132912.2, + "us": 128515.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 275235.6, + "us": 282152.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 182631.7, + "us": 183479.4, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 131204.4, + "us": 124959.0, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 132912.2, + "us": 128515.8, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 133946.0, - "level": "no UTF-8" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 155593.3, + "us": 130812.7, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 163058.5, + "us": 156044.3, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 156423.1, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 165538.6, + "us": 156922.5, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 167275.8, + "us": 165809.9, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 182631.7, + "us": 183479.4, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 192707.7, + "us": 187078.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 198914.8, - "level": "full" - }, - "insitu (copy)": { - "us": 234135.6, + "us": 199092.4, "level": "full" }, "SAX (string stream, default precision)": { - "us": 234723.4, + "us": 232683.8, "level": "full" }, "SAX (string stream)": { - "us": 240913.1, + "us": 237543.6, "level": "full" }, "SAX (raw numbers)": { - "us": 242693.5, - "level": "full" - }, - "SAX": { - "us": 247972.6, + "us": 240615.5, "level": "full" }, "SAX (default precision)": { - "us": 248281.3, + "us": 242653.9, "level": "full" }, - "Document (reused allocator)": { - "us": 275235.6, + "insitu (copy)": { + "us": 242760.2, + "level": "full" + }, + "SAX": { + "us": 244456.3, "level": "full" }, "Document": { - "us": 295063.9, + "us": 268496.2, + "level": "full" + }, + "Document (reused allocator)": { + "us": 282152.6, "level": "full" } } @@ -1728,23 +1728,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 3.5, + "us": 1.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 3.5, + "us": 1.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 3.5, + "us": 1.4, "level": "full" }, "parse": { - "us": 21.1, + "us": 17.8, "level": "full" } } @@ -1844,36 +1844,36 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 2.4, - "level": "full" - }, - "generic (double, strict)": { - "us": 9.0, + "us": 2.5, "level": "full" }, "generic (double)": { - "us": 9.4, + "us": 8.5, + "level": "partial" + }, + "generic (double, strict)": { + "us": 8.6, + "level": "full" + }, + "generic": { + "us": 14.5, "level": "partial" }, "generic (strict)": { "us": 14.6, "level": "full" - }, - "generic": { - "us": 15.5, - "level": "partial" } } }, @@ -1915,12 +1915,12 @@ "us": 5.5, "level": "full" }, - "parse (numbers: none)": { + "parse": { "us": 5.7, "level": "full" }, - "parse": { - "us": 5.9, + "parse (numbers: none)": { + "us": 5.7, "level": "full" } } @@ -1928,7 +1928,7 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 8.3, + "us": 8.1, "level": "full" }, "best_any": { @@ -1938,15 +1938,19 @@ }, "best_reused": { "variant": "Document (reused allocator)", - "us": 11.3, + "us": 11.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 7.4, + "us": 7.3, "level": "no UTF-8" }, "variants": { + "insitu (copy untimed) (no encoding check)": { + "us": 4.0, + "level": "no UTF-8" + }, "insitu (copy) (no encoding check)": { "us": 4.1, "level": "no UTF-8" @@ -1955,10 +1959,6 @@ "us": 4.1, "level": "no UTF-8" }, - "insitu (copy untimed) (no encoding check)": { - "us": 4.2, - "level": "no UTF-8" - }, "SAX (string stream) (no encoding check)": { "us": 4.2, "level": "no UTF-8" @@ -1976,19 +1976,19 @@ "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 7.4, + "us": 7.3, "level": "no UTF-8" }, "Document (no encoding check)": { "us": 7.8, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 8.2, + "insitu (copy)": { + "us": 8.1, "level": "full" }, - "insitu (copy)": { - "us": 8.3, + "insitu (copy untimed)": { + "us": 8.1, "level": "full" }, "SAX (string stream, default precision)": { @@ -1996,27 +1996,27 @@ "level": "full" }, "SAX (string stream)": { - "us": 9.9, + "us": 9.8, + "level": "full" + }, + "SAX (default precision)": { + "us": 10.2, "level": "full" }, "SAX (raw numbers)": { - "us": 10.5, + "us": 10.3, "level": "full" }, "SAX": { "us": 10.6, "level": "full" }, - "SAX (default precision)": { - "us": 10.6, - "level": "full" - }, "Document (reused allocator)": { - "us": 11.3, + "us": 11.4, "level": "full" }, "Document": { - "us": 11.8, + "us": 11.5, "level": "full" } } @@ -2114,35 +2114,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 214.6, + "us": 208.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 214.6, + "us": 208.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 252.4, + "us": 244.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 252.4, + "us": 244.9, "level": "full" }, "variants": { "accept": { - "us": 214.6, + "us": 208.4, "level": "full" }, "read (reused)": { - "us": 252.4, + "us": 244.9, "level": "full" }, "parse": { - "us": 256.8, + "us": 251.6, "level": "full" } } @@ -2150,23 +2150,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 580.2, + "us": 260.6, "level": "full" }, "best_any": { "variant": "accept", - "us": 580.2, + "us": 260.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 580.2, + "us": 260.6, "level": "full" }, "parse": { - "us": 3430.1, + "us": 3297.2, "level": "full" } } @@ -2174,43 +2174,43 @@ "yyjson": { "best": { "variant": "read", - "us": 318.3, + "us": 322.5, "level": "full" }, "best_any": { "variant": "read", - "us": 318.3, + "us": 322.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 318.1, + "us": 322.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 318.1, + "us": 322.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 282.6, - "level": "full" - }, - "read (reused allocator)": { - "us": 318.1, + "us": 288.5, "level": "full" }, "read": { - "us": 318.3, + "us": 322.5, "level": "full" }, "insitu (copy)": { - "us": 319.5, + "us": 322.5, + "level": "full" + }, + "read (reused allocator)": { + "us": 322.7, "level": "full" }, "read (raw numbers)": { - "us": 324.4, + "us": 334.7, "level": "full" } } @@ -2218,31 +2218,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 286.5, + "us": 287.8, "level": "full" }, "best_any": { "variant": "DOM", - "us": 286.5, + "us": 287.8, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 286.0, + "us": 288.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 286.0, + "us": 288.2, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 286.0, + "DOM": { + "us": 287.8, "level": "full" }, - "DOM": { - "us": 286.5, + "DOM (reused)": { + "us": 288.2, "level": "full" } } @@ -2251,14 +2251,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 332.0, + "us": 331.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 332.0, + "us": 331.5, "level": "no UTF-8" } } @@ -2266,83 +2266,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 458.7, + "us": 478.9, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 458.7, + "us": 478.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 458.7, - "level": "full" - }, - "generic (double, strict)": { - "us": 2147.0, + "us": 478.9, "level": "full" }, "generic (double)": { - "us": 2147.2, + "us": 2261.3, "level": "partial" }, - "generic (strict)": { - "us": 3124.9, + "generic (double, strict)": { + "us": 2301.5, "level": "full" }, "generic": { - "us": 3213.5, + "us": 3368.1, "level": "partial" + }, + "generic (strict)": { + "us": 3456.3, + "level": "full" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 421.4, + "us": 430.9, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 421.4, + "us": 430.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 431.3, + "us": 438.9, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 431.3, + "us": 438.9, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 421.4, - "level": "full" - }, - "SAX (reused)": { - "us": 431.3, + "us": 430.9, "level": "full" }, "SAX": { - "us": 434.3, + "us": 436.7, "level": "full" }, - "parse (numbers: none)": { - "us": 1096.1, - "level": "full" - }, - "parser (reused)": { - "us": 1108.5, + "SAX (reused)": { + "us": 438.9, "level": "full" }, "parse": { - "us": 1110.6, + "us": 1110.7, + "level": "full" + }, + "parse (numbers: none)": { + "us": 1118.3, + "level": "full" + }, + "parser (reused)": { + "us": 1160.0, "level": "full" } } @@ -2350,95 +2350,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1485.9, + "us": 1518.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 907.8, + "us": 931.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2057.8, + "us": 2243.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1372.7, + "us": 1388.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 865.1, + "us": 874.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 907.8, + "us": 931.1, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 959.2, + "us": 969.6, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 993.6, + "us": 997.9, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 1185.0, + "us": 1198.5, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1203.2, + "us": 1242.2, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1237.8, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1372.7, + "us": 1292.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1376.3, + "us": 1388.2, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 1453.9, - "level": "full" + "Document (reused allocator) (no encoding check)": { + "us": 1388.5, + "level": "no UTF-8" }, "insitu (copy)": { - "us": 1485.9, + "us": 1518.2, + "level": "full" + }, + "insitu (copy untimed)": { + "us": 1520.3, "level": "full" }, "SAX (string stream, default precision)": { - "us": 1791.1, + "us": 1845.3, "level": "full" }, "SAX (string stream)": { - "us": 1796.1, + "us": 1869.5, "level": "full" }, "SAX (default precision)": { - "us": 1863.4, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 1893.2, + "us": 1938.1, "level": "full" }, "SAX": { - "us": 1964.3, + "us": 1963.7, "level": "full" }, - "Document (reused allocator)": { - "us": 2057.8, + "SAX (raw numbers)": { + "us": 1971.2, "level": "full" }, "Document": { - "us": 2129.2, + "us": 2115.2, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2243.8, "level": "full" } } @@ -2536,35 +2536,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 315.2, + "us": 312.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 315.2, + "us": 312.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 493.8, + "us": 492.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 493.8, + "us": 492.4, "level": "full" }, "variants": { "accept": { - "us": 315.2, + "us": 312.4, "level": "full" }, "read (reused)": { - "us": 493.8, + "us": 492.4, "level": "full" }, "parse": { - "us": 495.0, + "us": 493.8, "level": "full" } } @@ -2572,67 +2572,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1089.0, + "us": 451.2, "level": "full" }, "best_any": { "variant": "accept", - "us": 1089.0, + "us": 451.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1089.0, + "us": 451.2, "level": "full" }, "parse": { - "us": 4805.5, + "us": 4196.2, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 483.6, + "variant": "read", + "us": 483.7, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 483.6, + "variant": "read", + "us": 483.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 483.1, + "us": 483.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 483.1, + "us": 483.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 448.5, + "us": 447.9, "level": "full" }, "read (reused allocator)": { - "us": 483.1, - "level": "full" - }, - "insitu (copy)": { "us": 483.6, "level": "full" }, "read": { - "us": 484.6, + "us": 483.7, + "level": "full" + }, + "insitu (copy)": { + "us": 484.5, "level": "full" }, "read (raw numbers)": { - "us": 516.0, + "us": 514.1, "level": "full" } } @@ -2640,31 +2640,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 564.9, + "us": 564.5, "level": "full" }, "best_any": { "variant": "DOM", - "us": 564.9, + "us": 564.5, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 565.0, + "us": 565.1, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 565.0, + "us": 565.1, "level": "full" }, "variants": { "DOM": { - "us": 564.9, + "us": 564.5, "level": "full" }, "DOM (reused)": { - "us": 565.0, + "us": 565.1, "level": "full" } } @@ -2673,14 +2673,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 678.2, + "us": 677.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 678.2, + "us": 677.0, "level": "no UTF-8" } } @@ -2688,83 +2688,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 651.9, + "us": 663.0, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 651.9, + "us": 663.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 651.9, + "us": 663.0, "level": "full" }, "generic (double, strict)": { - "us": 3245.6, + "us": 3232.2, "level": "full" }, "generic (double)": { - "us": 3335.2, + "us": 3306.4, + "level": "partial" + }, + "generic": { + "us": 5883.8, "level": "partial" }, "generic (strict)": { - "us": 5945.8, + "us": 5895.8, "level": "full" - }, - "generic": { - "us": 5996.0, - "level": "partial" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 526.2, + "us": 528.0, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 526.2, + "us": 528.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 579.6, + "us": 589.6, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 579.6, + "us": 589.6, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 526.2, + "us": 528.0, "level": "full" }, "SAX": { - "us": 578.9, + "us": 584.1, "level": "full" }, "SAX (reused)": { - "us": 579.6, + "us": 589.6, "level": "full" }, "parse (numbers: none)": { - "us": 1309.6, + "us": 1278.5, "level": "full" }, "parser (reused)": { - "us": 1384.3, + "us": 1330.5, "level": "full" }, "parse": { - "us": 1385.1, + "us": 1336.9, "level": "full" } } @@ -2772,95 +2772,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 1624.3, + "us": 1619.5, "level": "full" }, "best_any": { "variant": "SAX (default precision) (no encoding check)", - "us": 1192.3, + "us": 1187.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2161.2, + "us": 2210.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1679.9, + "us": 1690.2, "level": "no UTF-8" }, "variants": { "SAX (default precision) (no encoding check)": { - "us": 1192.3, + "us": 1187.1, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1200.0, + "us": 1194.3, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1307.1, + "us": 1310.7, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1366.1, + "us": 1364.4, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1409.5, + "us": 1408.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1439.7, + "us": 1443.8, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1595.7, + "us": 1589.0, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 1624.3, + "us": 1619.5, "level": "full" }, "SAX (default precision)": { - "us": 1631.5, + "us": 1626.9, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1679.9, + "us": 1690.2, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1707.7, + "us": 1710.5, "level": "full" }, "SAX (string stream)": { - "us": 1734.2, + "us": 1725.8, "level": "full" }, "insitu (copy)": { - "us": 1739.4, + "us": 1741.8, "level": "full" }, "Document (no encoding check)": { - "us": 1756.1, + "us": 1755.3, "level": "no UTF-8" }, "SAX": { - "us": 1877.9, + "us": 1942.3, "level": "full" }, "SAX (raw numbers)": { - "us": 2023.9, + "us": 2032.0, "level": "full" }, "Document (reused allocator)": { - "us": 2161.2, + "us": 2210.5, "level": "full" }, "Document": { - "us": 2253.5, + "us": 2234.0, "level": "full" } } @@ -2960,35 +2960,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 373.8, + "us": 366.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 373.8, + "us": 366.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 362.5, + "us": 361.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 362.5, + "us": 361.1, "level": "full" }, "variants": { "read (reused)": { - "us": 362.5, + "us": 361.1, "level": "full" }, "parse": { - "us": 373.8, + "us": 366.5, "level": "full" }, "parse_copy": { - "us": 411.2, + "us": 408.8, "level": "full" } } @@ -2996,23 +2996,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 728.1, + "us": 431.2, "level": "full" }, "best_any": { "variant": "sax", - "us": 728.1, + "us": 431.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 728.1, + "us": 431.2, "level": "full" }, "parse": { - "us": 3789.3, + "us": 3317.7, "level": "full" } } @@ -3020,39 +3020,39 @@ "yyjson": { "best": { "variant": "read", - "us": 436.8, + "us": 435.7, "level": "full" }, "best_any": { "variant": "read", - "us": 436.8, + "us": 435.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 442.1, + "us": 434.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 442.1, + "us": 434.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 399.0, - "level": "full" - }, - "read": { - "us": 436.8, - "level": "full" - }, - "insitu (copy)": { - "us": 437.2, + "us": 393.4, "level": "full" }, "read (reused allocator)": { - "us": 442.1, + "us": 434.7, + "level": "full" + }, + "read": { + "us": 435.7, + "level": "full" + }, + "insitu (copy)": { + "us": 436.7, "level": "full" } } @@ -3060,39 +3060,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 393.6, + "us": 391.2, "level": "full" }, "best_any": { "variant": "DOM", - "us": 393.6, + "us": 391.2, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 393.3, + "us": 393.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 393.3, + "us": 393.2, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 393.3, + "DOM": { + "us": 391.2, "level": "full" }, - "DOM": { - "us": 393.6, + "DOM (reused)": { + "us": 393.2, "level": "full" }, "On-Demand": { - "us": 570.3, + "us": 560.8, "level": "full" }, "On-Demand (reused)": { - "us": 576.4, + "us": 563.4, "level": "full" } } @@ -3101,14 +3101,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 501.7, + "us": 504.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 501.7, + "us": 504.0, "level": "no UTF-8" } } @@ -3116,35 +3116,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2427.0, + "us": 2373.7, "level": "full" }, "best_any": { "variant": "generic (double, strict)", - "us": 2427.0, + "us": 2373.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double, strict)": { - "us": 2427.0, + "us": 2373.7, "level": "full" }, "generic (double)": { - "us": 2434.3, + "us": 2461.7, "level": "partial" }, "lazy_json": { - "us": 2612.7, + "us": 2578.8, "level": "partial" }, "generic (strict)": { - "us": 3441.4, + "us": 3442.7, "level": "full" }, "generic": { - "us": 3466.7, + "us": 3458.1, "level": "partial" } }, @@ -3155,39 +3155,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 579.5, + "us": 580.1, "level": "full" }, "best_any": { "variant": "SAX", - "us": 579.5, + "us": 580.1, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 580.1, + "us": 577.2, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 580.1, + "us": 577.2, "level": "full" }, "variants": { - "SAX": { - "us": 579.5, + "SAX (reused)": { + "us": 577.2, "level": "full" }, - "SAX (reused)": { + "SAX": { "us": 580.1, "level": "full" }, "parser (reused)": { - "us": 1270.0, + "us": 1268.9, "level": "full" }, "parse": { - "us": 1278.1, + "us": 1275.9, "level": "full" } } @@ -3195,71 +3195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1856.0, + "us": 1846.5, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1228.2, + "us": 1229.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2217.8, + "us": 2254.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1519.6, + "us": 1519.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1186.9, + "us": 1188.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1228.2, + "us": 1229.2, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1264.6, + "us": 1261.6, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1351.4, + "us": 1357.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1519.6, + "us": 1519.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1522.2, + "us": 1530.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1816.0, + "us": 1805.7, "level": "full" }, "insitu (copy)": { - "us": 1856.0, + "us": 1846.5, "level": "full" }, "SAX": { - "us": 2118.4, + "us": 2059.3, "level": "full" }, "SAX (string stream)": { - "us": 2144.0, - "level": "full" - }, - "Document (reused allocator)": { - "us": 2217.8, + "us": 2107.4, "level": "full" }, "Document": { - "us": 2282.9, + "us": 2220.4, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2254.8, "level": "full" } } @@ -3353,35 +3353,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 923.4, + "us": 940.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 923.4, + "us": 940.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 922.6, + "us": 946.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 922.6, + "us": 946.4, "level": "full" }, "variants": { - "read (reused)": { - "us": 922.6, + "parse": { + "us": 940.6, "level": "full" }, - "parse": { - "us": 923.4, + "read (reused)": { + "us": 946.4, "level": "full" }, "parse_copy": { - "us": 1039.8, + "us": 1057.6, "level": "full" } } @@ -3389,63 +3389,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1393.4, + "us": 914.1, "level": "full" }, "best_any": { "variant": "sax", - "us": 1393.4, + "us": 914.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1393.4, + "us": 914.1, "level": "full" }, "parse": { - "us": 5481.8, + "us": 4801.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 1064.0, + "variant": "insitu (copy)", + "us": 1047.5, "level": "full" }, "best_any": { - "variant": "read", - "us": 1064.0, + "variant": "insitu (copy)", + "us": 1047.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1100.8, + "us": 1053.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1100.8, + "us": 1053.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 945.5, - "level": "full" - }, - "read": { - "us": 1064.0, + "us": 939.3, "level": "full" }, "insitu (copy)": { - "us": 1064.9, + "us": 1047.5, + "level": "full" + }, + "read": { + "us": 1050.4, "level": "full" }, "read (reused allocator)": { - "us": 1100.8, + "us": 1053.0, "level": "full" } } @@ -3453,39 +3453,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 977.4, + "us": 969.3, "level": "full" }, "best_any": { "variant": "DOM", - "us": 977.4, + "us": 969.3, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 993.2, + "us": 968.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 993.2, + "us": 968.6, "level": "full" }, "variants": { - "DOM": { - "us": 977.4, + "DOM (reused)": { + "us": 968.6, "level": "full" }, - "DOM (reused)": { - "us": 993.2, + "DOM": { + "us": 969.3, "level": "full" }, "On-Demand (reused)": { - "us": 1353.7, + "us": 1341.2, "level": "full" }, "On-Demand": { - "us": 1379.7, + "us": 1367.2, "level": "full" } } @@ -3494,14 +3494,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1175.4, + "us": 1176.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1175.4, + "us": 1176.4, "level": "no UTF-8" } } @@ -3509,35 +3509,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 3972.0, + "us": 3982.3, "level": "full" }, "best_any": { "variant": "generic (double, strict)", - "us": 3972.0, + "us": 3982.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double, strict)": { - "us": 3972.0, + "us": 3982.3, "level": "full" }, "generic (double)": { - "us": 4088.2, + "us": 4023.2, "level": "partial" }, "generic (strict)": { - "us": 6710.1, + "us": 6710.3, "level": "full" }, "generic": { - "us": 6937.1, + "us": 6737.7, "level": "partial" }, "lazy_json": { - "us": 11160.5, + "us": 10763.9, "level": "partial" } }, @@ -3548,39 +3548,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 928.1, + "us": 927.6, "level": "full" }, "best_any": { "variant": "SAX", - "us": 928.1, + "us": 927.6, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 927.6, + "us": 920.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 927.6, + "us": 920.8, "level": "full" }, "variants": { "SAX (reused)": { - "us": 927.6, + "us": 920.8, "level": "full" }, "SAX": { - "us": 928.1, + "us": 927.6, "level": "full" }, "parser (reused)": { - "us": 1828.4, + "us": 1766.2, "level": "full" }, "parse": { - "us": 1834.9, + "us": 1783.4, "level": "full" } } @@ -3588,71 +3588,71 @@ "RapidJSON": { "best": { "variant": "SAX", - "us": 2223.6, + "us": 2176.1, "level": "full" }, "best_any": { "variant": "SAX (no encoding check)", - "us": 1765.4, + "us": 1760.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2557.4, + "us": 2586.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 2109.9, + "us": 2110.0, "level": "no UTF-8" }, "variants": { "SAX (no encoding check)": { - "us": 1765.4, + "us": 1760.7, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1809.8, + "us": 1799.9, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1980.0, + "us": 1966.1, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2101.3, + "us": 2084.6, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 2109.9, + "us": 2110.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2170.8, + "us": 2164.8, "level": "no UTF-8" }, "SAX": { - "us": 2223.6, + "us": 2176.1, "level": "full" }, "SAX (string stream)": { - "us": 2274.4, + "us": 2284.9, "level": "full" }, "insitu (copy untimed)": { - "us": 2353.5, + "us": 2339.2, "level": "full" }, "insitu (copy)": { - "us": 2464.8, + "us": 2456.2, "level": "full" }, "Document (reused allocator)": { - "us": 2557.4, + "us": 2586.8, "level": "full" }, "Document": { - "us": 2661.3, + "us": 2614.8, "level": "full" } } @@ -3746,35 +3746,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 3845.5, + "us": 3679.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 3845.5, + "us": 3679.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 3733.9, + "us": 3677.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 3733.9, + "us": 3677.4, "level": "full" }, "variants": { "read (reused)": { - "us": 3733.9, + "us": 3677.4, "level": "full" }, "parse": { - "us": 3845.5, + "us": 3679.5, "level": "full" }, "parse_copy": { - "us": 3883.8, + "us": 3830.9, "level": "full" } } @@ -3782,63 +3782,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 5428.5, + "us": 3823.6, "level": "full" }, "best_any": { "variant": "sax", - "us": 5428.5, + "us": 3823.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 5428.5, + "us": 3823.6, "level": "full" }, "parse": { - "us": 12869.4, + "us": 10213.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 3581.5, + "variant": "read", + "us": 3453.6, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 3581.5, + "variant": "read", + "us": 3453.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 3646.2, + "us": 3461.8, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 3646.2, + "us": 3461.8, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 3444.8, - "level": "full" - }, - "insitu (copy)": { - "us": 3581.5, + "us": 3304.7, "level": "full" }, "read": { - "us": 3630.5, + "us": 3453.6, + "level": "full" + }, + "insitu (copy)": { + "us": 3458.6, "level": "full" }, "read (reused allocator)": { - "us": 3646.2, + "us": 3461.8, "level": "full" } } @@ -3846,39 +3846,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 4117.0, + "us": 4120.6, "level": "full" }, "best_any": { "variant": "DOM", - "us": 4117.0, + "us": 4120.6, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 4295.7, + "us": 4145.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 4295.7, + "us": 4145.7, "level": "full" }, "variants": { "DOM": { - "us": 4117.0, + "us": 4120.6, "level": "full" }, "DOM (reused)": { - "us": 4295.7, + "us": 4145.7, "level": "full" }, "On-Demand": { - "us": 5515.9, + "us": 5489.6, "level": "full" }, "On-Demand (reused)": { - "us": 5686.6, + "us": 5513.0, "level": "full" } } @@ -3887,14 +3887,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3753.5, + "us": 3700.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3753.5, + "us": 3700.9, "level": "no UTF-8" } } @@ -3902,36 +3902,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 12165.0, + "us": 11929.7, "level": "full" }, "best_any": { - "variant": "generic (double, strict)", - "us": 12165.0, - "level": "full" + "variant": "generic (double)", + "us": 11920.6, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double, strict)": { - "us": 12165.0, - "level": "full" - }, "generic (double)": { - "us": 12375.6, + "us": 11920.6, "level": "partial" }, + "generic (double, strict)": { + "us": 11929.7, + "level": "full" + }, "lazy_json": { - "us": 17851.2, + "us": 17658.0, + "level": "partial" + }, + "generic": { + "us": 22805.9, "level": "partial" }, "generic (strict)": { - "us": 23299.6, + "us": 23201.9, "level": "full" - }, - "generic": { - "us": 23438.5, - "level": "partial" } }, "excluded": { @@ -3941,39 +3941,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 5809.0, + "us": 5714.8, "level": "full" }, "best_any": { "variant": "SAX", - "us": 5809.0, + "us": 5714.8, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5919.6, + "us": 5720.3, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5919.6, + "us": 5720.3, "level": "full" }, "variants": { "SAX": { - "us": 5809.0, + "us": 5714.8, "level": "full" }, "SAX (reused)": { - "us": 5919.6, + "us": 5720.3, "level": "full" }, "parser (reused)": { - "us": 7635.2, + "us": 7475.5, "level": "full" }, "parse": { - "us": 7713.0, + "us": 7529.0, "level": "full" } } @@ -3981,72 +3981,72 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 10718.9, + "us": 10561.3, "level": "full" }, "best_any": { "variant": "SAX (string stream)", - "us": 10718.9, + "us": 10561.3, "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 13161.2, + "us": 13259.2, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 13161.2, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 12842.7, + "level": "no UTF-8" }, "variants": { "SAX (string stream)": { - "us": 10718.9, + "us": 10561.3, "level": "full" }, "SAX (string stream) (no encoding check)": { - "us": 11003.7, + "us": 10795.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 12044.9, - "level": "full" - }, - "insitu (copy)": { - "us": 12119.8, + "us": 11851.8, "level": "full" }, "SAX (no encoding check)": { - "us": 12357.3, + "us": 11995.4, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 12046.8, + "level": "full" + }, + "SAX": { + "us": 12069.9, + "level": "full" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 12230.6, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 12392.9, + "us": 12242.3, "level": "no UTF-8" }, - "insitu (copy untimed) (no encoding check)": { - "us": 12530.2, - "level": "no UTF-8" - }, - "SAX": { - "us": 12678.3, - "level": "full" - }, "Document (no encoding check)": { - "us": 12865.6, + "us": 12723.6, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 13161.2, - "level": "full" - }, - "Document": { - "us": 13275.5, - "level": "full" - }, "Document (reused allocator) (no encoding check)": { - "us": 13352.6, + "us": 12842.7, "level": "no UTF-8" + }, + "Document": { + "us": 12917.3, + "level": "full" + }, + "Document (reused allocator)": { + "us": 13259.2, + "level": "full" } } }, @@ -4139,35 +4139,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 85286.5, + "us": 86966.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 85286.5, + "us": 86966.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 51480.2, + "us": 51262.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 51480.2, + "us": 51262.6, "level": "full" }, "variants": { "read (reused)": { - "us": 51480.2, + "us": 51262.6, "level": "full" }, "parse": { - "us": 85286.5, + "us": 86966.1, "level": "full" }, "parse_copy": { - "us": 124656.8, + "us": 130925.9, "level": "full" } } @@ -4175,23 +4175,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 89480.6, + "us": 60439.4, "level": "full" }, "best_any": { "variant": "sax", - "us": 89480.6, + "us": 60439.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 89480.6, + "us": 60439.4, "level": "full" }, "parse": { - "us": 420541.7, + "us": 393313.0, "level": "full" } } @@ -4199,39 +4199,39 @@ "yyjson": { "best": { "variant": "read", - "us": 126975.3, + "us": 133576.7, "level": "full" }, "best_any": { "variant": "read", - "us": 126975.3, + "us": 133576.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 64457.4, + "us": 66199.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 64457.4, + "us": 66199.6, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 64457.4, + "us": 66199.6, "level": "full" }, "insitu (copy untimed)": { - "us": 88446.7, + "us": 91385.9, "level": "full" }, "read": { - "us": 126975.3, + "us": 133576.7, "level": "full" }, "insitu (copy)": { - "us": 129469.4, + "us": 138747.2, "level": "full" } } @@ -4239,39 +4239,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 114602.0, + "us": 116855.2, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 114602.0, + "us": 116855.2, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 61224.9, + "us": 62527.4, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 61224.9, + "us": 62527.4, "level": "full" }, "variants": { "DOM (reused)": { - "us": 61224.9, + "us": 62527.4, "level": "full" }, "On-Demand (reused)": { - "us": 75561.0, + "us": 73991.5, "level": "full" }, "On-Demand": { - "us": 114602.0, + "us": 116855.2, "level": "full" }, "DOM": { - "us": 124594.3, + "us": 131953.2, "level": "full" } } @@ -4280,14 +4280,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 104583.2, + "us": 104508.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 104583.2, + "us": 104508.8, "level": "no UTF-8" } } @@ -4295,36 +4295,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 253385.3, + "us": 261203.5, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 196582.3, + "us": 198035.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 196582.3, + "us": 198035.8, "level": "partial" }, "generic (double)": { - "us": 249603.8, + "us": 255032.2, "level": "partial" }, "generic (double, strict)": { - "us": 253385.3, - "level": "full" - }, - "generic (strict)": { - "us": 378838.3, + "us": 261203.5, "level": "full" }, "generic": { - "us": 387793.9, + "us": 389821.5, "level": "partial" + }, + "generic (strict)": { + "us": 405114.1, + "level": "full" } }, "excluded": { @@ -4334,39 +4334,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 56773.6, + "us": 55874.0, "level": "full" }, "best_any": { "variant": "SAX", - "us": 56773.6, + "us": 55874.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 56745.3, + "us": 57345.9, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 56745.3, + "us": 57345.9, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 56745.3, + "SAX": { + "us": 55874.0, "level": "full" }, - "SAX": { - "us": 56773.6, + "SAX (reused)": { + "us": 57345.9, "level": "full" }, "parser (reused)": { - "us": 141833.0, + "us": 144354.6, "level": "full" }, "parse": { - "us": 198163.8, + "us": 205120.0, "level": "full" } } @@ -4374,71 +4374,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 232713.0, + "us": 239499.4, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 135944.9, + "us": 131510.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 284279.1, + "us": 301471.9, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 194569.9, + "us": 204440.2, "level": "no UTF-8" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 135944.9, + "us": 131510.0, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 136902.3, + "us": 137183.0, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 165525.2, + "us": 167699.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 174160.1, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 194569.9, + "us": 185343.1, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 200917.9, + "us": 198720.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 206810.9, + "us": 204362.4, "level": "full" }, + "Document (reused allocator) (no encoding check)": { + "us": 204440.2, + "level": "no UTF-8" + }, "SAX (string stream)": { - "us": 232713.0, + "us": 239499.4, "level": "full" }, "insitu (copy)": { - "us": 250121.8, + "us": 250181.0, "level": "full" }, "SAX": { - "us": 262578.3, - "level": "full" - }, - "Document (reused allocator)": { - "us": 284279.1, + "us": 253592.7, "level": "full" }, "Document": { - "us": 303888.8, + "us": 300415.9, + "level": "full" + }, + "Document (reused allocator)": { + "us": 301471.9, "level": "full" } } @@ -4568,23 +4568,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 3.9, + "us": 2.1, "level": "full" }, "best_any": { "variant": "sax", - "us": 3.9, + "us": 2.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 3.9, + "us": 2.1, "level": "full" }, "parse": { - "us": 20.8, + "us": 18.3, "level": "full" } } @@ -4611,6 +4611,10 @@ "level": "full" }, "variants": { + "insitu (copy untimed)": { + "us": 1.8, + "level": "full" + }, "read (reused allocator)": { "us": 1.8, "level": "full" @@ -4622,10 +4626,6 @@ "insitu (copy)": { "us": 1.9, "level": "full" - }, - "insitu (copy untimed)": { - "us": 1.9, - "level": "full" } } }, @@ -4660,11 +4660,11 @@ "level": "full" }, "On-Demand (reused)": { - "us": 2.8, + "us": 2.7, "level": "full" }, "On-Demand": { - "us": 3.1, + "us": 3.0, "level": "full" } } @@ -4688,7 +4688,7 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 9.2, + "us": 9.0, "level": "full" }, "best_any": { @@ -4704,20 +4704,20 @@ "level": "partial" }, "generic (double)": { - "us": 9.1, + "us": 8.8, "level": "partial" }, "generic (double, strict)": { - "us": 9.2, + "us": 9.0, "level": "full" }, + "generic": { + "us": 14.8, + "level": "partial" + }, "generic (strict)": { "us": 14.8, "level": "full" - }, - "generic": { - "us": 14.9, - "level": "partial" } }, "excluded": { @@ -4727,47 +4727,47 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 2.4, + "us": 2.3, "level": "full" }, "best_any": { "variant": "SAX", - "us": 2.4, + "us": 2.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 2.4, + "us": 2.3, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 2.4, + "us": 2.3, "level": "full" }, "variants": { "SAX": { - "us": 2.4, + "us": 2.3, "level": "full" }, "SAX (reused)": { - "us": 2.4, - "level": "full" - }, - "parser (reused)": { - "us": 5.7, + "us": 2.3, "level": "full" }, "parse": { "us": 6.0, "level": "full" + }, + "parser (reused)": { + "us": 6.0, + "level": "full" } } }, "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 8.5, + "us": 8.4, "level": "full" }, "best_any": { @@ -4777,7 +4777,7 @@ }, "best_reused": { "variant": "Document (reused allocator)", - "us": 11.5, + "us": 11.8, "level": "full" }, "best_reused_any": { @@ -4799,7 +4799,7 @@ "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 6.8, + "us": 6.7, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { @@ -4807,11 +4807,11 @@ "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 8.2, + "us": 8.1, "level": "no UTF-8" }, "insitu (copy)": { - "us": 8.5, + "us": 8.4, "level": "full" }, "insitu (copy untimed)": { @@ -4819,19 +4819,19 @@ "level": "full" }, "SAX (string stream)": { - "us": 9.9, + "us": 9.8, "level": "full" }, "SAX": { - "us": 11.0, + "us": 10.5, "level": "full" }, "Document (reused allocator)": { - "us": 11.5, + "us": 11.8, "level": "full" }, "Document": { - "us": 12.4, + "us": 11.9, "level": "full" } } @@ -4925,35 +4925,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 327.7, + "us": 316.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 327.7, + "us": 316.8, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 319.6, + "us": 313.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 319.6, + "us": 313.4, "level": "full" }, "variants": { "read (reused)": { - "us": 319.6, + "us": 313.4, "level": "full" }, "parse": { - "us": 327.7, + "us": 316.8, "level": "full" }, "parse_copy": { - "us": 352.4, + "us": 347.1, "level": "full" } } @@ -4961,23 +4961,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 707.5, + "us": 362.9, "level": "full" }, "best_any": { "variant": "sax", - "us": 707.5, + "us": 362.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 707.5, + "us": 362.9, "level": "full" }, "parse": { - "us": 3767.1, + "us": 3290.1, "level": "full" } } @@ -4985,39 +4985,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 375.4, + "us": 371.6, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 375.4, + "us": 371.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 376.6, + "us": 372.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 376.6, + "us": 372.2, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 348.6, + "us": 342.9, "level": "full" }, "insitu (copy)": { - "us": 375.4, + "us": 371.6, "level": "full" }, "read (reused allocator)": { - "us": 376.6, + "us": 372.2, "level": "full" }, "read": { - "us": 379.3, + "us": 372.5, "level": "full" } } @@ -5025,39 +5025,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 377.6, + "us": 376.6, "level": "full" }, "best_any": { "variant": "DOM", - "us": 377.6, + "us": 376.6, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 399.6, + "us": 373.3, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 399.6, + "us": 373.3, "level": "full" }, "variants": { - "DOM": { - "us": 377.6, + "DOM (reused)": { + "us": 373.3, "level": "full" }, - "DOM (reused)": { - "us": 399.6, + "DOM": { + "us": 376.6, "level": "full" }, "On-Demand": { - "us": 549.4, + "us": 541.8, "level": "full" }, "On-Demand (reused)": { - "us": 552.8, + "us": 543.2, "level": "full" } } @@ -5066,14 +5066,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 387.2, + "us": 385.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 387.2, + "us": 385.8, "level": "no UTF-8" } } @@ -5081,36 +5081,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2232.9, + "us": 2189.9, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 1685.1, + "us": 1615.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 1685.1, + "us": 1615.9, "level": "partial" }, "generic (double, strict)": { - "us": 2232.9, + "us": 2189.9, "level": "full" }, "generic (double)": { - "us": 2344.0, - "level": "partial" - }, - "generic": { - "us": 3361.2, + "us": 2214.4, "level": "partial" }, "generic (strict)": { - "us": 3365.5, + "us": 3226.7, "level": "full" + }, + "generic": { + "us": 3360.5, + "level": "partial" } }, "excluded": { @@ -5120,39 +5120,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 453.3, + "us": 438.2, "level": "full" }, "best_any": { "variant": "SAX", - "us": 453.3, + "us": 438.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 445.3, + "us": 438.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 445.3, + "us": 438.8, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 445.3, - "level": "full" - }, "SAX": { - "us": 453.3, + "us": 438.2, "level": "full" }, - "parse": { - "us": 1206.1, + "SAX (reused)": { + "us": 438.8, "level": "full" }, "parser (reused)": { - "us": 1211.2, + "us": 1166.7, + "level": "full" + }, + "parse": { + "us": 1171.8, "level": "full" } } @@ -5160,71 +5160,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1547.7, + "us": 1531.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1004.7, + "us": 965.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2123.4, + "us": 2178.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1443.3, + "us": 1445.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 972.1, + "us": 936.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1004.7, + "us": 965.0, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1019.8, + "us": 1015.9, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1267.8, + "us": 1243.4, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1443.3, + "us": 1445.3, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1497.0, + "us": 1446.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1514.1, + "us": 1499.5, "level": "full" }, "insitu (copy)": { - "us": 1547.7, + "us": 1531.1, "level": "full" }, "SAX (string stream)": { - "us": 1835.9, + "us": 1801.4, "level": "full" }, "SAX": { - "us": 2089.5, - "level": "full" - }, - "Document (reused allocator)": { - "us": 2123.4, + "us": 1977.5, "level": "full" }, "Document": { - "us": 2279.6, + "us": 2118.5, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2178.7, "level": "full" } } @@ -5318,35 +5318,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 706.0, + "us": 664.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 706.0, + "us": 664.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 673.8, + "us": 664.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 673.8, + "us": 664.2, "level": "full" }, "variants": { "read (reused)": { - "us": 673.8, + "us": 664.2, "level": "full" }, "parse": { - "us": 706.0, + "us": 664.3, "level": "full" }, "parse_copy": { - "us": 706.2, + "us": 697.7, "level": "full" } } @@ -5354,23 +5354,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1223.1, + "us": 637.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 1223.1, + "us": 637.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1223.1, + "us": 637.3, "level": "full" }, "parse": { - "us": 5621.7, + "us": 4453.4, "level": "full" } } @@ -5378,39 +5378,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 656.3, + "us": 640.5, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 656.3, + "us": 640.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 651.0, + "us": 640.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 651.0, + "us": 640.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 626.0, + "us": 609.3, "level": "full" }, "read (reused allocator)": { - "us": 651.0, + "us": 640.0, "level": "full" }, "insitu (copy)": { - "us": 656.3, + "us": 640.5, "level": "full" }, "read": { - "us": 656.5, + "us": 642.7, "level": "full" } } @@ -5418,39 +5418,39 @@ "simdjson": { "best": { "variant": "DOM", - "us": 837.8, + "us": 807.8, "level": "full" }, "best_any": { "variant": "DOM", - "us": 837.8, + "us": 807.8, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 822.5, + "us": 808.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 822.5, + "us": 808.2, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 822.5, + "DOM": { + "us": 807.8, "level": "full" }, - "DOM": { - "us": 837.8, + "DOM (reused)": { + "us": 808.2, "level": "full" }, "On-Demand (reused)": { - "us": 1223.7, + "us": 1185.0, "level": "full" }, "On-Demand": { - "us": 1326.5, + "us": 1211.7, "level": "full" } } @@ -5459,14 +5459,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 884.6, + "us": 849.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 884.6, + "us": 849.1, "level": "no UTF-8" } } @@ -5474,36 +5474,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 3626.3, + "us": 3420.7, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 3589.2, + "us": 3346.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 3589.2, + "us": 3346.8, "level": "partial" }, "generic (double, strict)": { - "us": 3626.3, + "us": 3420.7, "level": "full" }, "generic (double)": { - "us": 3886.0, + "us": 3479.3, + "level": "partial" + }, + "generic": { + "us": 6070.0, "level": "partial" }, "generic (strict)": { - "us": 6570.8, + "us": 6071.5, "level": "full" - }, - "generic": { - "us": 6730.6, - "level": "partial" } }, "excluded": { @@ -5513,39 +5513,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 644.7, + "us": 608.0, "level": "full" }, "best_any": { "variant": "SAX", - "us": 644.7, + "us": 608.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 617.2, + "us": 608.2, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 617.2, + "us": 608.2, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 617.2, - "level": "full" - }, "SAX": { - "us": 644.7, + "us": 608.0, "level": "full" }, - "parse": { - "us": 1637.3, + "SAX (reused)": { + "us": 608.2, "level": "full" }, "parser (reused)": { - "us": 1664.1, + "us": 1506.3, + "level": "full" + }, + "parse": { + "us": 1507.8, "level": "full" } } @@ -5553,71 +5553,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 1926.7, + "us": 1753.2, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 1460.8, + "us": 1355.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2584.1, + "us": 2373.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 2008.5, + "us": 1865.6, "level": "no UTF-8" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 1460.8, + "us": 1355.5, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1535.3, + "us": 1468.2, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1645.3, + "us": 1581.1, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1707.3, + "us": 1616.2, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 1896.2, - "level": "full" - }, "SAX (string stream)": { - "us": 1926.7, + "us": 1753.2, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 2008.5, - "level": "no UTF-8" - }, - "insitu (copy)": { - "us": 2047.0, - "level": "full" - }, - "Document (no encoding check)": { - "us": 2051.3, + "us": 1865.6, "level": "no UTF-8" }, "SAX": { - "us": 2063.8, + "us": 1875.5, "level": "full" }, + "insitu (copy untimed)": { + "us": 1881.1, + "level": "full" + }, + "insitu (copy)": { + "us": 1914.0, + "level": "full" + }, + "Document (no encoding check)": { + "us": 1926.7, + "level": "no UTF-8" + }, "Document (reused allocator)": { - "us": 2584.1, + "us": 2373.7, "level": "full" }, "Document": { - "us": 2605.6, + "us": 2393.8, "level": "full" } } @@ -5712,64 +5712,64 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "parse", - "us": 320.1, + "variant": "structs (from_json)", + "us": 316.4, "level": "full" }, "best_any": { - "variant": "parse", - "us": 320.1, + "variant": "structs (from_json)", + "us": 316.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 315.5, + "us": 307.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 315.5, + "us": 307.8, "level": "full" }, "variants": { "read (reused)": { - "us": 315.5, - "level": "full" - }, - "parse": { - "us": 320.1, + "us": 307.8, "level": "full" }, "structs (from_json)": { - "us": 325.3, + "us": 316.4, + "level": "full" + }, + "parse": { + "us": 316.8, "level": "full" }, "parse_copy": { - "us": 357.5, + "us": 355.0, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 3601.5, + "variant": "parse", + "us": 3180.7, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 3601.5, + "variant": "parse", + "us": 3180.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 3601.5, + "parse": { + "us": 3180.7, "level": "full" }, - "parse": { - "us": 3660.0, + "structs (from_json)": { + "us": 3196.3, "level": "full" } } @@ -5777,43 +5777,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 386.1, + "us": 385.5, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 386.1, + "us": 385.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 390.7, + "us": 389.9, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 390.7, + "us": 389.9, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 351.1, + "us": 347.3, "level": "full" }, "insitu (copy)": { - "us": 386.1, - "level": "full" - }, - "read (reused allocator)": { - "us": 390.7, + "us": 385.5, "level": "full" }, "read": { - "us": 391.9, + "us": 387.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 389.9, "level": "full" }, "read (raw numbers)": { - "us": 394.2, + "us": 391.8, "level": "full" } } @@ -5821,47 +5821,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 316.4, + "us": 317.6, "level": "full" }, "best_any": { - "variant": "On-Demand structs", - "us": 181.2, + "variant": "On-Demand", + "us": 182.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 316.4, + "us": 315.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 179.5, + "us": 179.3, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 179.5, - "level": "partial" - }, - "On-Demand structs": { - "us": 181.2, + "us": 179.3, "level": "partial" }, "On-Demand": { - "us": 181.9, + "us": 182.4, + "level": "partial" + }, + "On-Demand structs": { + "us": 182.8, "level": "partial" }, "On-Demand (key selectors)": { - "us": 184.7, + "us": 184.9, "level": "partial" }, - "DOM": { - "us": 316.4, + "DOM (reused)": { + "us": 315.1, "level": "full" }, - "DOM (reused)": { - "us": 316.4, + "DOM": { + "us": 317.6, "level": "full" } } @@ -5870,14 +5870,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 460.1, + "us": 454.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 460.1, + "us": 454.0, "level": "no UTF-8" } } @@ -5885,43 +5885,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 544.5, + "us": 542.0, "level": "full" }, "best_any": { "variant": "structs", - "us": 345.3, + "us": 337.2, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 345.3, + "us": 337.2, "level": "partial" }, "structs (validate_skipped)": { - "us": 544.5, + "us": 542.0, "level": "full" }, "lazy_json": { - "us": 759.2, + "us": 763.7, "level": "partial" }, "generic (double, strict)": { - "us": 2447.2, + "us": 2441.3, "level": "full" }, "generic (double)": { - "us": 2509.0, + "us": 2487.9, "level": "partial" }, "generic (strict)": { - "us": 3518.9, + "us": 3470.8, "level": "full" }, "generic": { - "us": 3575.9, + "us": 3475.8, "level": "partial" } }, @@ -5932,35 +5932,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 775.6, + "us": 760.5, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 775.6, + "us": 760.5, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1249.0, + "us": 1228.4, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1249.0, + "us": 1228.4, "level": "full" }, "variants": { "parse_into structs": { - "us": 775.6, - "level": "full" - }, - "parse": { - "us": 1240.9, + "us": 760.5, "level": "full" }, "parser (reused)": { - "us": 1249.0, + "us": 1228.4, + "level": "full" + }, + "parse": { + "us": 1237.4, "level": "full" } }, @@ -5971,71 +5971,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1811.8, + "us": 1806.4, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1179.9, + "us": 1183.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2256.3, + "us": 2211.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1470.8, + "us": 1465.0, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1143.7, + "us": 1141.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1179.9, + "us": 1183.7, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1415.7, + "us": 1405.3, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1470.8, + "us": 1465.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1471.1, + "us": 1482.2, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1551.6, + "us": 1500.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1762.5, + "us": 1766.0, "level": "full" }, "insitu (copy)": { - "us": 1811.8, + "us": 1806.4, "level": "full" }, "Document": { - "us": 2217.3, - "level": "full" - }, - "Document (reused allocator)": { - "us": 2256.3, + "us": 2162.4, "level": "full" }, "Document (raw numbers)": { - "us": 2277.9, + "us": 2198.5, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2211.6, "level": "full" }, "Document (string stream)": { - "us": 2350.6, + "us": 2258.0, "level": "full" } } @@ -6121,39 +6121,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 759.2, + "us": 783.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 759.2, + "us": 783.2, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 757.6, + "us": 791.0, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 757.6, + "us": 791.0, "level": "full" }, "variants": { - "read (reused)": { - "us": 757.6, + "parse": { + "us": 783.2, "level": "full" }, - "parse": { - "us": 759.2, + "read (reused)": { + "us": 791.0, "level": "full" }, "structs (from_json)": { - "us": 805.3, + "us": 836.0, "level": "full" }, "parse_copy": { - "us": 875.4, + "us": 901.5, "level": "full" } } @@ -6161,23 +6161,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 5124.4, + "us": 4583.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 5124.4, + "us": 4583.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 5124.4, + "us": 4583.1, "level": "full" }, "structs (from_json)": { - "us": 5196.7, + "us": 4681.4, "level": "full" } } @@ -6185,43 +6185,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 897.9, + "us": 891.4, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 897.9, + "us": 891.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 939.6, + "us": 936.1, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 939.6, + "us": 936.1, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 787.8, + "us": 788.6, "level": "full" }, "insitu (copy)": { - "us": 897.9, + "us": 891.4, "level": "full" }, "read": { - "us": 900.4, + "us": 894.3, "level": "full" }, "read (raw numbers)": { - "us": 924.4, + "us": 914.8, "level": "full" }, "read (reused allocator)": { - "us": 939.6, + "us": 936.1, "level": "full" } } @@ -6229,47 +6229,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 730.9, + "us": 728.1, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 495.0, + "us": 494.0, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 736.0, + "us": 727.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 495.1, + "us": 493.4, "level": "partial" }, "variants": { - "On-Demand": { - "us": 495.0, + "On-Demand (reused)": { + "us": 493.4, "level": "partial" }, - "On-Demand (reused)": { - "us": 495.1, + "On-Demand": { + "us": 494.0, "level": "partial" }, "On-Demand (key selectors)": { - "us": 506.5, + "us": 505.0, "level": "partial" }, "On-Demand structs": { - "us": 547.5, + "us": 546.0, "level": "partial" }, - "DOM": { - "us": 730.9, + "DOM (reused)": { + "us": 727.7, "level": "full" }, - "DOM (reused)": { - "us": 736.0, + "DOM": { + "us": 728.1, "level": "full" } } @@ -6278,14 +6278,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1011.3, + "us": 1015.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1011.3, + "us": 1015.0, "level": "no UTF-8" } } @@ -6293,43 +6293,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 1368.2, + "us": 1369.0, "level": "full" }, "best_any": { "variant": "structs", - "us": 418.6, + "us": 416.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 418.6, + "us": 416.4, "level": "partial" }, "structs (validate_skipped)": { - "us": 1368.2, + "us": 1369.0, "level": "full" }, "generic (double, strict)": { - "us": 3883.8, + "us": 3944.1, "level": "full" }, "generic (double)": { - "us": 4072.2, + "us": 4044.8, "level": "partial" }, "lazy_json": { - "us": 6484.7, + "us": 6635.1, "level": "partial" }, "generic (strict)": { - "us": 6649.8, + "us": 6644.8, "level": "full" }, "generic": { - "us": 6662.2, + "us": 6719.9, "level": "partial" } }, @@ -6340,35 +6340,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1388.9, + "us": 1388.3, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1388.9, + "us": 1388.3, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1664.3, + "us": 1611.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1664.3, + "us": 1611.2, "level": "full" }, "variants": { "parse_into structs": { - "us": 1388.9, + "us": 1388.3, "level": "full" }, "parser (reused)": { - "us": 1664.3, + "us": 1611.2, "level": "full" }, "parse": { - "us": 1670.4, + "us": 1626.2, "level": "full" } }, @@ -6379,71 +6379,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2346.6, + "us": 2303.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1929.7, + "us": 1929.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2396.9, + "us": 2504.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1946.7, + "us": 1949.8, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1817.2, + "us": 1820.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1929.7, + "us": 1929.3, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1946.7, + "us": 1949.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2012.4, + "us": 2006.1, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 2072.7, + "us": 2079.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2197.7, + "us": 2211.0, "level": "full" }, "Document (raw numbers) (no encoding check)": { - "us": 2224.6, + "us": 2246.0, "level": "no UTF-8" }, "insitu (copy)": { - "us": 2346.6, - "level": "full" - }, - "Document (reused allocator)": { - "us": 2396.9, + "us": 2303.2, "level": "full" }, "Document": { - "us": 2500.5, + "us": 2454.7, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2504.6, "level": "full" }, "Document (string stream)": { - "us": 2576.9, + "us": 2552.9, "level": "full" }, "Document (raw numbers)": { - "us": 2668.0, + "us": 2675.5, "level": "full" } } @@ -6529,39 +6529,39 @@ "nlohmann json_document": { "best": { "variant": "structs (from_json)", - "us": 1390.2, + "us": 1368.1, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 1390.2, + "us": 1368.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1401.6, + "us": 1367.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1401.6, + "us": 1367.3, "level": "full" }, "variants": { + "read (reused)": { + "us": 1367.3, + "level": "full" + }, "structs (from_json)": { - "us": 1390.2, + "us": 1368.1, "level": "full" }, "parse": { - "us": 1392.0, - "level": "full" - }, - "read (reused)": { - "us": 1401.6, + "us": 1369.6, "level": "full" }, "parse_copy": { - "us": 1581.9, + "us": 1521.8, "level": "full" } } @@ -6569,23 +6569,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 11831.4, + "us": 9599.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 11831.4, + "us": 9599.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 11831.4, + "us": 9599.0, "level": "full" }, "structs (from_json)": { - "us": 11838.9, + "us": 9649.6, "level": "full" } } @@ -6593,43 +6593,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2632.1, + "us": 2571.6, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2632.1, + "us": 2571.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 2867.8, + "us": 2804.9, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 2867.8, + "us": 2804.9, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2632.1, + "us": 2571.6, "level": "full" }, "insitu (copy untimed)": { - "us": 2696.2, - "level": "full" - }, - "insitu (copy)": { - "us": 2822.4, - "level": "full" - }, - "read (reused allocator)": { - "us": 2867.8, + "us": 2647.1, "level": "full" }, "read": { - "us": 2896.9, + "us": 2800.1, + "level": "full" + }, + "insitu (copy)": { + "us": 2801.5, + "level": "full" + }, + "read (reused allocator)": { + "us": 2804.9, "level": "full" } } @@ -6637,47 +6637,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3262.1, + "us": 3213.3, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 701.6, + "us": 692.1, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 3285.8, + "us": 3200.3, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 697.1, + "us": 691.4, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 697.1, + "us": 691.4, "level": "partial" }, "On-Demand": { - "us": 701.6, + "us": 692.1, "level": "partial" }, "On-Demand (key selectors)": { - "us": 706.8, + "us": 698.4, "level": "partial" }, "On-Demand structs": { - "us": 922.0, + "us": 920.3, "level": "partial" }, - "DOM": { - "us": 3262.1, + "DOM (reused)": { + "us": 3200.3, "level": "full" }, - "DOM (reused)": { - "us": 3285.8, + "DOM": { + "us": 3213.3, "level": "full" } } @@ -6686,14 +6686,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3204.4, + "us": 3025.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3204.4, + "us": 3025.4, "level": "no UTF-8" } } @@ -6701,43 +6701,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 1924.3, + "us": 1846.0, "level": "full" }, "best_any": { "variant": "structs", - "us": 444.3, + "us": 446.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 444.3, + "us": 446.6, "level": "partial" }, "structs (validate_skipped)": { - "us": 1924.3, + "us": 1846.0, "level": "full" }, "lazy_json": { - "us": 3153.5, - "level": "partial" - }, - "generic (double)": { - "us": 11439.2, + "us": 2819.2, "level": "partial" }, "generic (double, strict)": { - "us": 11612.6, + "us": 11600.3, "level": "full" }, + "generic (double)": { + "us": 11621.6, + "level": "partial" + }, "generic": { - "us": 22534.9, + "us": 22309.6, "level": "partial" }, "generic (strict)": { - "us": 23212.8, + "us": 22779.9, "level": "full" } }, @@ -6748,35 +6748,35 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 7120.7, + "us": 7026.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 7120.7, + "us": 7026.4, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 7135.6, + "us": 6913.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 7135.6, + "us": 6913.8, "level": "full" }, "variants": { - "parse": { - "us": 7120.7, + "parser (reused)": { + "us": 6913.8, "level": "full" }, - "parser (reused)": { - "us": 7135.6, + "parse": { + "us": 7026.4, "level": "full" }, "parse_into structs": { - "us": 8436.7, + "us": 8100.4, "level": "full" } }, @@ -6787,71 +6787,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 11742.5, + "us": 11394.7, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 11742.5, - "level": "full" + "variant": "Document (string stream) (no encoding check)", + "us": 11261.1, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12468.0, + "us": 12626.6, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 12468.0, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 12113.2, + "level": "no UTF-8" }, "variants": { + "Document (string stream) (no encoding check)": { + "us": 11261.1, + "level": "no UTF-8" + }, "insitu (copy untimed)": { - "us": 11464.4, + "us": 11268.0, "level": "full" }, "insitu (copy)": { - "us": 11742.5, - "level": "full" - }, - "Document (string stream) (no encoding check)": { - "us": 11829.8, - "level": "no UTF-8" - }, - "Document (string stream)": { - "us": 11889.3, + "us": 11394.7, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 11911.6, + "us": 11470.8, "level": "no UTF-8" }, + "Document (string stream)": { + "us": 11527.4, + "level": "full" + }, "insitu (copy) (no encoding check)": { - "us": 12131.9, - "level": "no UTF-8" - }, - "Document (raw numbers)": { - "us": 12257.6, - "level": "full" - }, - "Document (reused allocator)": { - "us": 12468.0, - "level": "full" - }, - "Document (reused allocator) (no encoding check)": { - "us": 12626.5, + "us": 11610.3, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 12671.5, + "us": 12036.5, + "level": "no UTF-8" + }, + "Document (raw numbers)": { + "us": 12068.7, + "level": "full" + }, + "Document (reused allocator) (no encoding check)": { + "us": 12113.2, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 12686.6, + "us": 12215.6, "level": "no UTF-8" }, "Document": { - "us": 13442.9, + "us": 12406.3, + "level": "full" + }, + "Document (reused allocator)": { + "us": 12626.6, "level": "full" } } @@ -6937,39 +6937,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 88082.8, + "us": 91736.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 88082.8, + "us": 91736.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 51072.8, + "us": 52931.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 51072.8, + "us": 52931.9, "level": "full" }, "variants": { "read (reused)": { - "us": 51072.8, + "us": 52931.9, "level": "full" }, "parse": { - "us": 88082.8, + "us": 91736.1, "level": "full" }, "structs (from_json)": { - "us": 107710.0, + "us": 107075.1, "level": "full" }, "parse_copy": { - "us": 129542.0, + "us": 135011.0, "level": "full" } } @@ -6977,67 +6977,67 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 444210.1, + "us": 405734.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 444210.1, + "us": 405734.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 444210.1, + "us": 405734.1, "level": "full" }, "structs (from_json)": { - "us": 450085.9, + "us": 411168.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "read (raw numbers)", - "us": 131454.5, + "variant": "insitu (copy)", + "us": 135813.3, "level": "full" }, "best_any": { - "variant": "read (raw numbers)", - "us": 131454.5, + "variant": "insitu (copy)", + "us": 135813.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 67645.6, + "us": 67036.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 67645.6, + "us": 67036.3, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 67645.6, + "us": 67036.3, "level": "full" }, "insitu (copy untimed)": { - "us": 92550.7, - "level": "full" - }, - "read (raw numbers)": { - "us": 131454.5, - "level": "full" - }, - "read": { - "us": 132061.4, + "us": 96071.6, "level": "full" }, "insitu (copy)": { - "us": 132476.1, + "us": 135813.3, + "level": "full" + }, + "read": { + "us": 136880.5, + "level": "full" + }, + "read (raw numbers)": { + "us": 137067.2, "level": "full" } } @@ -7045,47 +7045,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 120808.3, + "us": 129985.9, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 48823.0, + "us": 50659.9, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 57830.4, + "us": 59459.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 29167.2, + "us": 29063.0, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 29167.2, + "us": 29063.0, "level": "partial" }, "On-Demand": { - "us": 48823.0, + "us": 50659.9, "level": "partial" }, "On-Demand (key selectors)": { - "us": 50711.7, + "us": 55675.7, "level": "partial" }, "DOM (reused)": { - "us": 57830.4, + "us": 59459.1, "level": "full" }, "On-Demand structs": { - "us": 72459.0, + "us": 74195.7, "level": "partial" }, "DOM": { - "us": 120808.3, + "us": 129985.9, "level": "full" } } @@ -7094,14 +7094,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 108244.8, + "us": 112621.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 108244.8, + "us": 112621.3, "level": "no UTF-8" } } @@ -7109,43 +7109,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 85744.7, + "us": 83906.6, "level": "full" }, "best_any": { "variant": "structs", - "us": 66442.3, + "us": 68454.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 66442.3, + "us": 68454.9, "level": "partial" }, "structs (validate_skipped)": { - "us": 85744.7, + "us": 83906.6, "level": "full" }, "lazy_json": { - "us": 103198.3, + "us": 105331.7, "level": "partial" }, "generic (double)": { - "us": 253056.8, + "us": 253033.8, "level": "partial" }, "generic (double, strict)": { - "us": 253538.1, + "us": 264858.6, "level": "full" }, "generic (strict)": { - "us": 395135.3, + "us": 398474.1, "level": "full" }, "generic": { - "us": 400960.2, + "us": 406251.0, "level": "partial" } }, @@ -7156,35 +7156,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 97680.7, + "us": 97007.8, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 97680.7, + "us": 97007.8, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 140679.2, + "us": 143742.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 140679.2, + "us": 143742.2, "level": "full" }, "variants": { "parse_into structs": { - "us": 97680.7, + "us": 97007.8, "level": "full" }, "parser (reused)": { - "us": 140679.2, + "us": 143742.2, "level": "full" }, "parse": { - "us": 199764.5, + "us": 205161.9, "level": "full" } }, @@ -7195,71 +7195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 246084.7, + "us": 257761.5, "level": "full" }, "best_any": { "variant": "Document (string stream) (no encoding check)", - "us": 173298.8, + "us": 171715.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 287964.9, + "us": 294804.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 198838.2, + "us": 198039.9, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 142851.9, + "us": 140002.6, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 173298.8, + "us": 171715.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 185761.4, - "level": "no UTF-8" - }, - "Document (raw numbers) (no encoding check)": { - "us": 198545.7, + "us": 184178.8, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 198838.2, + "us": 198039.9, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 203308.5, + "us": 199059.1, + "level": "no UTF-8" + }, + "Document (raw numbers) (no encoding check)": { + "us": 212724.7, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 209290.0, + "us": 213815.0, "level": "full" }, "insitu (copy)": { - "us": 246084.7, + "us": 257761.5, "level": "full" }, "Document (string stream)": { - "us": 267647.7, - "level": "full" - }, - "Document (reused allocator)": { - "us": 287964.9, - "level": "full" - }, - "Document (raw numbers)": { - "us": 290589.9, + "us": 264286.3, "level": "full" }, "Document": { - "us": 302957.4, + "us": 286913.1, + "level": "full" + }, + "Document (reused allocator)": { + "us": 294804.6, + "level": "full" + }, + "Document (raw numbers)": { + "us": 295932.7, "level": "full" } } @@ -7384,24 +7384,24 @@ }, "nlohmann json": { "best": { - "variant": "parse", - "us": 20.2, + "variant": "structs (from_json)", + "us": 18.9, "level": "full" }, "best_any": { - "variant": "parse", - "us": 20.2, + "variant": "structs (from_json)", + "us": 18.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "parse": { - "us": 20.2, + "structs (from_json)": { + "us": 18.9, "level": "full" }, - "structs (from_json)": { - "us": 20.2, + "parse": { + "us": 19.2, "level": "full" } } @@ -7428,10 +7428,6 @@ "level": "full" }, "variants": { - "insitu (copy untimed)": { - "us": 1.6, - "level": "full" - }, "read (reused allocator)": { "us": 1.6, "level": "full" @@ -7444,16 +7440,20 @@ "us": 1.7, "level": "full" }, - "read (raw numbers)": { + "insitu (copy untimed)": { "us": 1.7, "level": "full" + }, + "read (raw numbers)": { + "us": 1.8, + "level": "full" } } }, "simdjson": { "best": { "variant": "DOM", - "us": 1.9, + "us": 2.0, "level": "full" }, "best_any": { @@ -7480,12 +7480,12 @@ "us": 1.1, "level": "partial" }, - "On-Demand": { + "On-Demand structs": { "us": 1.2, "level": "partial" }, - "On-Demand structs": { - "us": 1.2, + "On-Demand": { + "us": 1.3, "level": "partial" }, "DOM (reused)": { @@ -7493,7 +7493,7 @@ "level": "full" }, "DOM": { - "us": 1.9, + "us": 2.0, "level": "full" } } @@ -7502,14 +7502,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1.9, + "us": 2.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1.9, + "us": 2.0, "level": "no UTF-8" } } @@ -7533,7 +7533,7 @@ "level": "partial" }, "lazy_json": { - "us": 2.0, + "us": 2.1, "level": "partial" }, "structs (validate_skipped)": { @@ -7541,20 +7541,20 @@ "level": "full" }, "generic (double)": { - "us": 9.9, + "us": 10.2, "level": "partial" }, "generic (double, strict)": { - "us": 10.0, - "level": "full" - }, - "generic (strict)": { - "us": 15.6, + "us": 10.6, "level": "full" }, "generic": { - "us": 15.7, + "us": 16.4, "level": "partial" + }, + "generic (strict)": { + "us": 16.5, + "level": "full" } }, "excluded": { @@ -7574,12 +7574,12 @@ }, "best_reused": { "variant": "parser (reused)", - "us": 5.6, + "us": 5.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 5.6, + "us": 5.9, "level": "full" }, "variants": { @@ -7587,12 +7587,12 @@ "us": 3.2, "level": "full" }, - "parser (reused)": { - "us": 5.6, + "parse": { + "us": 5.9, "level": "full" }, - "parse": { - "us": 5.8, + "parser (reused)": { + "us": 5.9, "level": "full" } }, @@ -7603,17 +7603,17 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 8.3, + "us": 8.7, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 4.2, + "us": 4.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 11.4, + "us": 11.8, "level": "full" }, "best_reused_any": { @@ -7627,47 +7627,47 @@ "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 4.2, + "us": 4.3, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 5.2, + "us": 5.4, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { "us": 7.5, "level": "no UTF-8" }, + "insitu (copy untimed)": { + "us": 8.4, + "level": "full" + }, "Document (no encoding check)": { - "us": 7.8, + "us": 8.4, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 8.0, + "us": 8.6, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 8.2, - "level": "full" - }, "insitu (copy)": { - "us": 8.3, + "us": 8.7, "level": "full" }, "Document (string stream)": { - "us": 10.7, - "level": "full" - }, - "Document (reused allocator)": { - "us": 11.4, - "level": "full" - }, - "Document": { - "us": 11.7, + "us": 10.9, "level": "full" }, "Document (raw numbers)": { - "us": 11.7, + "us": 11.8, + "level": "full" + }, + "Document (reused allocator)": { + "us": 11.8, + "level": "full" + }, + "Document": { + "us": 12.3, "level": "full" } } @@ -7753,39 +7753,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 273.2, + "us": 266.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 273.2, + "us": 266.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 267.0, + "us": 258.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 267.0, + "us": 258.8, "level": "full" }, "variants": { "read (reused)": { - "us": 267.0, + "us": 258.8, "level": "full" }, "parse": { - "us": 273.2, + "us": 266.3, "level": "full" }, "structs (from_json)": { - "us": 275.8, + "us": 268.7, "level": "full" }, "parse_copy": { - "us": 302.1, + "us": 296.5, "level": "full" } } @@ -7793,23 +7793,23 @@ "nlohmann json": { "best": { "variant": "structs (from_json)", - "us": 3454.7, + "us": 3075.2, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 3454.7, + "us": 3075.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "structs (from_json)": { - "us": 3454.7, + "us": 3075.2, "level": "full" }, "parse": { - "us": 3460.3, + "us": 3081.6, "level": "full" } } @@ -7817,39 +7817,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 326.0, + "us": 326.2, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 326.0, + "us": 326.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 328.4, + "us": 329.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 328.4, + "us": 329.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 297.0, + "us": 295.9, "level": "full" }, "insitu (copy)": { - "us": 326.0, - "level": "full" - }, - "read": { - "us": 326.6, + "us": 326.2, "level": "full" }, "read (reused allocator)": { - "us": 328.4, + "us": 329.3, + "level": "full" + }, + "read": { + "us": 329.6, "level": "full" }, "read (raw numbers)": { @@ -7861,47 +7861,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 298.2, + "us": 300.1, "level": "full" }, "best_any": { - "variant": "On-Demand structs", - "us": 159.7, + "variant": "On-Demand", + "us": 163.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 297.4, + "us": 299.0, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 158.3, + "us": 160.6, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 158.3, - "level": "partial" - }, - "On-Demand structs": { - "us": 159.7, + "us": 160.6, "level": "partial" }, "On-Demand": { - "us": 161.6, + "us": 163.4, "level": "partial" }, "On-Demand (key selectors)": { - "us": 163.8, + "us": 164.2, + "level": "partial" + }, + "On-Demand structs": { + "us": 166.6, "level": "partial" }, "DOM (reused)": { - "us": 297.4, + "us": 299.0, "level": "full" }, "DOM": { - "us": 298.2, + "us": 300.1, "level": "full" } } @@ -7910,14 +7910,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 344.7, + "us": 341.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 344.7, + "us": 341.6, "level": "no UTF-8" } } @@ -7925,43 +7925,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 439.8, + "us": 438.1, "level": "full" }, "best_any": { "variant": "structs", - "us": 295.1, + "us": 296.2, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 295.1, + "us": 296.2, "level": "partial" }, "lazy_json": { - "us": 416.1, + "us": 418.8, "level": "partial" }, "structs (validate_skipped)": { - "us": 439.8, - "level": "full" - }, - "generic (double, strict)": { - "us": 2279.6, + "us": 438.1, "level": "full" }, "generic (double)": { - "us": 2285.3, + "us": 2272.7, "level": "partial" }, + "generic (double, strict)": { + "us": 2272.9, + "level": "full" + }, "generic (strict)": { - "us": 3278.9, + "us": 3296.1, "level": "full" }, "generic": { - "us": 3326.3, + "us": 3325.2, "level": "partial" } }, @@ -7972,35 +7972,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 661.7, + "us": 668.2, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 661.7, + "us": 668.2, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1136.2, + "us": 1127.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1136.2, + "us": 1127.2, "level": "full" }, "variants": { "parse_into structs": { - "us": 661.7, + "us": 668.2, "level": "full" }, "parser (reused)": { - "us": 1136.2, + "us": 1127.2, "level": "full" }, "parse": { - "us": 1137.0, + "us": 1136.0, "level": "full" } }, @@ -8011,71 +8011,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1496.0, + "us": 1486.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 914.6, + "us": 920.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2068.6, + "us": 2131.9, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1382.9, + "us": 1386.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 885.5, + "us": 890.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 914.6, + "us": 920.3, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1176.6, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1382.9, + "us": 1178.7, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1386.4, + "us": 1384.1, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1386.3, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1410.1, + "us": 1411.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1466.8, + "us": 1464.0, "level": "full" }, "insitu (copy)": { - "us": 1496.0, + "us": 1486.2, "level": "full" }, "Document (string stream)": { - "us": 1950.3, - "level": "full" - }, - "Document (reused allocator)": { - "us": 2068.6, + "us": 1937.4, "level": "full" }, "Document (raw numbers)": { - "us": 2095.3, + "us": 2086.1, "level": "full" }, "Document": { - "us": 2147.9, + "us": 2089.4, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2131.9, "level": "full" } } @@ -8161,39 +8161,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 535.4, + "us": 508.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 535.4, + "us": 508.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 509.8, + "us": 508.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 509.8, + "us": 508.3, "level": "full" }, "variants": { "read (reused)": { - "us": 509.8, + "us": 508.3, "level": "full" }, "parse": { - "us": 535.4, - "level": "full" - }, - "structs (from_json)": { - "us": 560.2, + "us": 508.4, "level": "full" }, "parse_copy": { - "us": 568.3, + "us": 539.3, + "level": "full" + }, + "structs (from_json)": { + "us": 553.3, "level": "full" } } @@ -8201,67 +8201,67 @@ "nlohmann json": { "best": { "variant": "structs (from_json)", - "us": 5307.8, + "us": 4253.9, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 5307.8, + "us": 4253.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "structs (from_json)": { - "us": 5307.8, + "us": 4253.9, "level": "full" }, "parse": { - "us": 5338.5, + "us": 4296.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 490.7, + "variant": "read", + "us": 490.5, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 490.7, + "variant": "read", + "us": 490.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 503.2, + "us": 491.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 503.2, + "us": 491.2, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 457.9, - "level": "full" - }, - "insitu (copy)": { - "us": 490.7, + "us": 459.2, "level": "full" }, "read": { - "us": 500.9, + "us": 490.5, + "level": "full" + }, + "insitu (copy)": { + "us": 490.9, "level": "full" }, "read (reused allocator)": { - "us": 503.2, + "us": 491.2, "level": "full" }, "read (raw numbers)": { - "us": 538.7, + "us": 528.7, "level": "full" } } @@ -8269,47 +8269,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 577.7, + "us": 574.8, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 323.1, + "us": 323.2, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 603.0, + "us": 573.9, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 322.7, + "us": 322.1, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 322.7, + "us": 322.1, "level": "partial" }, "On-Demand": { - "us": 323.1, + "us": 323.2, "level": "partial" }, "On-Demand (key selectors)": { - "us": 346.5, + "us": 335.6, "level": "partial" }, "On-Demand structs": { - "us": 376.1, + "us": 377.4, "level": "partial" }, - "DOM": { - "us": 577.7, + "DOM (reused)": { + "us": 573.9, "level": "full" }, - "DOM (reused)": { - "us": 603.0, + "DOM": { + "us": 574.8, "level": "full" } } @@ -8318,14 +8318,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 719.5, + "us": 688.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 719.5, + "us": 688.7, "level": "no UTF-8" } } @@ -8333,44 +8333,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 731.3, + "us": 702.5, "level": "full" }, "best_any": { "variant": "structs", - "us": 211.7, + "us": 211.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 211.7, + "us": 211.5, "level": "partial" }, "structs (validate_skipped)": { - "us": 731.3, + "us": 702.5, "level": "full" }, "lazy_json": { - "us": 1509.2, + "us": 1413.9, + "level": "partial" + }, + "generic (double)": { + "us": 3367.4, "level": "partial" }, "generic (double, strict)": { - "us": 3714.3, + "us": 3381.5, "level": "full" }, - "generic (double)": { - "us": 3756.2, - "level": "partial" - }, - "generic": { - "us": 6712.3, - "level": "partial" - }, "generic (strict)": { - "us": 6747.3, + "us": 6022.3, "level": "full" + }, + "generic": { + "us": 6080.5, + "level": "partial" } }, "excluded": { @@ -8380,35 +8380,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1225.7, + "us": 1143.9, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1225.7, + "us": 1143.9, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1449.9, + "us": 1350.4, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1449.9, + "us": 1350.4, "level": "full" }, "variants": { "parse_into structs": { - "us": 1225.7, + "us": 1143.9, "level": "full" }, "parser (reused)": { - "us": 1449.9, + "us": 1350.4, "level": "full" }, "parse": { - "us": 1487.9, + "us": 1352.4, "level": "full" } }, @@ -8419,71 +8419,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1899.4, + "us": 1752.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1555.3, + "us": 1456.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2422.6, + "us": 2215.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1792.5, + "us": 1704.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1506.2, + "us": 1424.2, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1555.3, + "us": 1456.7, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1766.8, + "us": 1610.5, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1792.5, + "us": 1704.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1868.0, + "us": 1719.1, "level": "full" }, "insitu (copy)": { - "us": 1899.4, + "us": 1752.1, "level": "full" }, "Document (no encoding check)": { - "us": 1920.0, - "level": "no UTF-8" - }, - "Document (raw numbers) (no encoding check)": { - "us": 2206.0, + "us": 1767.8, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2212.9, + "us": 2028.5, "level": "full" }, + "Document (raw numbers) (no encoding check)": { + "us": 2033.2, + "level": "no UTF-8" + }, "Document (reused allocator)": { - "us": 2422.6, + "us": 2215.5, "level": "full" }, "Document": { - "us": 2468.0, + "us": 2234.0, "level": "full" }, "Document (raw numbers)": { - "us": 2693.0, + "us": 2436.6, "level": "full" } } @@ -8570,24 +8570,24 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "editable", - "us": 526.0, + "variant": "editable (source numbers)", + "us": 517.9, "level": "full" }, "best_any": { - "variant": "editable", - "us": 526.0, + "variant": "editable (source numbers)", + "us": 517.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "editable": { - "us": 526.0, + "editable (source numbers)": { + "us": 517.9, "level": "full" }, - "editable (source numbers)": { - "us": 565.7, + "editable": { + "us": 518.8, "level": "full" } } @@ -8595,51 +8595,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 3069.2, + "us": 2452.4, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 3069.2, + "us": 2452.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 3069.2, + "us": 2452.4, "level": "full" }, "parse": { - "us": 4420.9, + "us": 3592.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + mut copy", - "us": 917.8, + "variant": "mut copy", + "us": 832.7, "level": "full" }, "best_any": { - "variant": "insitu (copy) + mut copy", - "us": 917.8, + "variant": "mut copy", + "us": 832.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy) + mut copy": { - "us": 917.8, - "level": "full" - }, "insitu (copy untimed) + mut copy": { - "us": 932.4, + "us": 820.1, "level": "full" }, "mut copy": { - "us": 940.7, + "us": 832.7, + "level": "full" + }, + "insitu (copy) + mut copy": { + "us": 878.2, "level": "full" } } @@ -8648,14 +8648,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 711.4, + "us": 641.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 711.4, + "us": 641.9, "level": "no UTF-8" } } @@ -8663,23 +8663,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 4340.8, + "us": 3896.2, "level": "full" }, "best_any": { "variant": "generic", - "us": 4301.2, + "us": 3837.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 4301.2, + "us": 3837.0, "level": "partial" }, "generic (strict)": { - "us": 4340.8, + "us": 3896.2, "level": "full" } }, @@ -8691,19 +8691,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1854.7, + "us": 1715.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 1854.7, + "us": 1715.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1854.7, + "us": 1715.8, "level": "full" } } @@ -8711,47 +8711,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2634.9, + "us": 2477.9, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2029.7, + "us": 1842.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1951.7, + "us": 1797.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2029.7, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 2052.9, + "us": 1842.4, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 2248.2, + "us": 1967.8, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 2634.9, - "level": "full" + "Document (no encoding check)": { + "us": 2045.6, + "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2686.7, + "us": 2417.1, + "level": "full" + }, + "insitu (copy)": { + "us": 2477.9, "level": "full" }, "Document": { - "us": 3020.8, + "us": 2725.8, "level": "full" }, "Document (string stream)": { - "us": 3126.8, + "us": 2812.6, "level": "full" } } @@ -8825,23 +8825,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 1126.7, + "us": 1152.3, "level": "full" }, "best_any": { "variant": "editable", - "us": 1126.7, + "us": 1152.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 1126.7, + "us": 1152.3, "level": "full" }, "editable (source numbers)": { - "us": 1126.8, + "us": 1157.0, "level": "full" } } @@ -8849,51 +8849,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4905.2, + "us": 4401.6, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4905.2, + "us": 4401.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4905.2, + "us": 4401.6, "level": "full" }, "parse": { - "us": 5726.3, + "us": 5319.5, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + mut copy", - "us": 1659.2, + "variant": "mut copy", + "us": 1674.2, "level": "full" }, "best_any": { - "variant": "insitu (copy) + mut copy", - "us": 1659.2, + "variant": "mut copy", + "us": 1674.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1547.7, - "level": "full" - }, - "insitu (copy) + mut copy": { - "us": 1659.2, + "us": 1563.9, "level": "full" }, "mut copy": { - "us": 1661.0, + "us": 1674.2, + "level": "full" + }, + "insitu (copy) + mut copy": { + "us": 1680.6, "level": "full" } } @@ -8902,14 +8902,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1472.1, + "us": 1496.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1472.1, + "us": 1496.7, "level": "no UTF-8" } } @@ -8917,24 +8917,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 7321.5, + "us": 7671.0, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 7321.5, - "level": "full" + "variant": "generic", + "us": 7565.9, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 7321.5, - "level": "full" - }, "generic": { - "us": 7435.9, + "us": 7565.9, "level": "partial" + }, + "generic (strict)": { + "us": 7671.0, + "level": "full" } }, "excluded": { @@ -8945,19 +8945,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2596.2, + "us": 2578.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 2596.2, + "us": 2578.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2596.2, + "us": 2578.3, "level": "full" } } @@ -8965,47 +8965,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 3225.3, + "us": 3260.6, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2838.7, + "us": 2886.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2728.1, + "us": 2857.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2838.7, + "us": 2886.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2897.4, + "us": 2915.1, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 2972.2, + "us": 2977.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 3103.2, + "us": 3134.1, "level": "full" }, "insitu (copy)": { - "us": 3225.3, + "us": 3260.6, "level": "full" }, "Document": { - "us": 3401.8, + "us": 3440.1, "level": "full" }, "Document (string stream)": { - "us": 3507.7, + "us": 3484.3, "level": "full" } } @@ -9079,23 +9079,23 @@ "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 2442.9, + "us": 2502.5, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 2442.9, + "us": 2502.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 2442.9, + "us": 2502.5, "level": "full" }, "editable": { - "us": 5674.4, + "us": 5670.8, "level": "full" } } @@ -9103,23 +9103,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 16701.8, + "us": 14764.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 16701.8, + "us": 14764.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 16701.8, + "us": 14764.9, "level": "full" }, "ordered_json": { - "us": 16785.9, + "us": 15056.9, "level": "full" } } @@ -9127,27 +9127,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 7232.6, + "us": 7249.3, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 7232.6, + "us": 7249.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy untimed) + mut copy": { - "us": 7155.1, + "mut copy": { + "us": 7249.3, "level": "full" }, - "mut copy": { - "us": 7232.6, + "insitu (copy untimed) + mut copy": { + "us": 7461.1, "level": "full" }, "insitu (copy) + mut copy": { - "us": 7340.8, + "us": 7534.6, "level": "full" } } @@ -9156,14 +9156,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 7995.7, + "us": 8153.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 7995.7, + "us": 8153.1, "level": "no UTF-8" } } @@ -9171,24 +9171,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 26786.5, + "us": 28104.4, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 26786.5, - "level": "full" + "variant": "generic", + "us": 27110.8, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 26786.5, - "level": "full" - }, "generic": { - "us": 26840.5, + "us": 27110.8, "level": "partial" + }, + "generic (strict)": { + "us": 28104.4, + "level": "full" } }, "excluded": { @@ -9199,68 +9199,68 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 12765.2, + "us": 13426.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 12765.2, + "us": 13426.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 12765.2, + "us": 13426.6, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "Document (string stream)", - "us": 21307.0, + "variant": "insitu (copy)", + "us": 21685.8, "level": "full" }, "best_any": { - "variant": "Document (string stream) (no encoding check)", - "us": 21154.4, - "level": "no UTF-8" + "variant": "insitu (copy)", + "us": 21685.8, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed)": { - "us": 21138.8, - "level": "full" - }, - "Document (string stream) (no encoding check)": { - "us": 21154.4, - "level": "no UTF-8" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 21195.3, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 21200.9, - "level": "no UTF-8" - }, - "Document (string stream)": { - "us": 21307.0, + "us": 21568.8, "level": "full" }, "insitu (copy)": { - "us": 21413.9, + "us": 21685.8, + "level": "full" + }, + "Document (string stream) (no encoding check)": { + "us": 21708.5, + "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 21742.7, + "level": "no UTF-8" + }, + "insitu (copy) (no encoding check)": { + "us": 21827.2, + "level": "no UTF-8" + }, + "Document (string stream)": { + "us": 21857.9, + "level": "full" + }, + "Document": { + "us": 23216.1, "level": "full" }, "Document (no encoding check)": { - "us": 21695.3, + "us": 23488.8, "level": "no UTF-8" - }, - "Document": { - "us": 22289.4, - "level": "full" } } }, @@ -9333,23 +9333,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 196369.6, + "us": 195715.8, "level": "full" }, "best_any": { "variant": "editable", - "us": 196369.6, + "us": 195715.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 196369.6, + "us": 195715.8, "level": "full" }, "editable (source numbers)": { - "us": 200396.1, + "us": 197796.9, "level": "full" } } @@ -9357,23 +9357,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 666261.1, + "us": 646489.4, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 666261.1, + "us": 646489.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 666261.1, + "us": 646489.4, "level": "full" }, "parse": { - "us": 901257.5, + "us": 845674.5, "level": "full" } } @@ -9381,27 +9381,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 316649.7, + "us": 316652.3, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 316649.7, + "us": 316652.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 270654.0, + "us": 273813.6, "level": "full" }, "insitu (copy) + mut copy": { - "us": 316649.7, + "us": 316652.3, "level": "full" }, "mut copy": { - "us": 328034.7, + "us": 321427.2, "level": "full" } } @@ -9410,14 +9410,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 183852.2, + "us": 184321.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 183852.2, + "us": 184321.0, "level": "no UTF-8" } } @@ -9425,23 +9425,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 725880.6, + "us": 723675.0, "level": "full" }, "best_any": { "variant": "generic (strict)", - "us": 725880.6, + "us": 723675.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (strict)": { - "us": 725880.6, + "us": 723675.0, "level": "full" }, "generic": { - "us": 783351.6, + "us": 741416.1, "level": "partial" } }, @@ -9453,19 +9453,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 350286.2, + "us": 354510.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 350286.2, + "us": 354510.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 350286.2, + "us": 354510.2, "level": "full" } } @@ -9473,47 +9473,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 386367.0, + "us": 378727.1, "level": "full" }, "best_any": { "variant": "Document (string stream) (no encoding check)", - "us": 299765.3, + "us": 294726.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 267080.6, + "us": 269454.2, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 299765.3, + "us": 294726.6, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 310314.1, + "us": 309915.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 324206.5, + "us": 329674.0, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 333912.8, + "us": 336245.6, "level": "full" }, "insitu (copy)": { - "us": 386367.0, + "us": 378727.1, "level": "full" }, "Document (string stream)": { - "us": 389205.3, + "us": 388646.1, "level": "full" }, "Document": { - "us": 422735.6, + "us": 404806.1, "level": "full" } } @@ -9587,23 +9587,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 2.9, + "us": 3.0, "level": "full" }, "best_any": { "variant": "editable", - "us": 2.9, + "us": 3.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 2.9, + "us": 3.0, "level": "full" }, "editable (source numbers)": { - "us": 2.9, + "us": 3.2, "level": "full" } } @@ -9611,23 +9611,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 13.1, + "us": 12.6, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 13.1, + "us": 12.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 13.1, + "us": 12.6, "level": "full" }, "parse": { - "us": 22.2, + "us": 21.4, "level": "full" } } @@ -9635,27 +9635,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 3.9, + "us": 4.2, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 3.9, + "us": 4.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { + "insitu (copy untimed) + mut copy": { + "us": 4.1, + "level": "full" + }, "mut copy": { - "us": 3.9, + "us": 4.2, "level": "full" }, "insitu (copy) + mut copy": { - "us": 3.9, - "level": "full" - }, - "insitu (copy untimed) + mut copy": { - "us": 3.9, + "us": 4.3, "level": "full" } } @@ -9664,14 +9664,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3.2, + "us": 3.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3.2, + "us": 3.3, "level": "no UTF-8" } } @@ -9679,23 +9679,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 18.3, + "us": 20.2, "level": "full" }, "best_any": { "variant": "generic", - "us": 17.7, + "us": 19.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 17.7, + "us": 19.6, "level": "partial" }, "generic (strict)": { - "us": 18.3, + "us": 20.2, "level": "full" } }, @@ -9707,19 +9707,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 8.3, + "us": 8.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 8.3, + "us": 8.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 8.3, + "us": 8.9, "level": "full" } } @@ -9727,47 +9727,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 11.8, + "us": 13.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 7.7, + "us": 8.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy) (no encoding check)": { - "us": 7.7, + "us": 8.3, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 7.7, + "us": 8.4, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 8.8, + "us": 9.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 11.4, + "us": 12.2, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 11.8, + "insitu (copy untimed)": { + "us": 12.7, "level": "full" }, - "insitu (copy untimed)": { - "us": 12.0, + "insitu (copy)": { + "us": 13.1, "level": "full" }, "Document (string stream)": { - "us": 14.3, + "us": 15.7, "level": "full" }, "Document": { - "us": 15.5, + "us": 16.3, "level": "full" } } @@ -9841,23 +9841,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 468.1, + "us": 460.0, "level": "full" }, "best_any": { "variant": "editable", - "us": 468.1, + "us": 460.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 468.1, + "us": 460.0, "level": "full" }, "editable (source numbers)": { - "us": 468.7, + "us": 460.4, "level": "full" } } @@ -9865,23 +9865,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2652.4, + "us": 2356.9, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2652.4, + "us": 2356.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2652.4, + "us": 2356.9, "level": "full" }, "parse": { - "us": 3903.7, + "us": 3500.4, "level": "full" } } @@ -9889,27 +9889,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 810.2, + "us": 786.4, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 810.2, + "us": 786.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 732.8, + "us": 740.8, "level": "full" }, "mut copy": { - "us": 810.2, + "us": 786.4, "level": "full" }, "insitu (copy) + mut copy": { - "us": 812.3, + "us": 795.0, "level": "full" } } @@ -9918,14 +9918,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 522.8, + "us": 521.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 522.8, + "us": 521.4, "level": "no UTF-8" } } @@ -9933,24 +9933,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3683.7, + "us": 3699.2, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 3683.7, - "level": "full" + "variant": "generic", + "us": 3666.7, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 3683.7, - "level": "full" - }, "generic": { - "us": 3705.9, + "us": 3666.7, "level": "partial" + }, + "generic (strict)": { + "us": 3699.2, + "level": "full" } }, "excluded": { @@ -9961,19 +9961,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1602.9, + "us": 1601.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 1602.9, + "us": 1601.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1602.9, + "us": 1601.3, "level": "full" } } @@ -9981,47 +9981,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2142.7, + "us": 2133.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1573.9, + "us": 1567.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1543.9, + "us": 1542.9, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1573.9, + "us": 1567.2, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 1745.4, + "us": 1748.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1947.8, + "us": 1955.8, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2110.1, + "us": 2099.9, "level": "full" }, "insitu (copy)": { - "us": 2142.7, + "us": 2133.3, "level": "full" }, "Document (string stream)": { - "us": 2507.6, + "us": 2493.7, "level": "full" }, "Document": { - "us": 2690.7, + "us": 2630.5, "level": "full" } } @@ -10094,24 +10094,24 @@ "citm_catalog_min": { "nlohmann json_document": { "best": { - "variant": "editable (source numbers)", - "us": 855.1, + "variant": "editable", + "us": 860.5, "level": "full" }, "best_any": { - "variant": "editable (source numbers)", - "us": 855.1, + "variant": "editable", + "us": 860.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "editable (source numbers)": { - "us": 855.1, + "editable": { + "us": 860.5, "level": "full" }, - "editable": { - "us": 855.4, + "editable (source numbers)": { + "us": 863.0, "level": "full" } } @@ -10119,23 +10119,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4606.2, + "us": 4028.5, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4606.2, + "us": 4028.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4606.2, + "us": 4028.5, "level": "full" }, "parse": { - "us": 5425.5, + "us": 4844.3, "level": "full" } } @@ -10143,27 +10143,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 1245.4, + "us": 1254.4, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 1245.4, + "us": 1254.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1213.2, + "us": 1218.6, "level": "full" }, "mut copy": { - "us": 1245.4, + "us": 1254.4, "level": "full" }, "insitu (copy) + mut copy": { - "us": 1247.5, + "us": 1257.6, "level": "full" } } @@ -10172,14 +10172,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1139.7, + "us": 1141.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1139.7, + "us": 1141.4, "level": "no UTF-8" } } @@ -10187,24 +10187,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 6647.5, + "us": 6805.4, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 6647.5, - "level": "full" + "variant": "generic", + "us": 6797.0, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 6647.5, - "level": "full" - }, "generic": { - "us": 6744.4, + "us": 6797.0, "level": "partial" + }, + "generic (strict)": { + "us": 6805.4, + "level": "full" } }, "excluded": { @@ -10215,19 +10215,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2320.5, + "us": 2286.7, "level": "full" }, "best_any": { "variant": "parse", - "us": 2320.5, + "us": 2286.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2320.5, + "us": 2286.7, "level": "full" } } @@ -10235,47 +10235,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2668.7, + "us": 2669.7, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2360.8, + "us": 2364.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2342.4, + "us": 2344.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2360.8, + "us": 2364.8, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 2516.6, + "us": 2512.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2633.6, + "us": 2635.8, "level": "full" }, "Document (no encoding check)": { - "us": 2658.0, + "us": 2652.6, "level": "no UTF-8" }, "insitu (copy)": { - "us": 2668.7, + "us": 2669.7, "level": "full" }, "Document (string stream)": { - "us": 2953.8, + "us": 2930.4, "level": "full" }, "Document": { - "us": 3151.8, + "us": 3134.3, "level": "full" } } @@ -10350,40 +10350,40 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "parse + dump", - "us": 517.7, + "variant": "parse + dump (source numbers)", + "us": 467.1, "level": "full" }, "best_any": { - "variant": "parse + dump", - "us": 517.7, + "variant": "parse + dump (source numbers)", + "us": 467.1, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 497.6, + "us": 466.5, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 497.6, + "us": 466.5, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 497.6, - "level": "full" - }, - "parse + dump": { - "us": 517.7, + "us": 466.5, "level": "full" }, "parse + dump (source numbers)": { - "us": 521.2, + "us": 467.1, + "level": "full" + }, + "parse + dump": { + "us": 472.0, "level": "full" }, "parse_copy + dump": { - "us": 556.1, + "us": 512.9, "level": "full" } } @@ -10391,63 +10391,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 4444.8, + "us": 3524.7, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 4444.8, + "us": 3524.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 4444.8, + "us": 3524.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + write", - "us": 678.4, + "variant": "read + write", + "us": 625.5, "level": "full" }, "best_any": { - "variant": "insitu (copy) + write", - "us": 678.4, + "variant": "read + write", + "us": 625.5, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 727.7, + "us": 631.4, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 727.7, + "us": 631.4, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 619.8, - "level": "full" - }, - "insitu (copy) + write": { - "us": 678.4, - "level": "full" - }, - "read (raw numbers) + write": { - "us": 678.6, + "us": 586.6, "level": "full" }, "read + write": { - "us": 688.3, + "us": 625.5, + "level": "full" + }, + "insitu (copy) + write": { + "us": 629.0, "level": "full" }, "read + write (reused allocator)": { - "us": 727.7, + "us": 631.4, + "level": "full" + }, + "read (raw numbers) + write": { + "us": 633.2, "level": "full" } } @@ -10455,35 +10455,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 783.1, + "us": 706.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 105.4, + "us": 99.0, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 788.0, + "us": 704.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 788.0, + "us": 704.7, "level": "full" }, "variants": { "minify": { - "us": 105.4, + "us": 99.0, "level": "partial" }, - "DOM + to_string": { - "us": 783.1, + "DOM (reused) + to_string": { + "us": 704.7, "level": "full" }, - "DOM (reused) + to_string": { - "us": 788.0, + "DOM + to_string": { + "us": 706.0, "level": "full" } } @@ -10492,14 +10492,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 710.1, + "us": 655.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 710.1, + "us": 655.0, "level": "no UTF-8" } } @@ -10507,28 +10507,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 4131.9, + "us": 3801.2, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 443.5, + "us": 422.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 443.5, + "us": 422.1, + "level": "partial" + }, + "generic": { + "us": 3738.7, "level": "partial" }, "generic (strict)": { - "us": 4131.9, + "us": 3801.2, "level": "full" - }, - "generic": { - "us": 4305.0, - "level": "partial" } }, "excluded": { @@ -10539,31 +10539,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1924.5, + "us": 1721.5, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1924.5, + "us": 1721.5, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1806.3, + "us": 1705.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1806.3, + "us": 1705.8, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 1806.3, + "us": 1705.8, "level": "full" }, "parse + serialize": { - "us": 1924.5, + "us": 1721.5, "level": "full" } } @@ -10571,63 +10571,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer", - "us": 2808.0, + "us": 2456.3, "level": "full" }, "best_any": { - "variant": "SAX to Writer (raw numbers) (no encoding check)", - "us": 2022.3, + "variant": "SAX to Writer (no encoding check)", + "us": 1794.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 3112.6, + "us": 2850.1, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2367.0, + "us": 2100.4, "level": "no UTF-8" }, "variants": { - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2022.3, + "SAX to Writer (no encoding check)": { + "us": 1794.3, "level": "no UTF-8" }, - "SAX to Writer (no encoding check)": { - "us": 2029.7, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 1839.5, "level": "no UTF-8" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 2074.6, + "us": 1875.9, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 2362.8, + "us": 2089.0, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2367.0, + "us": 2100.4, "level": "no UTF-8" }, "SAX to Writer": { - "us": 2808.0, - "level": "full" - }, - "SAX to Writer (string stream)": { - "us": 2863.8, + "us": 2456.3, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 2887.1, + "us": 2459.0, "level": "full" }, - "Document + Writer (reused allocator)": { - "us": 3112.6, + "SAX to Writer (string stream)": { + "us": 2607.6, "level": "full" }, "Document + Writer": { - "us": 3194.8, + "us": 2779.8, + "level": "full" + }, + "Document + Writer (reused allocator)": { + "us": 2850.1, "level": "full" } } @@ -10696,40 +10696,40 @@ "citm_catalog": { "nlohmann json_document": { "best": { - "variant": "parse + dump (source numbers)", - "us": 1030.2, + "variant": "parse + dump", + "us": 1054.9, "level": "full" }, "best_any": { - "variant": "parse + dump (source numbers)", - "us": 1030.2, + "variant": "parse + dump", + "us": 1054.9, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 1034.0, + "us": 1055.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 1034.0, + "us": 1055.2, "level": "full" }, "variants": { - "parse + dump (source numbers)": { - "us": 1030.2, + "parse + dump": { + "us": 1054.9, "level": "full" }, "read + dump (reused)": { - "us": 1034.0, + "us": 1055.2, "level": "full" }, - "parse + dump": { - "us": 1040.1, + "parse + dump (source numbers)": { + "us": 1076.9, "level": "full" }, "parse_copy + dump": { - "us": 1164.2, + "us": 1174.4, "level": "full" } } @@ -10737,19 +10737,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5713.0, + "us": 5177.6, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5713.0, + "us": 5177.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5713.0, + "us": 5177.6, "level": "full" } } @@ -10757,43 +10757,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 1234.6, + "us": 1236.0, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 1234.6, + "us": 1236.0, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 1340.3, + "us": 1296.9, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 1340.3, + "us": 1296.9, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 1189.1, + "us": 1151.9, "level": "full" }, "read (raw numbers) + write": { - "us": 1234.6, + "us": 1236.0, "level": "full" }, "read + write": { - "us": 1257.6, + "us": 1261.4, "level": "full" }, "insitu (copy) + write": { - "us": 1278.1, + "us": 1280.3, "level": "full" }, "read + write (reused allocator)": { - "us": 1340.3, + "us": 1296.9, "level": "full" } } @@ -10801,35 +10801,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1395.0, + "us": 1411.1, "level": "full" }, "best_any": { "variant": "minify", - "us": 269.0, + "us": 269.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1388.0, + "us": 1401.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1388.0, + "us": 1401.6, "level": "full" }, "variants": { "minify": { - "us": 269.0, + "us": 269.7, "level": "partial" }, "DOM (reused) + to_string": { - "us": 1388.0, + "us": 1401.6, "level": "full" }, "DOM + to_string": { - "us": 1395.0, + "us": 1411.1, "level": "full" } } @@ -10838,14 +10838,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1485.4, + "us": 1474.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1485.4, + "us": 1474.3, "level": "no UTF-8" } } @@ -10853,28 +10853,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 7465.4, + "us": 7482.4, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1059.1, + "us": 1051.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1059.1, + "us": 1051.4, + "level": "partial" + }, + "generic": { + "us": 7349.1, "level": "partial" }, "generic (strict)": { - "us": 7465.4, + "us": 7482.4, "level": "full" - }, - "generic": { - "us": 7838.0, - "level": "partial" } }, "excluded": { @@ -10885,31 +10885,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2568.7, + "us": 2573.0, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2568.7, + "us": 2573.0, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2734.1, + "us": 2503.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2734.1, + "us": 2503.8, "level": "full" }, "variants": { - "parse + serialize": { - "us": 2568.7, + "parser (reused) + serialize": { + "us": 2503.8, "level": "full" }, - "parser (reused) + serialize": { - "us": 2734.1, + "parse + serialize": { + "us": 2573.0, "level": "full" } } @@ -10917,63 +10917,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer", - "us": 2975.2, + "us": 2863.7, "level": "full" }, "best_any": { "variant": "SAX to Writer (no encoding check)", - "us": 2480.1, + "us": 2444.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 3396.9, + "us": 3389.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2979.8, + "us": 2940.1, "level": "no UTF-8" }, "variants": { "SAX to Writer (no encoding check)": { - "us": 2480.1, + "us": 2444.5, "level": "no UTF-8" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 2559.3, + "us": 2725.6, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2855.7, + "us": 2831.4, "level": "no UTF-8" }, "SAX to Writer": { - "us": 2975.2, - "level": "full" - }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 2979.8, - "level": "no UTF-8" - }, - "SAX to Writer (string stream)": { - "us": 3031.7, + "us": 2863.7, "level": "full" }, "Document + Writer (no encoding check)": { - "us": 3045.5, + "us": 2921.4, "level": "no UTF-8" }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 2940.1, + "level": "no UTF-8" + }, + "SAX to Writer (string stream)": { + "us": 3051.7, + "level": "full" + }, "SAX to Writer (raw numbers)": { - "us": 3243.4, + "us": 3290.5, "level": "full" }, "Document + Writer (reused allocator)": { - "us": 3396.9, + "us": 3389.3, "level": "full" }, "Document + Writer": { - "us": 3521.8, + "us": 3412.5, "level": "full" } } @@ -11043,39 +11043,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 2456.1, + "us": 2362.9, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 2456.1, + "us": 2362.9, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 5286.7, + "us": 5028.9, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 5286.7, + "us": 5028.9, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 2456.1, - "level": "full" - }, - "parse + dump": { - "us": 5042.6, + "us": 2362.9, "level": "full" }, "read + dump (reused)": { - "us": 5286.7, + "us": 5028.9, + "level": "full" + }, + "parse + dump": { + "us": 5041.1, "level": "full" }, "parse_copy + dump": { - "us": 5371.7, + "us": 5193.5, "level": "full" } } @@ -11083,19 +11083,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 16710.6, + "us": 14023.7, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 16710.6, + "us": 14023.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 16710.6, + "us": 14023.7, "level": "full" } } @@ -11103,43 +11103,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 3472.2, + "us": 3425.6, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 3472.2, + "us": 3425.6, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 6374.7, + "us": 6181.3, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 6374.7, + "us": 6181.3, "level": "full" }, "variants": { "read (raw numbers) + write": { - "us": 3472.2, + "us": 3425.6, "level": "full" }, "insitu (copy untimed) + write": { - "us": 6282.8, - "level": "full" - }, - "read + write (reused allocator)": { - "us": 6374.7, - "level": "full" - }, - "insitu (copy) + write": { - "us": 6376.0, + "us": 6094.8, "level": "full" }, "read + write": { - "us": 6420.4, + "us": 6179.3, + "level": "full" + }, + "read + write (reused allocator)": { + "us": 6181.3, + "level": "full" + }, + "insitu (copy) + write": { + "us": 6183.4, "level": "full" } } @@ -11147,35 +11147,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 8303.2, + "us": 8125.1, "level": "full" }, "best_any": { "variant": "minify", - "us": 337.1, + "us": 328.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 8712.4, + "us": 8488.1, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 8712.4, + "us": 8488.1, "level": "full" }, "variants": { "minify": { - "us": 337.1, + "us": 328.7, "level": "partial" }, "DOM + to_string": { - "us": 8303.2, + "us": 8125.1, "level": "full" }, "DOM (reused) + to_string": { - "us": 8712.4, + "us": 8488.1, "level": "full" } } @@ -11184,14 +11184,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 8121.5, + "us": 7856.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 8121.5, + "us": 7856.1, "level": "no UTF-8" } } @@ -11199,27 +11199,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 26961.6, + "us": 26932.5, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 2221.9, + "us": 2139.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 2221.9, + "us": 2139.6, "level": "partial" }, "generic": { - "us": 26550.0, + "us": 26709.7, "level": "partial" }, "generic (strict)": { - "us": 26961.6, + "us": 26932.5, "level": "full" } }, @@ -11231,31 +11231,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 12622.5, + "us": 12677.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 12622.5, + "us": 12677.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 12883.9, + "us": 12588.3, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 12883.9, + "us": 12588.3, "level": "full" }, "variants": { - "parse + serialize": { - "us": 12622.5, + "parser (reused) + serialize": { + "us": 12588.3, "level": "full" }, - "parser (reused) + serialize": { - "us": 12883.9, + "parse + serialize": { + "us": 12677.7, "level": "full" } } @@ -11263,63 +11263,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (raw numbers)", - "us": 14986.3, + "us": 15326.1, "level": "full" }, "best_any": { - "variant": "SAX to Writer (raw numbers)", - "us": 14986.3, - "level": "full" + "variant": "SAX to Writer (raw numbers) (no encoding check)", + "us": 14706.8, + "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 21630.1, + "us": 21871.5, "level": "full" }, "best_reused_any": { - "variant": "Document + Writer (reused allocator)", - "us": 21630.1, - "level": "full" + "variant": "Document + Writer (reused allocator) (no encoding check)", + "us": 21830.3, + "level": "no UTF-8" }, "variants": { - "SAX to Writer (raw numbers)": { - "us": 14986.3, - "level": "full" - }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 15205.7, + "us": 14706.8, "level": "no UTF-8" }, - "Document + Writer (reused allocator)": { - "us": 21630.1, + "SAX to Writer (raw numbers)": { + "us": 15326.1, "level": "full" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 21691.3, + "us": 20991.9, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 22060.8, - "level": "no UTF-8" - }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 22298.3, + "us": 21511.1, "level": "no UTF-8" }, "Document + Writer": { - "us": 22589.2, + "us": 21753.0, + "level": "full" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 21830.3, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator)": { + "us": 21871.5, "level": "full" }, "SAX to Writer (string stream)": { - "us": 22811.9, + "us": 22306.2, "level": "full" }, "SAX to Writer (no encoding check)": { - "us": 23647.5, + "us": 22846.5, "level": "no UTF-8" }, "SAX to Writer": { - "us": 24346.5, + "us": 23724.2, "level": "full" } } @@ -11389,39 +11389,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 146125.4, + "us": 149143.2, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 146125.4, + "us": 149143.2, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 113317.7, + "us": 111494.0, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 113317.7, + "us": 111494.0, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 113317.7, + "us": 111494.0, "level": "full" }, "parse + dump": { - "us": 146125.4, + "us": 149143.2, "level": "full" }, "parse + dump (source numbers)": { - "us": 151284.6, + "us": 149412.6, "level": "full" }, "parse_copy + dump": { - "us": 187850.7, + "us": 191343.3, "level": "full" } } @@ -11429,19 +11429,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 543033.4, + "us": 506704.6, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 543033.4, + "us": 506704.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 543033.4, + "us": 506704.6, "level": "full" } } @@ -11449,43 +11449,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 193235.3, + "us": 197700.1, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 193235.3, + "us": 197700.1, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 99883.3, + "us": 102589.0, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 99883.3, + "us": 102589.0, "level": "full" }, "variants": { "read + write (reused allocator)": { - "us": 99883.3, + "us": 102589.0, "level": "full" }, "insitu (copy untimed) + write": { - "us": 154016.2, + "us": 159761.2, "level": "full" }, "read (raw numbers) + write": { - "us": 193235.3, + "us": 197700.1, "level": "full" }, "read + write": { - "us": 193451.6, + "us": 200886.5, "level": "full" }, "insitu (copy) + write": { - "us": 198565.4, + "us": 201492.3, "level": "full" } } @@ -11493,35 +11493,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 275006.6, + "us": 270331.5, "level": "full" }, "best_any": { "variant": "minify", - "us": 45087.0, + "us": 42546.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 216862.5, + "us": 215222.4, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 216862.5, + "us": 215222.4, "level": "full" }, "variants": { "minify": { - "us": 45087.0, + "us": 42546.5, "level": "partial" }, "DOM (reused) + to_string": { - "us": 216862.5, + "us": 215222.4, "level": "full" }, "DOM + to_string": { - "us": 275006.6, + "us": 270331.5, "level": "full" } } @@ -11530,14 +11530,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 166935.3, + "us": 169992.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 166935.3, + "us": 169992.5, "level": "no UTF-8" } } @@ -11545,27 +11545,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 528810.7, + "us": 544342.1, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 91152.7, + "us": 87841.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 91152.7, + "us": 87841.5, "level": "partial" }, "generic": { - "us": 515973.2, + "us": 517373.1, "level": "partial" }, "generic (strict)": { - "us": 528810.7, + "us": 544342.1, "level": "full" } }, @@ -11577,31 +11577,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 329090.3, + "us": 330877.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 329090.3, + "us": 330877.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 277756.5, + "us": 270620.6, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 277756.5, + "us": 270620.6, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 277756.5, + "us": 270620.6, "level": "full" }, "parse + serialize": { - "us": 329090.3, + "us": 330877.7, "level": "full" } } @@ -11609,63 +11609,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 358806.9, + "us": 338984.9, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 261526.8, + "us": 252655.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 398389.8, + "us": 404117.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 310770.1, + "us": 310138.4, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 261526.8, - "level": "no UTF-8" - }, - "SAX to Writer (no encoding check)": { - "us": 279575.6, + "us": 252655.6, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 280239.1, + "us": 267162.9, + "level": "no UTF-8" + }, + "SAX to Writer (no encoding check)": { + "us": 270672.0, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 310770.1, + "us": 310138.4, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 326476.3, + "us": 314636.6, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 358806.9, - "level": "full" - }, - "SAX to Writer": { - "us": 370482.2, + "us": 338984.9, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 371569.7, + "us": 351327.4, + "level": "full" + }, + "SAX to Writer": { + "us": 354830.2, "level": "full" }, "Document + Writer (reused allocator)": { - "us": 398389.8, + "us": 404117.3, "level": "full" }, "Document + Writer": { - "us": 425669.0, + "us": 408401.1, "level": "full" } } @@ -11735,59 +11735,59 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 2.3, + "us": 2.4, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 2.3, + "us": 2.4, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 2.3, + "us": 2.4, "level": "full" }, "parse + dump": { - "us": 2.4, - "level": "full" - }, - "parse + dump (source numbers)": { - "us": 2.4, + "us": 2.5, "level": "full" }, "parse_copy + dump": { "us": 2.6, "level": "full" + }, + "parse + dump (source numbers)": { + "us": 2.7, + "level": "full" } } }, "nlohmann json": { "best": { "variant": "parse + dump", - "us": 21.4, + "us": 20.6, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 21.4, + "us": 20.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 21.4, + "us": 20.6, "level": "full" } } @@ -11795,43 +11795,43 @@ "yyjson": { "best": { "variant": "read + write", - "us": 3.1, + "us": 3.3, "level": "full" }, "best_any": { "variant": "read + write", - "us": 3.1, + "us": 3.3, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 2.8, + "us": 2.9, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 2.8, + "us": 2.9, "level": "full" }, "variants": { "read + write (reused allocator)": { - "us": 2.8, - "level": "full" - }, - "insitu (copy untimed) + write": { - "us": 3.0, + "us": 2.9, "level": "full" }, "read + write": { - "us": 3.1, + "us": 3.3, + "level": "full" + }, + "insitu (copy untimed) + write": { + "us": 3.4, "level": "full" }, "insitu (copy) + write": { - "us": 3.1, + "us": 3.5, "level": "full" }, "read (raw numbers) + write": { - "us": 3.1, + "us": 3.5, "level": "full" } } @@ -11839,7 +11839,7 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 4.0, + "us": 4.3, "level": "full" }, "best_any": { @@ -11849,12 +11849,12 @@ }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 3.6, + "us": 3.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 3.6, + "us": 3.7, "level": "full" }, "variants": { @@ -11863,11 +11863,11 @@ "level": "partial" }, "DOM (reused) + to_string": { - "us": 3.6, + "us": 3.7, "level": "full" }, "DOM + to_string": { - "us": 4.0, + "us": 4.3, "level": "full" } } @@ -11876,14 +11876,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 3.1, + "us": 3.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 3.1, + "us": 3.5, "level": "no UTF-8" } } @@ -11891,27 +11891,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 17.2, + "us": 19.2, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1.9, + "us": 2.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1.9, + "us": 2.1, "level": "partial" }, "generic": { - "us": 17.0, + "us": 18.3, "level": "partial" }, "generic (strict)": { - "us": 17.2, + "us": 19.2, "level": "full" } }, @@ -11923,31 +11923,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 8.4, + "us": 9.0, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 8.4, + "us": 9.0, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 8.2, + "us": 8.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 8.2, + "us": 8.9, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 8.2, + "us": 8.9, "level": "full" }, "parse + serialize": { - "us": 8.4, + "us": 9.0, "level": "full" } } @@ -11955,63 +11955,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 12.7, + "us": 13.6, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 7.2, + "us": 7.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 15.0, + "us": 16.6, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 11.1, + "us": 12.0, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 7.2, - "level": "no UTF-8" - }, - "SAX to Writer (no encoding check)": { - "us": 9.6, + "us": 7.5, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 9.8, + "us": 10.1, + "level": "no UTF-8" + }, + "SAX to Writer (no encoding check)": { + "us": 10.7, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 11.1, + "us": 12.0, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 11.6, + "us": 12.8, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 12.7, + "us": 13.6, "level": "full" }, "SAX to Writer": { - "us": 13.5, + "us": 14.3, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 13.5, + "us": 14.7, "level": "full" }, "Document + Writer (reused allocator)": { - "us": 15.0, + "us": 16.6, "level": "full" }, "Document + Writer": { - "us": 15.6, + "us": 17.3, "level": "full" } } @@ -12081,39 +12081,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 416.0, + "us": 410.3, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 416.0, + "us": 410.3, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 414.1, + "us": 410.9, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 414.1, + "us": 410.9, "level": "full" }, "variants": { - "read + dump (reused)": { - "us": 414.1, + "parse + dump (source numbers)": { + "us": 410.3, "level": "full" }, - "parse + dump (source numbers)": { - "us": 416.0, + "read + dump (reused)": { + "us": 410.9, "level": "full" }, "parse + dump": { - "us": 423.4, + "us": 417.9, "level": "full" }, "parse_copy + dump": { - "us": 453.0, + "us": 450.3, "level": "full" } } @@ -12121,19 +12121,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 3850.0, + "us": 3609.0, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 3850.0, + "us": 3609.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 3850.0, + "us": 3609.0, "level": "full" } } @@ -12141,43 +12141,43 @@ "yyjson": { "best": { "variant": "insitu (copy) + write", - "us": 566.5, + "us": 567.6, "level": "full" }, "best_any": { "variant": "insitu (copy) + write", - "us": 566.5, + "us": 567.6, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 563.5, + "us": 565.6, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 563.5, + "us": 565.6, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 536.4, + "us": 537.3, "level": "full" }, "read + write (reused allocator)": { - "us": 563.5, + "us": 565.6, "level": "full" }, "insitu (copy) + write": { - "us": 566.5, - "level": "full" - }, - "read + write": { - "us": 568.9, + "us": 567.6, "level": "full" }, "read (raw numbers) + write": { - "us": 576.8, + "us": 571.6, + "level": "full" + }, + "read + write": { + "us": 574.1, "level": "full" } } @@ -12185,35 +12185,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 692.6, + "us": 702.8, "level": "full" }, "best_any": { "variant": "minify", - "us": 72.8, + "us": 76.2, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 693.0, + "us": 690.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 693.0, + "us": 690.0, "level": "full" }, "variants": { "minify": { - "us": 72.8, + "us": 76.2, "level": "partial" }, - "DOM + to_string": { - "us": 692.6, + "DOM (reused) + to_string": { + "us": 690.0, "level": "full" }, - "DOM (reused) + to_string": { - "us": 693.0, + "DOM + to_string": { + "us": 702.8, "level": "full" } } @@ -12222,14 +12222,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 537.1, + "us": 540.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 537.1, + "us": 540.7, "level": "no UTF-8" } } @@ -12237,28 +12237,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3584.2, + "us": 3928.5, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 343.7, + "us": 354.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 343.7, + "us": 354.0, + "level": "partial" + }, + "generic": { + "us": 3806.0, "level": "partial" }, "generic (strict)": { - "us": 3584.2, + "us": 3928.5, "level": "full" - }, - "generic": { - "us": 3610.6, - "level": "partial" } }, "excluded": { @@ -12269,31 +12269,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1613.1, + "us": 1718.6, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1613.1, + "us": 1718.6, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1621.1, + "us": 1616.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1621.1, + "us": 1616.9, "level": "full" }, "variants": { - "parse + serialize": { - "us": 1613.1, + "parser (reused) + serialize": { + "us": 1616.9, "level": "full" }, - "parser (reused) + serialize": { - "us": 1621.1, + "parse + serialize": { + "us": 1718.6, "level": "full" } } @@ -12301,63 +12301,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 2268.6, + "us": 2335.0, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1588.1, + "us": 1610.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2686.4, + "us": 2780.0, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2005.6, + "us": 1998.0, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1588.1, + "us": 1610.3, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1677.3, + "us": 1741.3, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1720.5, - "level": "no UTF-8" - }, - "Document + Writer (no encoding check)": { - "us": 2003.4, + "us": 1820.3, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2005.6, + "us": 1998.0, + "level": "no UTF-8" + }, + "Document + Writer (no encoding check)": { + "us": 2042.5, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 2268.6, + "us": 2335.0, "level": "full" }, "SAX to Writer": { - "us": 2394.2, + "us": 2391.9, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 2418.4, + "us": 2406.8, "level": "full" }, "Document + Writer (reused allocator)": { - "us": 2686.4, + "us": 2780.0, "level": "full" }, "Document + Writer": { - "us": 2746.0, + "us": 2854.9, "level": "full" } } @@ -12427,39 +12427,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 773.5, + "us": 815.1, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 773.5, + "us": 815.1, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 816.0, + "us": 840.3, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 816.0, + "us": 840.3, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 773.5, - "level": "full" - }, - "parse + dump": { - "us": 774.0, + "us": 815.1, "level": "full" }, "read + dump (reused)": { - "us": 816.0, + "us": 840.3, + "level": "full" + }, + "parse + dump": { + "us": 841.7, "level": "full" }, "parse_copy + dump": { - "us": 851.0, + "us": 875.7, "level": "full" } } @@ -12467,63 +12467,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5778.1, + "us": 5289.9, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5778.1, + "us": 5289.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5778.1, + "us": 5289.9, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + write", - "us": 891.6, + "variant": "read (raw numbers) + write", + "us": 853.2, "level": "full" }, "best_any": { - "variant": "insitu (copy) + write", - "us": 891.6, + "variant": "read (raw numbers) + write", + "us": 853.2, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 890.9, + "us": 910.8, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 890.9, + "us": 910.8, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 823.6, - "level": "full" - }, - "read + write (reused allocator)": { - "us": 890.9, - "level": "full" - }, - "insitu (copy) + write": { - "us": 891.6, + "us": 842.5, "level": "full" }, "read (raw numbers) + write": { - "us": 898.1, + "us": 853.2, + "level": "full" + }, + "insitu (copy) + write": { + "us": 868.0, "level": "full" }, "read + write": { - "us": 908.2, + "us": 910.4, + "level": "full" + }, + "read + write (reused allocator)": { + "us": 910.8, "level": "full" } } @@ -12531,35 +12531,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1329.9, + "us": 1366.2, "level": "full" }, "best_any": { "variant": "minify", - "us": 72.9, + "us": 73.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1265.6, + "us": 1338.4, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1265.6, + "us": 1338.4, "level": "full" }, "variants": { "minify": { - "us": 72.9, + "us": 73.7, "level": "partial" }, "DOM (reused) + to_string": { - "us": 1265.6, + "us": 1338.4, "level": "full" }, "DOM + to_string": { - "us": 1329.9, + "us": 1366.2, "level": "full" } } @@ -12568,14 +12568,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1236.7, + "us": 1274.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1236.7, + "us": 1274.3, "level": "no UTF-8" } } @@ -12583,28 +12583,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 7126.2, + "us": 7436.0, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 634.8, + "us": 649.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 634.8, + "us": 649.7, + "level": "partial" + }, + "generic": { + "us": 7186.2, "level": "partial" }, "generic (strict)": { - "us": 7126.2, + "us": 7436.0, "level": "full" - }, - "generic": { - "us": 7268.4, - "level": "partial" } }, "excluded": { @@ -12615,31 +12615,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2476.7, + "us": 2497.5, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2476.7, + "us": 2497.5, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2411.1, + "us": 2442.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2411.1, + "us": 2442.8, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 2411.1, + "us": 2442.8, "level": "full" }, "parse + serialize": { - "us": 2476.7, + "us": 2497.5, "level": "full" } } @@ -12647,63 +12647,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 2696.0, + "us": 2529.0, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 2209.3, + "us": 2342.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 3286.6, + "us": 3478.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2816.6, + "us": 2906.0, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 2209.3, + "us": 2342.2, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 2368.2, - "level": "no UTF-8" - }, - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2656.7, + "us": 2375.3, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 2696.0, + "us": 2529.0, "level": "full" }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 2816.6, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 2572.4, "level": "no UTF-8" }, "SAX to Writer": { - "us": 2885.7, + "us": 2788.8, "level": "full" }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 2906.0, + "level": "no UTF-8" + }, "Document + Writer (no encoding check)": { - "us": 2906.1, + "us": 2933.5, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 3223.5, - "level": "full" - }, - "Document + Writer (reused allocator)": { - "us": 3286.6, + "us": 3256.0, "level": "full" }, "Document + Writer": { - "us": 3470.2, + "us": 3367.5, + "level": "full" + }, + "Document + Writer (reused allocator)": { + "us": 3478.3, "level": "full" } } @@ -12775,23 +12775,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 153.8, + "us": 152.6, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 153.8, + "us": 152.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 153.8, + "us": 152.6, "level": "n/a" }, "dump": { - "us": 159.7, + "us": 158.1, "level": "n/a" } } @@ -12799,19 +12799,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 450.9, + "us": 437.9, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 450.9, + "us": 437.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 450.9, + "us": 437.9, "level": "n/a" } } @@ -12819,19 +12819,19 @@ "yyjson": { "best": { "variant": "write", - "us": 217.8, + "us": 216.5, "level": "n/a" }, "best_any": { "variant": "write", - "us": 217.8, + "us": 216.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 217.8, + "us": 216.5, "level": "n/a" } } @@ -12839,19 +12839,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 388.9, + "us": 382.5, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 388.9, + "us": 382.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 388.9, + "us": 382.5, "level": "n/a" } } @@ -12859,19 +12859,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 627.2, + "us": 632.7, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 627.2, + "us": 632.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 627.2, + "us": 632.7, "level": "n/a" } } @@ -12879,19 +12879,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 223.8, + "us": 227.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 223.8, + "us": 227.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 223.8, + "us": 227.6, "level": "n/a" } } @@ -12899,23 +12899,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 399.1, + "us": 396.4, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 399.1, + "us": 396.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 399.1, + "us": 396.4, "level": "n/a" }, "generic (strict)": { - "us": 417.1, + "us": 413.0, "level": "n/a" } }, @@ -12927,19 +12927,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 478.5, + "us": 477.6, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 478.5, + "us": 477.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 478.5, + "us": 477.6, "level": "n/a" } } @@ -13009,23 +13009,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 278.6, + "us": 275.6, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 278.6, + "us": 275.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 278.6, + "us": 275.6, "level": "n/a" }, "dump": { - "us": 310.7, + "us": 278.8, "level": "n/a" } } @@ -13033,19 +13033,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 628.3, + "us": 598.6, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 628.3, + "us": 598.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 628.3, + "us": 598.6, "level": "n/a" } } @@ -13053,19 +13053,19 @@ "yyjson": { "best": { "variant": "write", - "us": 386.0, + "us": 367.3, "level": "n/a" }, "best_any": { "variant": "write", - "us": 386.0, + "us": 367.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 386.0, + "us": 367.3, "level": "n/a" } } @@ -13073,19 +13073,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 655.5, + "us": 661.2, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 655.5, + "us": 661.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 655.5, + "us": 661.2, "level": "n/a" } } @@ -13093,19 +13093,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 1008.0, + "us": 960.3, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 1008.0, + "us": 960.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 1008.0, + "us": 960.3, "level": "n/a" } } @@ -13113,43 +13113,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 474.9, + "us": 474.2, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 474.9, + "us": 474.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 474.9, + "us": 474.2, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic", - "us": 748.2, + "variant": "generic (strict)", + "us": 725.4, "level": "n/a" }, "best_any": { - "variant": "generic", - "us": 748.2, + "variant": "generic (strict)", + "us": 725.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 748.2, + "generic (strict)": { + "us": 725.4, "level": "n/a" }, - "generic (strict)": { - "us": 786.5, + "generic": { + "us": 737.1, "level": "n/a" } }, @@ -13161,19 +13161,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 916.0, + "us": 912.6, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 916.0, + "us": 912.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 916.0, + "us": 912.6, "level": "n/a" } } @@ -13243,23 +13243,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 989.1, + "us": 982.4, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 989.1, + "us": 982.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 989.1, + "us": 982.4, "level": "n/a" }, "dump": { - "us": 3714.5, + "us": 3637.0, "level": "n/a" } } @@ -13267,19 +13267,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 4506.5, + "us": 4458.4, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 4506.5, + "us": 4458.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 4506.5, + "us": 4458.4, "level": "n/a" } } @@ -13287,19 +13287,19 @@ "yyjson": { "best": { "variant": "write", - "us": 3476.1, + "us": 3365.8, "level": "n/a" }, "best_any": { "variant": "write", - "us": 3476.1, + "us": 3365.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 3476.1, + "us": 3365.8, "level": "n/a" } } @@ -13307,19 +13307,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 4895.9, + "us": 4787.2, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 4895.9, + "us": 4787.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 4895.9, + "us": 4787.2, "level": "n/a" } } @@ -13327,19 +13327,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 9596.0, + "us": 9388.2, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 9596.0, + "us": 9388.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 9596.0, + "us": 9388.2, "level": "n/a" } } @@ -13347,43 +13347,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 4850.4, + "us": 4766.1, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 4850.4, + "us": 4766.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 4850.4, + "us": 4766.1, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic", - "us": 4220.3, + "variant": "generic (strict)", + "us": 4107.1, "level": "n/a" }, "best_any": { - "variant": "generic", - "us": 4220.3, + "variant": "generic (strict)", + "us": 4107.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 4220.3, + "generic (strict)": { + "us": 4107.1, "level": "n/a" }, - "generic (strict)": { - "us": 4254.8, + "generic": { + "us": 4153.5, "level": "n/a" } }, @@ -13395,19 +13395,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 5614.9, + "us": 5610.3, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 5614.9, + "us": 5610.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 5614.9, + "us": 5610.3, "level": "n/a" } } @@ -13476,24 +13476,24 @@ "jeopardy": { "nlohmann json_document": { "best": { - "variant": "dump (source numbers)", - "us": 64301.4, + "variant": "dump", + "us": 67365.8, "level": "n/a" }, "best_any": { - "variant": "dump (source numbers)", - "us": 64301.4, + "variant": "dump", + "us": 67365.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump (source numbers)": { - "us": 64301.4, + "dump": { + "us": 67365.8, "level": "n/a" }, - "dump": { - "us": 67038.5, + "dump (source numbers)": { + "us": 67711.9, "level": "n/a" } } @@ -13501,19 +13501,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 116528.8, + "us": 116317.5, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 116528.8, + "us": 116317.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 116528.8, + "us": 116317.5, "level": "n/a" } } @@ -13521,19 +13521,19 @@ "yyjson": { "best": { "variant": "write", - "us": 71247.3, + "us": 73272.4, "level": "n/a" }, "best_any": { "variant": "write", - "us": 71247.3, + "us": 73272.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 71247.3, + "us": 73272.4, "level": "n/a" } } @@ -13541,19 +13541,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 157616.0, + "us": 162220.4, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 157616.0, + "us": 162220.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 157616.0, + "us": 162220.4, "level": "n/a" } } @@ -13561,19 +13561,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 123763.6, + "us": 127318.6, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 123763.6, + "us": 127318.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 123763.6, + "us": 127318.6, "level": "n/a" } } @@ -13581,19 +13581,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 65131.2, + "us": 66618.9, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 65131.2, + "us": 66618.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 65131.2, + "us": 66618.9, "level": "n/a" } } @@ -13601,23 +13601,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 128019.6, + "us": 132573.2, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 128019.6, + "us": 132573.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 128019.6, + "us": 132573.2, "level": "n/a" }, "generic (strict)": { - "us": 140059.9, + "us": 142984.1, "level": "n/a" } }, @@ -13629,19 +13629,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 141845.7, + "us": 141993.6, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 141845.7, + "us": 141993.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 141845.7, + "us": 141993.6, "level": "n/a" } } @@ -13735,19 +13735,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 2.0, + "us": 1.9, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 2.0, + "us": 1.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 2.0, + "us": 1.9, "level": "n/a" } } @@ -13795,19 +13795,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 3.7, + "us": 3.8, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 3.7, + "us": 3.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 3.7, + "us": 3.8, "level": "n/a" } } @@ -13835,23 +13835,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 2.0, + "us": 2.1, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 2.0, + "us": 2.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 2.0, + "us": 2.1, "level": "n/a" }, "generic (strict)": { - "us": 2.3, + "us": 2.2, "level": "n/a" } }, @@ -13863,19 +13863,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 2.5, + "us": 2.6, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 2.5, + "us": 2.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 2.5, + "us": 2.6, "level": "n/a" } } @@ -13945,23 +13945,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 148.8, + "us": 150.7, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 148.8, + "us": 150.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 148.8, + "us": 150.7, "level": "n/a" }, "dump": { - "us": 155.7, + "us": 154.2, "level": "n/a" } } @@ -13969,19 +13969,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 444.8, + "us": 446.7, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 444.8, + "us": 446.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 444.8, + "us": 446.7, "level": "n/a" } } @@ -13989,19 +13989,19 @@ "yyjson": { "best": { "variant": "write", - "us": 217.3, + "us": 219.3, "level": "n/a" }, "best_any": { "variant": "write", - "us": 217.3, + "us": 219.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 217.3, + "us": 219.3, "level": "n/a" } } @@ -14009,19 +14009,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 384.4, + "us": 386.9, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 384.4, + "us": 386.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 384.4, + "us": 386.9, "level": "n/a" } } @@ -14029,19 +14029,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 613.8, + "us": 620.1, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 613.8, + "us": 620.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 613.8, + "us": 620.1, "level": "n/a" } } @@ -14049,19 +14049,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 202.4, + "us": 204.4, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 202.4, + "us": 204.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 202.4, + "us": 204.4, "level": "n/a" } } @@ -14069,23 +14069,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 393.9, + "us": 404.9, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 393.9, + "us": 404.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 393.9, + "us": 404.9, "level": "n/a" }, "generic (strict)": { - "us": 413.9, + "us": 421.7, "level": "n/a" } }, @@ -14097,19 +14097,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 474.8, + "us": 491.6, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 474.8, + "us": 491.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 474.8, + "us": 491.6, "level": "n/a" } } @@ -14179,23 +14179,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 266.1, + "us": 264.5, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 266.1, + "us": 264.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 266.1, + "us": 264.5, "level": "n/a" }, "dump": { - "us": 272.1, + "us": 267.1, "level": "n/a" } } @@ -14203,19 +14203,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 635.3, + "us": 611.6, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 635.3, + "us": 611.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 635.3, + "us": 611.6, "level": "n/a" } } @@ -14223,19 +14223,19 @@ "yyjson": { "best": { "variant": "write", - "us": 363.4, + "us": 366.2, "level": "n/a" }, "best_any": { "variant": "write", - "us": 363.4, + "us": 366.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 363.4, + "us": 366.2, "level": "n/a" } } @@ -14243,19 +14243,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 670.2, + "us": 674.1, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 670.2, + "us": 674.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 670.2, + "us": 674.1, "level": "n/a" } } @@ -14263,19 +14263,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 967.6, + "us": 985.1, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 967.6, + "us": 985.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 967.6, + "us": 985.1, "level": "n/a" } } @@ -14283,43 +14283,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 478.8, + "us": 469.5, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 478.8, + "us": 469.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 478.8, + "us": 469.5, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic (strict)", - "us": 753.3, + "variant": "generic", + "us": 756.5, "level": "n/a" }, "best_any": { - "variant": "generic (strict)", - "us": 753.3, + "variant": "generic", + "us": 756.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 753.3, + "generic": { + "us": 756.5, "level": "n/a" }, - "generic": { - "us": 785.5, + "generic (strict)": { + "us": 769.1, "level": "n/a" } }, @@ -14331,19 +14331,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 918.1, + "us": 947.3, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 918.1, + "us": 947.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 918.1, + "us": 947.3, "level": "n/a" } } diff --git a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc.json b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc.json index cbcb94d83..b50a67296 100644 --- a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc.json +++ b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc.json @@ -4,35 +4,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 258.1, + "us": 253.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 258.1, + "us": 253.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 313.6, + "us": 306.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 313.6, + "us": 306.6, "level": "full" }, "variants": { "accept": { - "us": 258.1, + "us": 253.9, "level": "full" }, "read (reused)": { - "us": 313.6, + "us": 306.6, "level": "full" }, "parse": { - "us": 324.2, + "us": 312.8, "level": "full" } } @@ -40,23 +40,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 682.7, + "us": 369.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 682.7, + "us": 369.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 682.7, + "us": 369.9, "level": "full" }, "parse": { - "us": 3479.3, + "us": 3025.5, "level": "full" } } @@ -64,43 +64,43 @@ "yyjson": { "best": { "variant": "read", - "us": 395.9, + "us": 392.9, "level": "full" }, "best_any": { "variant": "read", - "us": 395.9, + "us": 392.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 396.8, + "us": 421.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 396.8, + "us": 421.2, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 352.5, + "us": 352.3, "level": "full" }, "read": { - "us": 395.9, - "level": "full" - }, - "read (reused allocator)": { - "us": 396.8, + "us": 392.9, "level": "full" }, "insitu (copy)": { - "us": 398.8, + "us": 396.5, "level": "full" }, "read (raw numbers)": { - "us": 404.3, + "us": 397.2, + "level": "full" + }, + "read (reused allocator)": { + "us": 421.2, "level": "full" } } @@ -108,31 +108,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 301.2, + "us": 297.2, "level": "full" }, "best_any": { "variant": "DOM", - "us": 301.2, + "us": 297.2, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 301.1, + "us": 298.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 301.1, + "us": 298.7, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 301.1, + "DOM": { + "us": 297.2, "level": "full" }, - "DOM": { - "us": 301.2, + "DOM (reused)": { + "us": 298.7, "level": "full" } } @@ -141,14 +141,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 402.8, + "us": 403.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 402.8, + "us": 403.5, "level": "no UTF-8" } } @@ -156,35 +156,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 712.4, + "us": 705.1, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 712.4, + "us": 705.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 712.4, - "level": "full" - }, - "generic (double, strict)": { - "us": 2356.2, + "us": 705.1, "level": "full" }, "generic (double)": { - "us": 2363.7, + "us": 2301.5, "level": "partial" }, + "generic (double, strict)": { + "us": 2304.7, + "level": "full" + }, "generic": { - "us": 2849.1, + "us": 2864.4, "level": "partial" }, "generic (strict)": { - "us": 2915.2, + "us": 2898.9, "level": "full" } } @@ -192,47 +192,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 690.5, + "us": 683.2, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 690.5, + "us": 683.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 697.5, + "us": 689.2, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 697.5, + "us": 689.2, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 690.5, + "us": 683.2, "level": "full" }, "SAX (reused)": { - "us": 697.5, + "us": 689.2, "level": "full" }, "SAX": { - "us": 734.3, - "level": "full" - }, - "parse": { - "us": 1282.5, + "us": 696.1, "level": "full" }, "parse (numbers: none)": { - "us": 1339.2, + "us": 1357.7, "level": "full" }, "parser (reused)": { - "us": 1363.9, + "us": 1366.0, + "level": "full" + }, + "parse": { + "us": 1392.0, "level": "full" } } @@ -240,95 +240,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1230.1, + "us": 1215.0, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1051.7, + "us": 1051.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1516.9, + "us": 1523.1, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1401.1, + "us": 1392.6, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1011.8, + "us": 1008.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1051.7, + "us": 1051.6, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1120.8, + "us": 1123.9, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1132.9, + "us": 1129.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1166.4, + "us": 1167.7, "level": "full" }, "insitu (copy)": { - "us": 1230.1, + "us": 1215.0, "level": "full" }, - "SAX (default precision) (no encoding check)": { + "SAX (no encoding check)": { "us": 1247.9, "level": "no UTF-8" }, - "SAX (no encoding check)": { - "us": 1252.0, + "SAX (default precision) (no encoding check)": { + "us": 1250.3, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 1348.1, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 1318.7, + "us": 1359.1, "level": "full" }, "SAX (string stream)": { - "us": 1324.7, + "us": 1379.6, "level": "full" }, - "SAX (raw numbers) (no encoding check)": { - "us": 1324.9, + "Document (reused allocator) (no encoding check)": { + "us": 1392.6, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1393.2, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1401.1, + "us": 1407.2, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1516.9, + "us": 1523.1, "level": "full" }, "SAX (default precision)": { - "us": 1943.2, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 2008.5, + "us": 1927.5, "level": "full" }, "SAX": { - "us": 2039.8, + "us": 1946.2, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 2001.4, "level": "full" }, "Document": { - "us": 2195.1, + "us": 2127.4, "level": "full" } } @@ -426,35 +426,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 512.8, + "us": 515.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 512.8, + "us": 515.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 827.6, + "us": 862.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 827.6, + "us": 862.5, "level": "full" }, "variants": { "accept": { - "us": 512.8, + "us": 515.4, "level": "full" }, "parse": { - "us": 821.9, + "us": 840.5, "level": "full" }, "read (reused)": { - "us": 827.6, + "us": 862.5, "level": "full" } } @@ -462,23 +462,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1418.7, + "us": 883.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 1418.7, + "us": 883.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1418.7, + "us": 883.4, "level": "full" }, "parse": { - "us": 5293.3, + "us": 4511.9, "level": "full" } } @@ -486,43 +486,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 940.0, + "us": 930.0, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 940.0, + "us": 930.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1001.1, + "us": 967.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1001.1, + "us": 967.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 837.2, + "us": 829.3, "level": "full" }, "read (raw numbers)": { - "us": 940.0, + "us": 930.0, "level": "full" }, "insitu (copy)": { - "us": 947.5, + "us": 939.5, "level": "full" }, "read": { - "us": 956.5, + "us": 946.2, "level": "full" }, "read (reused allocator)": { - "us": 1001.1, + "us": 967.0, "level": "full" } } @@ -530,31 +530,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 694.8, + "us": 686.7, "level": "full" }, "best_any": { "variant": "DOM", - "us": 694.8, + "us": 686.7, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 687.8, + "us": 685.4, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 687.8, + "us": 685.4, "level": "full" }, "variants": { "DOM (reused)": { - "us": 687.8, + "us": 685.4, "level": "full" }, "DOM": { - "us": 694.8, + "us": 686.7, "level": "full" } } @@ -563,14 +563,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 932.1, + "us": 922.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 932.1, + "us": 922.9, "level": "no UTF-8" } } @@ -578,35 +578,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1982.9, + "us": 1970.7, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1982.9, + "us": 1970.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1982.9, + "us": 1970.7, "level": "full" }, "generic (double)": { - "us": 3997.4, + "us": 3802.1, "level": "partial" }, "generic (double, strict)": { - "us": 4043.9, + "us": 3829.2, "level": "full" }, "generic (strict)": { - "us": 5297.4, + "us": 5151.6, "level": "full" }, "generic": { - "us": 5360.0, + "us": 5230.4, "level": "partial" } } @@ -614,47 +614,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 917.3, + "us": 913.1, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 917.3, + "us": 913.1, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 951.1, + "us": 943.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 951.1, + "us": 943.7, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 917.3, + "us": 913.1, "level": "full" }, "SAX (reused)": { - "us": 951.1, + "us": 943.7, "level": "full" }, "SAX": { - "us": 971.1, + "us": 951.4, "level": "full" }, "parse (numbers: none)": { - "us": 1610.3, - "level": "full" - }, - "parse": { - "us": 1636.0, + "us": 1570.6, "level": "full" }, "parser (reused)": { - "us": 1637.0, + "us": 1621.1, + "level": "full" + }, + "parse": { + "us": 1626.1, "level": "full" } } @@ -662,95 +662,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 1552.9, + "us": 1549.8, "level": "full" }, "best_any": { "variant": "SAX (default precision) (no encoding check)", - "us": 1433.7, + "us": 1427.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1993.2, + "us": 1888.5, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator) (no encoding check)", - "us": 1911.7, - "level": "no UTF-8" + "variant": "Document (reused allocator)", + "us": 1888.5, + "level": "full" }, "variants": { "SAX (default precision) (no encoding check)": { - "us": 1433.7, + "us": 1427.0, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 1471.0, + "us": 1496.6, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 1552.9, + "us": 1549.8, "level": "full" }, - "SAX (string stream)": { - "us": 1605.2, - "level": "full" - }, - "SAX (no encoding check)": { - "us": 1609.4, - "level": "no UTF-8" - }, "SAX (string stream) (no encoding check)": { - "us": 1616.2, + "us": 1573.9, "level": "no UTF-8" }, + "SAX (no encoding check)": { + "us": 1589.7, + "level": "no UTF-8" + }, + "SAX (string stream)": { + "us": 1627.3, + "level": "full" + }, "insitu (copy untimed) (no encoding check)": { - "us": 1695.4, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 1766.6, + "us": 1635.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1790.7, + "us": 1681.5, "level": "full" }, - "SAX (default precision)": { - "us": 1861.2, - "level": "full" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 1865.6, + "insitu (copy) (no encoding check)": { + "us": 1754.5, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1895.8, + "us": 1783.5, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 1911.7, - "level": "no UTF-8" + "SAX (default precision)": { + "us": 1840.7, + "level": "full" }, - "Document (no encoding check)": { - "us": 1913.1, + "SAX (raw numbers) (no encoding check)": { + "us": 1885.2, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1993.2, + "us": 1888.5, "level": "full" }, + "Document (no encoding check)": { + "us": 1888.9, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1905.3, + "level": "no UTF-8" + }, "SAX": { - "us": 2082.3, - "level": "full" - }, - "Document": { - "us": 2302.9, + "us": 2003.2, "level": "full" }, "SAX (raw numbers)": { - "us": 2335.0, + "us": 2269.5, + "level": "full" + }, + "Document": { + "us": 2270.0, "level": "full" } } @@ -848,35 +848,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 934.3, + "us": 892.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 934.3, + "us": 892.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1367.1, + "us": 1306.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1367.1, + "us": 1306.2, "level": "full" }, "variants": { "accept": { - "us": 934.3, - "level": "full" - }, - "parse": { - "us": 1354.7, + "us": 892.1, "level": "full" }, "read (reused)": { - "us": 1367.1, + "us": 1306.2, + "level": "full" + }, + "parse": { + "us": 1306.5, "level": "full" } } @@ -884,23 +884,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 4558.8, + "us": 2441.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 4558.8, + "us": 2441.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 4558.8, + "us": 2441.0, "level": "full" }, "parse": { - "us": 11796.5, + "us": 9320.3, "level": "full" } } @@ -908,43 +908,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2199.0, + "us": 2140.1, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2199.0, + "us": 2140.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 3531.0, + "us": 3320.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 3531.0, + "us": 3320.6, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2199.0, + "us": 2140.1, "level": "full" }, "insitu (copy untimed)": { - "us": 3238.7, + "us": 3118.3, "level": "full" }, "insitu (copy)": { - "us": 3282.1, - "level": "full" - }, - "read": { - "us": 3439.1, + "us": 3274.3, "level": "full" }, "read (reused allocator)": { - "us": 3531.0, + "us": 3320.6, + "level": "full" + }, + "read": { + "us": 3332.8, "level": "full" } } @@ -952,31 +952,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3336.7, + "us": 3164.8, "level": "full" }, "best_any": { "variant": "DOM", - "us": 3336.7, + "us": 3164.8, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 3354.2, + "us": 3197.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 3354.2, + "us": 3197.8, "level": "full" }, "variants": { "DOM": { - "us": 3336.7, + "us": 3164.8, "level": "full" }, "DOM (reused)": { - "us": 3354.2, + "us": 3197.8, "level": "full" } } @@ -985,14 +985,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3349.0, + "us": 3216.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3349.0, + "us": 3216.3, "level": "no UTF-8" } } @@ -1000,35 +1000,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 2625.2, + "us": 2532.5, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 2625.2, + "us": 2532.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 2625.2, + "us": 2532.5, "level": "full" }, "generic (double)": { - "us": 10379.7, + "us": 9550.6, "level": "partial" }, "generic (double, strict)": { - "us": 10379.9, + "us": 9824.7, "level": "full" }, "generic": { - "us": 17925.1, + "us": 16688.3, "level": "partial" }, "generic (strict)": { - "us": 18350.8, + "us": 17014.1, "level": "full" } } @@ -1036,47 +1036,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 1676.0, + "us": 1642.5, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 1676.0, + "us": 1642.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5755.4, + "us": 5520.5, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5755.4, + "us": 5520.5, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 1676.0, + "us": 1642.5, "level": "full" }, "parse (numbers: none)": { - "us": 3045.3, - "level": "full" - }, - "SAX": { - "us": 5674.9, + "us": 2931.1, "level": "full" }, "SAX (reused)": { - "us": 5755.4, + "us": 5520.5, + "level": "full" + }, + "SAX": { + "us": 5563.2, "level": "full" }, "parser (reused)": { - "us": 7024.6, + "us": 6647.7, "level": "full" }, "parse": { - "us": 7050.3, + "us": 6759.2, "level": "full" } } @@ -1084,95 +1084,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 3875.2, + "us": 3624.7, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision)", - "us": 3875.2, + "us": 3624.7, "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 11932.5, + "us": 11967.1, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 11932.5, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 11892.6, + "level": "no UTF-8" }, "variants": { "SAX (string stream, default precision)": { - "us": 3875.2, + "us": 3624.7, "level": "full" }, "SAX (string stream, default precision) (no encoding check)": { - "us": 3909.8, - "level": "no UTF-8" - }, - "SAX (default precision) (no encoding check)": { - "us": 4364.7, + "us": 3629.2, "level": "no UTF-8" }, "SAX (default precision)": { - "us": 4522.5, + "us": 4310.0, "level": "full" }, + "SAX (default precision) (no encoding check)": { + "us": 4353.8, + "level": "no UTF-8" + }, "SAX (string stream) (no encoding check)": { - "us": 9361.8, + "us": 9133.5, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 9682.3, + "us": 9150.6, "level": "full" }, "insitu (copy untimed)": { - "us": 10216.5, + "us": 9924.8, "level": "full" }, - "insitu (copy untimed) (no encoding check)": { - "us": 10385.2, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 10498.8, - "level": "no UTF-8" - }, "insitu (copy)": { - "us": 10675.1, + "us": 10078.7, "level": "full" }, + "insitu (copy) (no encoding check)": { + "us": 10263.1, + "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 10263.3, + "level": "no UTF-8" + }, "SAX (raw numbers) (no encoding check)": { - "us": 10929.3, + "us": 10350.4, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 11335.1, - "level": "full" - }, - "SAX": { - "us": 11351.6, + "us": 10403.6, "level": "full" }, "SAX (no encoding check)": { - "us": 11634.9, + "us": 10558.2, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 11932.5, + "SAX": { + "us": 10756.1, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 12244.9, + "us": 11892.6, "level": "no UTF-8" }, + "Document (reused allocator)": { + "us": 11967.1, + "level": "full" + }, "Document": { - "us": 12311.1, + "us": 12030.4, "level": "full" }, "Document (no encoding check)": { - "us": 12870.4, + "us": 12073.4, "level": "no UTF-8" } } @@ -1270,35 +1270,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 34514.4, + "us": 33005.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 34514.4, + "us": 33005.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 42941.5, + "us": 41211.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 42941.5, + "us": 41211.5, "level": "full" }, "variants": { "accept": { - "us": 34514.4, + "us": 33005.7, "level": "full" }, "read (reused)": { - "us": 42941.5, + "us": 41211.5, "level": "full" }, "parse": { - "us": 80105.0, + "us": 76844.0, "level": "full" } } @@ -1306,23 +1306,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 74331.3, + "us": 39141.6, "level": "full" }, "best_any": { "variant": "accept", - "us": 74331.3, + "us": 39141.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 74331.3, + "us": 39141.6, "level": "full" }, "parse": { - "us": 381484.0, + "us": 320505.6, "level": "full" } } @@ -1330,43 +1330,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 130541.4, + "us": 122230.5, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 130541.4, + "us": 122230.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 65147.4, + "us": 61497.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 65147.4, + "us": 61497.2, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 65147.4, + "us": 61497.2, "level": "full" }, "insitu (copy untimed)": { - "us": 93043.0, + "us": 83859.7, "level": "full" }, "insitu (copy)": { - "us": 130541.4, + "us": 122230.5, "level": "full" }, "read": { - "us": 135114.5, + "us": 125363.3, "level": "full" }, "read (raw numbers)": { - "us": 137990.8, + "us": 126182.7, "level": "full" } } @@ -1374,31 +1374,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 120981.8, + "us": 111630.6, "level": "full" }, "best_any": { "variant": "DOM", - "us": 120981.8, + "us": 111630.6, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 48708.1, + "us": 48124.1, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 48708.1, + "us": 48124.1, "level": "full" }, "variants": { "DOM (reused)": { - "us": 48708.1, + "us": 48124.1, "level": "full" }, "DOM": { - "us": 120981.8, + "us": 111630.6, "level": "full" } } @@ -1407,14 +1407,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 98510.6, + "us": 93142.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 98510.6, + "us": 93142.0, "level": "no UTF-8" } } @@ -1422,35 +1422,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 76758.9, + "us": 74805.1, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 76758.9, + "us": 74805.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 76758.9, + "us": 74805.1, + "level": "full" + }, + "generic (double, strict)": { + "us": 211967.0, "level": "full" }, "generic (double)": { - "us": 227348.8, + "us": 219883.4, "level": "partial" }, - "generic (double, strict)": { - "us": 231309.1, - "level": "full" - }, "generic": { - "us": 301949.1, + "us": 290823.8, "level": "partial" }, "generic (strict)": { - "us": 316773.4, + "us": 303622.6, "level": "full" } } @@ -1458,47 +1458,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 62780.9, + "us": 57932.0, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 62780.9, + "us": 57932.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 62485.1, + "us": 58259.0, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 62485.1, + "us": 58259.0, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 62485.1, + "SAX (numbers: none)": { + "us": 57932.0, "level": "full" }, - "SAX (numbers: none)": { - "us": 62780.9, + "SAX (reused)": { + "us": 58259.0, "level": "full" }, "SAX": { - "us": 65009.7, + "us": 60164.9, "level": "full" }, "parser (reused)": { - "us": 127335.3, - "level": "full" - }, - "parse": { - "us": 181460.1, + "us": 119710.1, "level": "full" }, "parse (numbers: none)": { - "us": 185393.2, + "us": 174389.4, + "level": "full" + }, + "parse": { + "us": 179324.5, "level": "full" } } @@ -1506,95 +1506,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 124439.7, + "us": 125139.4, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 115815.1, + "us": 104342.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 188950.8, + "us": 176563.3, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 179981.0, + "us": 168096.0, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 102634.9, + "us": 99871.5, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 104342.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 114703.8, + "us": 108211.0, "level": "full" }, - "SAX (string stream) (no encoding check)": { - "us": 115815.1, - "level": "no UTF-8" - }, "SAX (string stream, default precision) (no encoding check)": { - "us": 119164.9, + "us": 108714.2, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 124439.7, + "us": 125139.4, "level": "full" }, "SAX (string stream)": { - "us": 134338.3, + "us": 126476.1, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 146440.1, + "us": 138968.9, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 157490.4, - "level": "full" - }, "SAX (no encoding check)": { - "us": 161291.9, - "level": "no UTF-8" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 161993.3, + "us": 147387.4, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 164699.2, + "us": 150224.2, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 151806.0, + "level": "full" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 153223.8, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 179981.0, + "us": 168096.0, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 184784.0, + "us": 174467.2, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 188950.8, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 240366.9, + "us": 176563.3, "level": "full" }, "SAX": { - "us": 246653.0, + "us": 232949.6, "level": "full" }, "SAX (default precision)": { - "us": 260697.4, + "us": 236135.2, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 241826.8, "level": "full" }, "Document": { - "us": 273829.6, + "us": 255619.9, "level": "full" } } @@ -1728,23 +1728,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 3.1, + "us": 1.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 3.1, + "us": 1.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 3.1, + "us": 1.3, "level": "full" }, "parse": { - "us": 18.1, + "us": 14.7, "level": "full" } } @@ -1860,19 +1860,19 @@ "level": "full" }, "generic (double)": { - "us": 8.1, + "us": 7.9, "level": "partial" }, "generic (double, strict)": { - "us": 8.5, + "us": 7.9, "level": "full" }, "generic": { - "us": 11.4, + "us": 11.1, "level": "partial" }, "generic (strict)": { - "us": 11.4, + "us": 11.1, "level": "full" } } @@ -1912,7 +1912,7 @@ "level": "full" }, "parser (reused)": { - "us": 5.8, + "us": 5.7, "level": "full" }, "parse": { @@ -1932,7 +1932,7 @@ "level": "full" }, "best_any": { - "variant": "SAX (string stream, default precision) (no encoding check)", + "variant": "SAX (string stream) (no encoding check)", "us": 3.2, "level": "no UTF-8" }, @@ -1951,7 +1951,7 @@ "us": 3.2, "level": "no UTF-8" }, - "SAX (string stream, default precision) (no encoding check)": { + "SAX (string stream) (no encoding check)": { "us": 3.2, "level": "no UTF-8" }, @@ -1959,7 +1959,7 @@ "us": 3.3, "level": "no UTF-8" }, - "SAX (string stream) (no encoding check)": { + "SAX (string stream, default precision) (no encoding check)": { "us": 3.3, "level": "no UTF-8" }, @@ -1971,24 +1971,24 @@ "us": 4.9, "level": "full" }, - "SAX (string stream, default precision)": { - "us": 5.3, - "level": "full" - }, "SAX (string stream)": { "us": 5.4, "level": "full" }, + "SAX (string stream, default precision)": { + "us": 5.4, + "level": "full" + }, "SAX (no encoding check)": { - "us": 6.3, + "us": 6.2, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 6.3, + "us": 6.2, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 6.7, + "us": 6.6, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { @@ -2003,6 +2003,10 @@ "us": 7.5, "level": "full" }, + "SAX": { + "us": 10.2, + "level": "full" + }, "SAX (default precision)": { "us": 10.2, "level": "full" @@ -2011,12 +2015,8 @@ "us": 10.5, "level": "full" }, - "SAX": { - "us": 10.6, - "level": "full" - }, "Document": { - "us": 11.5, + "us": 11.3, "level": "full" } } @@ -2114,35 +2114,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 212.4, + "us": 221.2, "level": "full" }, "best_any": { "variant": "accept", - "us": 212.4, + "us": 221.2, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 259.4, + "us": 253.7, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 259.4, + "us": 253.7, "level": "full" }, "variants": { "accept": { - "us": 212.4, + "us": 221.2, "level": "full" }, "read (reused)": { - "us": 259.4, + "us": 253.7, "level": "full" }, "parse": { - "us": 265.6, + "us": 261.7, "level": "full" } } @@ -2150,23 +2150,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 546.2, + "us": 250.0, "level": "full" }, "best_any": { "variant": "accept", - "us": 546.2, + "us": 250.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 546.2, + "us": 250.0, "level": "full" }, "parse": { - "us": 3115.1, + "us": 3100.2, "level": "full" } } @@ -2174,43 +2174,43 @@ "yyjson": { "best": { "variant": "read", - "us": 321.6, + "us": 325.3, "level": "full" }, "best_any": { "variant": "read", - "us": 321.6, + "us": 325.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 320.4, + "us": 336.1, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 320.4, + "us": 336.1, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 286.7, - "level": "full" - }, - "read (reused allocator)": { - "us": 320.4, + "us": 293.0, "level": "full" }, "read": { - "us": 321.6, + "us": 325.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 336.1, "level": "full" }, "insitu (copy)": { - "us": 321.8, + "us": 340.4, "level": "full" }, "read (raw numbers)": { - "us": 326.2, + "us": 352.7, "level": "full" } } @@ -2218,31 +2218,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 281.4, + "us": 304.0, "level": "full" }, "best_any": { "variant": "DOM", - "us": 281.4, + "us": 304.0, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 280.4, + "us": 286.3, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 280.4, + "us": 286.3, "level": "full" }, "variants": { "DOM (reused)": { - "us": 280.4, + "us": 286.3, "level": "full" }, "DOM": { - "us": 281.4, + "us": 304.0, "level": "full" } } @@ -2251,14 +2251,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 297.2, + "us": 319.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 297.2, + "us": 319.3, "level": "no UTF-8" } } @@ -2266,83 +2266,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 509.1, + "us": 509.3, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 509.1, + "us": 509.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 509.1, + "us": 509.3, + "level": "full" + }, + "generic (double, strict)": { + "us": 2021.5, "level": "full" }, "generic (double)": { - "us": 2016.1, - "level": "partial" - }, - "generic (double, strict)": { - "us": 2035.9, - "level": "full" - }, - "generic": { - "us": 2570.7, + "us": 2165.0, "level": "partial" }, "generic (strict)": { - "us": 2581.7, + "us": 2654.7, "level": "full" + }, + "generic": { + "us": 2760.2, + "level": "partial" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 545.9, + "us": 553.7, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 545.9, + "us": 553.7, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 554.5, + "us": 551.2, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 554.5, + "us": 551.2, "level": "full" }, "variants": { + "SAX (reused)": { + "us": 551.2, + "level": "full" + }, "SAX (numbers: none)": { - "us": 545.9, + "us": 553.7, "level": "full" }, "SAX": { - "us": 554.2, - "level": "full" - }, - "SAX (reused)": { - "us": 554.5, - "level": "full" - }, - "parse (numbers: none)": { - "us": 1165.7, + "us": 564.2, "level": "full" }, "parser (reused)": { - "us": 1173.9, + "us": 1185.7, + "level": "full" + }, + "parse (numbers: none)": { + "us": 1257.9, "level": "full" }, "parse": { - "us": 1178.1, + "us": 1313.5, "level": "full" } } @@ -2350,95 +2350,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 855.8, + "us": 863.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 767.8, + "us": 813.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1436.1, + "us": 1486.3, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1310.4, + "us": 1400.7, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 736.1, + "us": 784.9, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 767.8, + "us": 813.1, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 825.3, - "level": "full" - }, "insitu (copy)": { - "us": 855.8, + "us": 863.3, "level": "full" }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 860.7, - "level": "no UTF-8" + "insitu (copy untimed)": { + "us": 884.3, + "level": "full" }, "SAX (string stream) (no encoding check)": { - "us": 863.5, + "us": 915.3, + "level": "no UTF-8" + }, + "SAX (string stream, default precision) (no encoding check)": { + "us": 928.4, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 1010.5, + "us": 1105.9, "level": "full" }, "SAX (string stream)": { - "us": 1015.4, + "us": 1112.1, "level": "full" }, - "SAX (default precision) (no encoding check)": { - "us": 1147.4, + "SAX (no encoding check)": { + "us": 1208.6, "level": "no UTF-8" }, - "SAX (no encoding check)": { - "us": 1162.1, + "SAX (default precision) (no encoding check)": { + "us": 1224.9, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1204.9, + "us": 1234.3, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1310.4, + "us": 1400.7, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1327.2, + "us": 1422.7, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1436.1, + "us": 1486.3, "level": "full" }, "SAX (default precision)": { - "us": 1828.7, + "us": 1918.6, "level": "full" }, "SAX": { - "us": 1837.2, - "level": "full" - }, - "SAX (raw numbers)": { - "us": 1881.4, + "us": 1957.9, "level": "full" }, "Document": { - "us": 2015.1, + "us": 2041.4, + "level": "full" + }, + "SAX (raw numbers)": { + "us": 2059.5, "level": "full" } } @@ -2536,35 +2536,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 302.9, + "us": 308.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 302.9, + "us": 308.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 514.3, + "us": 511.0, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 514.3, + "us": 511.0, "level": "full" }, "variants": { "accept": { - "us": 302.9, + "us": 308.9, "level": "full" }, "read (reused)": { - "us": 514.3, + "us": 511.0, "level": "full" }, "parse": { - "us": 514.7, + "us": 511.7, "level": "full" } } @@ -2572,67 +2572,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1087.2, + "us": 451.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 1087.2, + "us": 451.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1087.2, + "us": 451.3, "level": "full" }, "parse": { - "us": 4796.0, + "us": 3974.1, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 490.0, + "variant": "insitu (copy)", + "us": 489.1, "level": "full" }, "best_any": { - "variant": "read", - "us": 490.0, + "variant": "insitu (copy)", + "us": 489.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 488.4, + "us": 489.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 488.4, + "us": 489.0, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 454.8, + "us": 453.3, "level": "full" }, "read (reused allocator)": { - "us": 488.4, - "level": "full" - }, - "read": { - "us": 490.0, + "us": 489.0, "level": "full" }, "insitu (copy)": { - "us": 490.7, + "us": 489.1, + "level": "full" + }, + "read": { + "us": 493.9, "level": "full" }, "read (raw numbers)": { - "us": 504.2, + "us": 504.4, "level": "full" } } @@ -2640,31 +2640,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 534.4, + "us": 534.5, "level": "full" }, "best_any": { "variant": "DOM", - "us": 534.4, + "us": 534.5, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 535.9, + "us": 535.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 535.9, + "us": 535.2, "level": "full" }, "variants": { "DOM": { - "us": 534.4, + "us": 534.5, "level": "full" }, "DOM (reused)": { - "us": 535.9, + "us": 535.2, "level": "full" } } @@ -2673,14 +2673,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 600.8, + "us": 601.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 600.8, + "us": 601.7, "level": "no UTF-8" } } @@ -2688,35 +2688,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 751.0, + "us": 757.9, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 751.0, + "us": 757.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 751.0, + "us": 757.9, + "level": "full" + }, + "generic (double, strict)": { + "us": 2937.6, "level": "full" }, "generic (double)": { - "us": 2950.5, + "us": 2947.6, "level": "partial" }, - "generic (double, strict)": { - "us": 3010.4, - "level": "full" - }, "generic": { - "us": 4339.4, + "us": 4347.6, "level": "partial" }, "generic (strict)": { - "us": 4381.5, + "us": 4359.3, "level": "full" } } @@ -2724,47 +2724,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 561.6, + "us": 561.4, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 561.6, + "us": 561.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 608.6, + "us": 609.4, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 608.6, + "us": 609.4, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 561.6, + "us": 561.4, "level": "full" }, "SAX": { - "us": 608.4, + "us": 608.8, "level": "full" }, "SAX (reused)": { - "us": 608.6, + "us": 609.4, "level": "full" }, "parse (numbers: none)": { - "us": 1264.8, + "us": 1294.2, "level": "full" }, "parser (reused)": { - "us": 1342.7, + "us": 1347.3, "level": "full" }, "parse": { - "us": 1346.4, + "us": 1374.0, "level": "full" } } @@ -2772,95 +2772,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 987.4, + "us": 1019.5, "level": "full" }, "best_any": { "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 984.8, + "us": 1008.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1681.6, + "us": 1687.3, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 1681.6, + "us": 1687.3, "level": "full" }, "variants": { "SAX (string stream, default precision) (no encoding check)": { - "us": 984.8, + "us": 1008.1, "level": "no UTF-8" }, "SAX (string stream, default precision)": { - "us": 987.4, - "level": "full" - }, - "SAX (string stream)": { - "us": 1105.3, + "us": 1019.5, "level": "full" }, "SAX (string stream) (no encoding check)": { - "us": 1106.7, + "us": 1100.5, "level": "no UTF-8" }, + "SAX (string stream)": { + "us": 1108.0, + "level": "full" + }, "SAX (default precision) (no encoding check)": { - "us": 1141.4, + "us": 1145.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1144.1, + "us": 1154.5, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 1176.4, + "us": 1180.2, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1180.5, + "us": 1186.9, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 1210.5, + "us": 1221.7, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1320.6, - "level": "no UTF-8" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 1558.3, + "us": 1292.2, "level": "no UTF-8" }, "SAX (default precision)": { - "us": 1561.2, + "us": 1549.9, "level": "full" }, + "SAX (raw numbers) (no encoding check)": { + "us": 1580.0, + "level": "no UTF-8" + }, "Document (no encoding check)": { - "us": 1657.2, + "us": 1678.2, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1681.6, + "us": 1687.3, "level": "full" }, "SAX": { - "us": 1701.5, + "us": 1699.7, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1738.6, + "us": 1721.2, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 1990.6, + "us": 1999.6, "level": "full" }, "Document": { - "us": 2109.5, + "us": 2109.1, "level": "full" } } @@ -2960,35 +2960,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 397.9, + "us": 384.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 397.9, + "us": 384.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 387.6, + "us": 375.7, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 387.6, + "us": 375.7, "level": "full" }, "variants": { "read (reused)": { - "us": 387.6, + "us": 375.7, "level": "full" }, "parse": { - "us": 397.9, + "us": 384.1, "level": "full" }, "parse_copy": { - "us": 428.2, + "us": 421.0, "level": "full" } } @@ -2996,63 +2996,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 813.7, + "us": 532.8, "level": "full" }, "best_any": { "variant": "sax", - "us": 813.7, + "us": 532.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 813.7, + "us": 532.8, "level": "full" }, "parse": { - "us": 3499.0, + "us": 3091.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 444.7, + "variant": "read", + "us": 445.0, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 444.7, + "variant": "read", + "us": 445.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 446.2, + "us": 443.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 446.2, + "us": 443.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 415.0, - "level": "full" - }, - "insitu (copy)": { - "us": 444.7, + "us": 409.9, "level": "full" }, "read (reused allocator)": { - "us": 446.2, + "us": 443.3, "level": "full" }, "read": { - "us": 446.4, + "us": 445.0, + "level": "full" + }, + "insitu (copy)": { + "us": 447.3, "level": "full" } } @@ -3060,39 +3060,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 347.8, + "us": 343.9, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 347.8, + "us": 343.9, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 346.2, + "us": 344.3, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 346.2, + "us": 344.3, "level": "full" }, "variants": { - "On-Demand (reused)": { - "us": 346.2, - "level": "full" - }, "On-Demand": { - "us": 347.8, + "us": 343.9, "level": "full" }, - "DOM (reused)": { - "us": 376.6, + "On-Demand (reused)": { + "us": 344.3, "level": "full" }, "DOM": { - "us": 379.1, + "us": 377.7, + "level": "full" + }, + "DOM (reused)": { + "us": 378.0, "level": "full" } } @@ -3101,14 +3101,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 455.8, + "us": 457.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 455.8, + "us": 457.6, "level": "no UTF-8" } } @@ -3116,35 +3116,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2482.6, + "us": 2317.3, "level": "full" }, "best_any": { - "variant": "generic (double)", - "us": 2447.6, - "level": "partial" + "variant": "generic (double, strict)", + "us": 2317.3, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double)": { - "us": 2447.6, - "level": "partial" - }, "generic (double, strict)": { - "us": 2482.6, + "us": 2317.3, "level": "full" }, - "generic (strict)": { - "us": 2905.9, - "level": "full" + "generic (double)": { + "us": 2322.3, + "level": "partial" }, "generic": { - "us": 2908.2, + "us": 2846.0, "level": "partial" }, + "generic (strict)": { + "us": 2870.8, + "level": "full" + }, "lazy_json": { - "us": 3130.7, + "us": 3096.8, "level": "partial" } }, @@ -3155,39 +3155,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 698.9, + "us": 690.5, "level": "full" }, "best_any": { "variant": "SAX", - "us": 698.9, + "us": 690.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 699.0, + "us": 690.6, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 699.0, + "us": 690.6, "level": "full" }, "variants": { "SAX": { - "us": 698.9, + "us": 690.5, "level": "full" }, "SAX (reused)": { - "us": 699.0, + "us": 690.6, "level": "full" }, "parser (reused)": { - "us": 1341.5, + "us": 1351.2, "level": "full" }, "parse": { - "us": 1350.5, + "us": 1361.3, "level": "full" } } @@ -3195,71 +3195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1258.1, + "us": 1256.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1101.1, + "us": 1099.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1576.2, + "us": 1573.8, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1447.8, + "us": 1450.9, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1063.0, + "us": 1060.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1101.1, + "us": 1099.0, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1172.5, + "us": 1147.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1221.4, + "us": 1219.6, "level": "full" }, "insitu (copy)": { - "us": 1258.1, + "us": 1256.1, "level": "full" }, "SAX (no encoding check)": { - "us": 1280.9, + "us": 1284.2, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 1382.1, + "us": 1401.8, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1447.8, + "us": 1450.9, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1453.6, + "us": 1465.1, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1576.2, + "us": 1573.8, "level": "full" }, "SAX": { - "us": 1988.6, + "us": 1987.1, "level": "full" }, "Document": { - "us": 2166.2, + "us": 2143.1, "level": "full" } } @@ -3353,35 +3353,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 972.5, + "us": 1066.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 972.5, + "us": 1066.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 958.6, + "us": 1061.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 958.6, + "us": 1061.8, "level": "full" }, "variants": { "read (reused)": { - "us": 958.6, + "us": 1061.8, "level": "full" }, "parse": { - "us": 972.5, + "us": 1066.3, "level": "full" }, "parse_copy": { - "us": 1118.3, + "us": 1182.2, "level": "full" } } @@ -3389,23 +3389,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1665.5, + "us": 1112.9, "level": "full" }, "best_any": { "variant": "sax", - "us": 1665.5, + "us": 1112.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1665.5, + "us": 1112.9, "level": "full" }, "parse": { - "us": 5466.4, + "us": 4769.7, "level": "full" } } @@ -3413,39 +3413,39 @@ "yyjson": { "best": { "variant": "read", - "us": 1097.5, + "us": 1093.3, "level": "full" }, "best_any": { "variant": "read", - "us": 1097.5, + "us": 1093.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1113.4, + "us": 1107.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1113.4, + "us": 1107.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 986.3, + "us": 984.2, "level": "full" }, "read": { - "us": 1097.5, + "us": 1093.3, "level": "full" }, "insitu (copy)": { - "us": 1098.8, + "us": 1096.1, "level": "full" }, "read (reused allocator)": { - "us": 1113.4, + "us": 1107.5, "level": "full" } } @@ -3453,39 +3453,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 804.7, + "us": 809.2, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 804.7, + "us": 809.2, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 803.2, + "us": 802.8, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 803.2, + "us": 802.8, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 803.2, + "us": 802.8, "level": "full" }, "On-Demand": { - "us": 804.7, + "us": 809.2, "level": "full" }, "DOM (reused)": { - "us": 900.1, + "us": 904.1, "level": "full" }, "DOM": { - "us": 906.4, + "us": 908.1, "level": "full" } } @@ -3494,14 +3494,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1114.9, + "us": 1120.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1114.9, + "us": 1120.2, "level": "no UTF-8" } } @@ -3509,35 +3509,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 4413.4, + "us": 4068.4, "level": "full" }, "best_any": { - "variant": "generic (double, strict)", - "us": 4413.4, - "level": "full" + "variant": "generic (double)", + "us": 4006.4, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double, strict)": { - "us": 4413.4, - "level": "full" - }, "generic (double)": { - "us": 4452.0, + "us": 4006.4, "level": "partial" }, + "generic (double, strict)": { + "us": 4068.4, + "level": "full" + }, "generic (strict)": { - "us": 5334.6, + "us": 5338.7, "level": "full" }, "generic": { - "us": 5369.4, + "us": 5464.8, "level": "partial" }, "lazy_json": { - "us": 14119.5, + "us": 13799.4, "level": "partial" } }, @@ -3548,39 +3548,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 957.0, + "us": 956.3, "level": "full" }, "best_any": { "variant": "SAX", - "us": 957.0, + "us": 956.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 958.1, + "us": 959.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 958.1, + "us": 959.8, "level": "full" }, "variants": { "SAX": { - "us": 957.0, + "us": 956.3, "level": "full" }, "SAX (reused)": { - "us": 958.1, - "level": "full" - }, - "parser (reused)": { - "us": 1788.9, + "us": 959.8, "level": "full" }, "parse": { - "us": 1789.0, + "us": 1781.7, + "level": "full" + }, + "parser (reused)": { + "us": 1784.8, "level": "full" } } @@ -3588,71 +3588,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 1717.2, + "us": 1713.0, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 1635.2, + "us": 1635.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2062.7, + "us": 2040.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 2062.7, + "us": 2040.6, "level": "full" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 1635.2, + "us": 1635.3, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1688.3, + "us": 1707.2, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 1717.2, + "us": 1713.0, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 1798.7, + "us": 1791.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1837.9, + "us": 1830.0, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 1906.9, + "us": 1949.1, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1948.8, + "us": 1983.5, + "level": "full" + }, + "Document (reused allocator)": { + "us": 2040.6, "level": "full" }, "Document (no encoding check)": { - "us": 2013.3, + "us": 2043.0, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 2062.7, - "level": "full" - }, "Document (reused allocator) (no encoding check)": { - "us": 2068.0, + "us": 2080.7, "level": "no UTF-8" }, "SAX": { - "us": 2112.1, + "us": 2110.0, "level": "full" }, "Document": { - "us": 2426.5, + "us": 2418.1, "level": "full" } } @@ -3746,35 +3746,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 3500.6, + "us": 3525.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 3500.6, + "us": 3525.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 3522.2, + "us": 3524.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 3522.2, + "us": 3524.3, "level": "full" }, "variants": { - "parse": { - "us": 3500.6, + "read (reused)": { + "us": 3524.3, "level": "full" }, - "read (reused)": { - "us": 3522.2, + "parse": { + "us": 3525.9, "level": "full" }, "parse_copy": { - "us": 3695.6, + "us": 3724.5, "level": "full" } } @@ -3782,63 +3782,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 5690.0, + "us": 4134.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 5690.0, + "us": 4134.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 5690.0, + "us": 4134.3, "level": "full" }, "parse": { - "us": 12161.6, + "us": 10141.9, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 4034.8, + "variant": "read", + "us": 3948.5, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 4034.8, + "variant": "read", + "us": 3948.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 3945.9, + "us": 3952.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 3945.9, + "us": 3952.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 3817.6, - "level": "full" - }, - "read (reused allocator)": { - "us": 3945.9, - "level": "full" - }, - "insitu (copy)": { - "us": 4034.8, + "us": 3885.5, "level": "full" }, "read": { - "us": 4050.5, + "us": 3948.5, + "level": "full" + }, + "read (reused allocator)": { + "us": 3952.3, + "level": "full" + }, + "insitu (copy)": { + "us": 4037.3, "level": "full" } } @@ -3846,39 +3846,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 3451.5, + "us": 3404.6, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 3451.5, + "us": 3404.6, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 3366.6, + "us": 3389.0, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 3366.6, + "us": 3389.0, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 3366.6, + "us": 3389.0, "level": "full" }, "On-Demand": { - "us": 3451.5, - "level": "full" - }, - "DOM (reused)": { - "us": 4036.1, + "us": 3404.6, "level": "full" }, "DOM": { - "us": 4157.9, + "us": 4044.4, + "level": "full" + }, + "DOM (reused)": { + "us": 4071.1, "level": "full" } } @@ -3887,14 +3887,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3979.5, + "us": 3886.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3979.5, + "us": 3886.9, "level": "no UTF-8" } } @@ -3902,35 +3902,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 10531.8, + "us": 10332.6, "level": "full" }, "best_any": { "variant": "generic (double)", - "us": 10222.4, + "us": 10066.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double)": { - "us": 10222.4, + "us": 10066.4, "level": "partial" }, "generic (double, strict)": { - "us": 10531.8, + "us": 10332.6, "level": "full" }, "generic (strict)": { - "us": 17647.7, + "us": 17208.0, "level": "full" }, "generic": { - "us": 18120.1, + "us": 17584.1, "level": "partial" }, "lazy_json": { - "us": 20661.0, + "us": 19997.2, "level": "partial" } }, @@ -3941,39 +3941,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 5835.4, + "us": 5762.4, "level": "full" }, "best_any": { "variant": "SAX", - "us": 5835.4, + "us": 5762.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5781.2, + "us": 5685.5, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5781.2, + "us": 5685.5, "level": "full" }, "variants": { "SAX (reused)": { - "us": 5781.2, + "us": 5685.5, "level": "full" }, "SAX": { - "us": 5835.4, - "level": "full" - }, - "parse": { - "us": 7225.8, + "us": 5762.4, "level": "full" }, "parser (reused)": { - "us": 7246.8, + "us": 7222.2, + "level": "full" + }, + "parse": { + "us": 7287.6, "level": "full" } } @@ -3981,72 +3981,72 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 9435.0, + "us": 9547.2, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 9368.2, + "us": 9105.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12220.1, + "us": 12912.7, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 12220.1, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 12341.9, + "level": "no UTF-8" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 9368.2, + "us": 9105.1, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 9435.0, + "us": 9547.2, "level": "full" }, "insitu (copy untimed)": { - "us": 10294.7, + "us": 10347.0, "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 10347.7, - "level": "no UTF-8" - }, "insitu (copy)": { - "us": 10515.0, + "us": 10516.5, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 10555.8, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 11200.6, + "us": 10716.3, "level": "no UTF-8" }, "SAX": { - "us": 11375.9, + "us": 11197.3, "level": "full" }, - "Document (reused allocator)": { - "us": 12220.1, - "level": "full" - }, - "Document (reused allocator) (no encoding check)": { - "us": 12472.4, + "insitu (copy) (no encoding check)": { + "us": 11235.3, "level": "no UTF-8" }, - "Document (no encoding check)": { - "us": 12552.4, + "SAX (no encoding check)": { + "us": 11594.7, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 12341.9, "level": "no UTF-8" }, "Document": { - "us": 12602.4, + "us": 12430.2, "level": "full" + }, + "Document (reused allocator)": { + "us": 12912.7, + "level": "full" + }, + "Document (no encoding check)": { + "us": 12968.6, + "level": "no UTF-8" } } }, @@ -4139,35 +4139,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 89756.2, + "us": 88527.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 89756.2, + "us": 88527.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 50992.3, + "us": 50998.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 50992.3, + "us": 50998.1, "level": "full" }, "variants": { "read (reused)": { - "us": 50992.3, + "us": 50998.1, "level": "full" }, "parse": { - "us": 89756.2, + "us": 88527.1, "level": "full" }, "parse_copy": { - "us": 132156.3, + "us": 128943.0, "level": "full" } } @@ -4175,23 +4175,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 97414.0, + "us": 66402.6, "level": "full" }, "best_any": { "variant": "sax", - "us": 97414.0, + "us": 66402.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 97414.0, + "us": 66402.6, "level": "full" }, "parse": { - "us": 405297.9, + "us": 360457.1, "level": "full" } } @@ -4199,39 +4199,39 @@ "yyjson": { "best": { "variant": "read", - "us": 138743.5, + "us": 133860.1, "level": "full" }, "best_any": { "variant": "read", - "us": 138743.5, + "us": 133860.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 69157.4, + "us": 70525.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 69157.4, + "us": 70525.2, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 69157.4, + "us": 70525.2, "level": "full" }, "insitu (copy untimed)": { - "us": 97585.6, + "us": 95873.4, "level": "full" }, "read": { - "us": 138743.5, + "us": 133860.1, "level": "full" }, "insitu (copy)": { - "us": 142125.6, + "us": 138598.6, "level": "full" } } @@ -4239,39 +4239,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 92768.8, + "us": 90960.3, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 92768.8, + "us": 90960.3, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 49571.5, + "us": 48351.2, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 49571.5, + "us": 48351.2, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 49571.5, + "us": 48351.2, "level": "full" }, "DOM (reused)": { - "us": 58328.5, + "us": 61621.7, "level": "full" }, "On-Demand": { - "us": 92768.8, + "us": 90960.3, "level": "full" }, "DOM": { - "us": 131126.2, + "us": 130125.6, "level": "full" } } @@ -4280,14 +4280,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 105080.8, + "us": 107493.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 105080.8, + "us": 107493.8, "level": "no UTF-8" } } @@ -4295,36 +4295,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 231505.3, + "us": 237722.9, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 225437.9, + "us": 234996.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 225437.9, + "us": 234996.9, "level": "partial" }, "generic (double, strict)": { - "us": 231505.3, + "us": 237722.9, "level": "full" }, "generic (double)": { - "us": 233548.0, + "us": 245308.9, + "level": "partial" + }, + "generic": { + "us": 329290.9, "level": "partial" }, "generic (strict)": { - "us": 314867.5, + "us": 335906.6, "level": "full" - }, - "generic": { - "us": 316327.7, - "level": "partial" } }, "excluded": { @@ -4334,39 +4334,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 59655.5, + "us": 62051.4, "level": "full" }, "best_any": { "variant": "SAX", - "us": 59655.5, + "us": 62051.4, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 59184.3, + "us": 58368.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 59184.3, + "us": 58368.8, "level": "full" }, "variants": { "SAX (reused)": { - "us": 59184.3, + "us": 58368.8, "level": "full" }, "SAX": { - "us": 59655.5, + "us": 62051.4, "level": "full" }, "parser (reused)": { - "us": 132393.0, + "us": 131602.2, "level": "full" }, "parse": { - "us": 192260.6, + "us": 191766.6, "level": "full" } } @@ -4374,71 +4374,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 128415.3, + "us": 127564.5, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 112449.5, + "us": 113500.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 198339.7, + "us": 188981.7, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator) (no encoding check)", - "us": 183038.2, - "level": "no UTF-8" + "variant": "Document (reused allocator)", + "us": 188981.7, + "level": "full" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 105844.6, + "us": 105965.2, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 113500.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 112158.3, + "us": 119786.9, "level": "full" }, - "SAX (string stream) (no encoding check)": { - "us": 112449.5, - "level": "no UTF-8" - }, "SAX (string stream)": { - "us": 128415.3, + "us": 127564.5, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 152055.8, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 154426.5, + "us": 150512.5, "level": "no UTF-8" }, "insitu (copy)": { - "us": 158907.5, + "us": 157298.7, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 183038.2, + "SAX (no encoding check)": { + "us": 158073.6, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 185367.0, + "us": 186955.4, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 198339.7, + "us": 188981.7, "level": "full" }, + "Document (reused allocator) (no encoding check)": { + "us": 189518.2, + "level": "no UTF-8" + }, "SAX": { - "us": 244103.0, + "us": 238688.1, "level": "full" }, "Document": { - "us": 264334.8, + "us": 271744.3, "level": "full" } } @@ -4532,12 +4532,12 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_reused": { @@ -4551,16 +4551,16 @@ "level": "full" }, "variants": { + "parse": { + "us": 1.9, + "level": "full" + }, "read (reused)": { "us": 1.9, "level": "full" }, - "parse": { - "us": 2.0, - "level": "full" - }, "parse_copy": { - "us": 2.1, + "us": 2.0, "level": "full" } } @@ -4568,23 +4568,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 4.0, + "us": 2.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 4.0, + "us": 2.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 4.0, + "us": 2.3, "level": "full" }, "parse": { - "us": 18.8, + "us": 14.9, "level": "full" } } @@ -4611,6 +4611,10 @@ "level": "full" }, "variants": { + "insitu (copy untimed)": { + "us": 1.8, + "level": "full" + }, "read (reused allocator)": { "us": 1.8, "level": "full" @@ -4622,10 +4626,6 @@ "insitu (copy)": { "us": 1.9, "level": "full" - }, - "insitu (copy untimed)": { - "us": 1.9, - "level": "full" } } }, @@ -4664,7 +4664,7 @@ "level": "full" }, "DOM": { - "us": 2.2, + "us": 2.1, "level": "full" } } @@ -4688,19 +4688,19 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 8.5, + "us": 8.3, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 6.4, + "us": 6.3, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 6.4, + "us": 6.3, "level": "partial" }, "generic (double)": { @@ -4708,15 +4708,15 @@ "level": "partial" }, "generic (double, strict)": { - "us": 8.5, + "us": 8.3, "level": "full" }, "generic": { - "us": 11.5, + "us": 11.3, "level": "partial" }, "generic (strict)": { - "us": 11.6, + "us": 11.4, "level": "full" } }, @@ -4727,39 +4727,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 3.0, + "us": 2.9, "level": "full" }, "best_any": { "variant": "SAX", - "us": 3.0, + "us": 2.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 3.0, + "us": 2.9, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 3.0, + "us": 2.9, "level": "full" }, "variants": { "SAX": { - "us": 3.0, + "us": 2.9, "level": "full" }, "SAX (reused)": { - "us": 3.0, + "us": 2.9, "level": "full" }, "parser (reused)": { - "us": 6.1, + "us": 6.0, "level": "full" }, "parse": { - "us": 6.2, + "us": 6.3, "level": "full" } } @@ -4767,12 +4767,12 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 5.4, + "us": 5.1, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 3.5, + "us": 3.4, "level": "no UTF-8" }, "best_reused": { @@ -4782,56 +4782,56 @@ }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 7.4, + "us": 7.2, "level": "no UTF-8" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 3.5, + "us": 3.4, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 3.6, + "us": 3.5, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 3.7, + "us": 3.6, "level": "no UTF-8" }, + "insitu (copy)": { + "us": 5.1, + "level": "full" + }, "insitu (copy untimed)": { "us": 5.1, "level": "full" }, - "insitu (copy)": { - "us": 5.4, - "level": "full" - }, "SAX (string stream)": { - "us": 5.8, + "us": 5.7, "level": "full" }, "SAX (no encoding check)": { - "us": 6.8, + "us": 6.5, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 7.4, + "us": 7.2, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 7.7, "level": "no UTF-8" }, "Document (reused allocator)": { "us": 7.8, "level": "full" }, - "Document (no encoding check)": { - "us": 7.9, - "level": "no UTF-8" - }, "SAX": { - "us": 10.7, + "us": 10.4, "level": "full" }, "Document": { - "us": 11.9, + "us": 11.6, "level": "full" } } @@ -4925,35 +4925,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 337.3, + "us": 330.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 337.3, + "us": 330.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 331.0, + "us": 326.0, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 331.0, + "us": 326.0, "level": "full" }, "variants": { "read (reused)": { - "us": 331.0, + "us": 326.0, "level": "full" }, "parse": { - "us": 337.3, + "us": 330.4, "level": "full" }, "parse_copy": { - "us": 365.5, + "us": 361.1, "level": "full" } } @@ -4961,63 +4961,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 686.3, + "us": 402.0, "level": "full" }, "best_any": { "variant": "sax", - "us": 686.3, + "us": 402.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 686.3, + "us": 402.0, "level": "full" }, "parse": { - "us": 3289.8, + "us": 2949.9, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 375.0, + "variant": "read", + "us": 372.3, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 375.0, + "variant": "read", + "us": 372.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 373.5, + "us": 373.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 373.5, + "us": 373.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 343.6, - "level": "full" - }, - "read (reused allocator)": { - "us": 373.5, - "level": "full" - }, - "insitu (copy)": { - "us": 375.0, + "us": 346.6, "level": "full" }, "read": { - "us": 376.2, + "us": 372.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 373.6, + "level": "full" + }, + "insitu (copy)": { + "us": 375.7, "level": "full" } } @@ -5025,39 +5025,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 329.8, + "us": 331.1, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 329.8, + "us": 331.1, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 325.8, + "us": 329.2, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 325.8, + "us": 329.2, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 325.8, + "us": 329.2, "level": "full" }, "On-Demand": { - "us": 329.8, + "us": 331.1, "level": "full" }, "DOM (reused)": { - "us": 359.4, + "us": 361.8, "level": "full" }, "DOM": { - "us": 362.3, + "us": 362.2, "level": "full" } } @@ -5066,14 +5066,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 353.7, + "us": 356.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 353.7, + "us": 356.7, "level": "no UTF-8" } } @@ -5081,35 +5081,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2103.7, + "us": 2090.9, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 1815.3, + "us": 1834.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 1815.3, - "level": "partial" - }, - "generic (double)": { - "us": 2083.1, + "us": 1834.1, "level": "partial" }, "generic (double, strict)": { - "us": 2103.7, + "us": 2090.9, "level": "full" }, + "generic (double)": { + "us": 2100.1, + "level": "partial" + }, "generic": { - "us": 2629.8, + "us": 2691.1, "level": "partial" }, "generic (strict)": { - "us": 2652.7, + "us": 2724.3, "level": "full" } }, @@ -5120,39 +5120,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 568.0, + "us": 562.2, "level": "full" }, "best_any": { "variant": "SAX", - "us": 568.0, + "us": 562.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 567.7, + "us": 561.4, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 567.7, + "us": 561.4, "level": "full" }, "variants": { "SAX (reused)": { - "us": 567.7, + "us": 561.4, "level": "full" }, "SAX": { - "us": 568.0, + "us": 562.2, "level": "full" }, "parser (reused)": { - "us": 1234.9, + "us": 1242.8, "level": "full" }, "parse": { - "us": 1242.5, + "us": 1247.9, "level": "full" } } @@ -5160,71 +5160,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 901.4, + "us": 911.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 820.2, + "us": 819.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1497.0, + "us": 1501.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1365.0, + "us": 1363.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 791.1, + "us": 789.9, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 820.2, + "us": 819.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 871.8, - "level": "full" - }, - "insitu (copy)": { - "us": 901.4, + "us": 878.2, "level": "full" }, "SAX (string stream) (no encoding check)": { - "us": 901.4, + "us": 906.2, "level": "no UTF-8" }, + "insitu (copy)": { + "us": 911.8, + "level": "full" + }, "SAX (string stream)": { - "us": 1063.2, + "us": 1083.6, "level": "full" }, "SAX (no encoding check)": { - "us": 1197.5, + "us": 1202.2, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1365.0, + "us": 1363.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1385.7, + "us": 1391.3, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1497.0, + "us": 1501.6, "level": "full" }, "SAX": { - "us": 1910.6, + "us": 1951.0, "level": "full" }, "Document": { - "us": 2070.4, + "us": 2082.7, "level": "full" } } @@ -5318,35 +5318,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 729.8, + "us": 700.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 729.8, + "us": 700.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 714.6, + "us": 701.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 714.6, + "us": 701.5, "level": "full" }, "variants": { - "read (reused)": { - "us": 714.6, + "parse": { + "us": 700.5, "level": "full" }, - "parse": { - "us": 729.8, + "read (reused)": { + "us": 701.5, "level": "full" }, "parse_copy": { - "us": 745.1, + "us": 729.7, "level": "full" } } @@ -5354,23 +5354,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1431.5, + "us": 658.2, "level": "full" }, "best_any": { "variant": "sax", - "us": 1431.5, + "us": 658.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1431.5, + "us": 658.2, "level": "full" }, "parse": { - "us": 5393.7, + "us": 4214.1, "level": "full" } } @@ -5378,39 +5378,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 636.4, + "us": 635.3, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 636.4, + "us": 635.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 635.1, + "us": 641.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 635.1, + "us": 641.0, "level": "full" }, "variants": { - "read (reused allocator)": { - "us": 635.1, + "insitu (copy untimed)": { + "us": 605.6, "level": "full" }, "insitu (copy)": { - "us": 636.4, - "level": "full" - }, - "insitu (copy untimed)": { - "us": 638.1, + "us": 635.3, "level": "full" }, "read": { - "us": 645.0, + "us": 636.6, + "level": "full" + }, + "read (reused allocator)": { + "us": 641.0, "level": "full" } } @@ -5418,39 +5418,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 652.3, + "us": 652.8, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 652.3, + "us": 652.8, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 658.9, + "us": 652.6, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 658.9, + "us": 652.6, "level": "full" }, "variants": { - "On-Demand": { - "us": 652.3, - "level": "full" - }, "On-Demand (reused)": { - "us": 658.9, + "us": 652.6, "level": "full" }, - "DOM (reused)": { - "us": 753.4, + "On-Demand": { + "us": 652.8, "level": "full" }, "DOM": { - "us": 760.8, + "us": 745.4, + "level": "full" + }, + "DOM (reused)": { + "us": 746.6, "level": "full" } } @@ -5459,14 +5459,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 787.1, + "us": 785.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 787.1, + "us": 785.5, "level": "no UTF-8" } } @@ -5474,35 +5474,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 3253.1, + "us": 3101.6, "level": "full" }, "best_any": { - "variant": "generic (double)", - "us": 3243.4, - "level": "partial" + "variant": "generic (double, strict)", + "us": 3101.6, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double)": { - "us": 3243.4, - "level": "partial" - }, "generic (double, strict)": { - "us": 3253.1, + "us": 3101.6, "level": "full" }, + "generic (double)": { + "us": 3105.9, + "level": "partial" + }, "lazy_json": { - "us": 3800.9, + "us": 3684.6, "level": "partial" }, "generic": { - "us": 4795.4, + "us": 4524.2, "level": "partial" }, "generic (strict)": { - "us": 4815.8, + "us": 4550.0, "level": "full" } }, @@ -5513,39 +5513,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 633.8, + "us": 633.6, "level": "full" }, "best_any": { "variant": "SAX", - "us": 633.8, + "us": 633.6, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 640.6, + "us": 632.5, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 640.6, + "us": 632.5, "level": "full" }, "variants": { - "SAX": { - "us": 633.8, - "level": "full" - }, "SAX (reused)": { - "us": 640.6, + "us": 632.5, "level": "full" }, - "parse": { - "us": 1566.3, + "SAX": { + "us": 633.6, "level": "full" }, "parser (reused)": { - "us": 1604.9, + "us": 1499.0, + "level": "full" + }, + "parse": { + "us": 1509.2, "level": "full" } } @@ -5553,71 +5553,71 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 1203.3, + "us": 1216.3, "level": "full" }, "best_any": { - "variant": "SAX (string stream)", - "us": 1203.3, - "level": "full" + "variant": "SAX (string stream) (no encoding check)", + "us": 1188.3, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1834.6, + "us": 1844.9, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 1834.6, + "us": 1844.9, "level": "full" }, "variants": { - "SAX (string stream)": { - "us": 1203.3, - "level": "full" - }, "SAX (string stream) (no encoding check)": { - "us": 1212.1, + "us": 1188.3, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 1295.9, + "SAX (string stream)": { + "us": 1216.3, "level": "full" }, + "insitu (copy untimed)": { + "us": 1295.6, + "level": "full" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 1328.3, + "level": "no UTF-8" + }, "insitu (copy)": { - "us": 1334.5, + "us": 1332.8, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 1361.4, - "level": "no UTF-8" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 1416.6, + "us": 1362.5, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1523.3, + "us": 1408.8, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 1834.6, - "level": "full" - }, "Document (no encoding check)": { - "us": 1901.5, + "us": 1831.5, "level": "no UTF-8" }, "SAX": { - "us": 1964.3, + "us": 1842.5, + "level": "full" + }, + "Document (reused allocator)": { + "us": 1844.9, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1967.6, + "us": 1871.6, "level": "no UTF-8" }, "Document": { - "us": 2258.0, + "us": 2257.5, "level": "full" } } @@ -5712,108 +5712,108 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "structs (from_json)", - "us": 332.8, + "variant": "parse", + "us": 324.8, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 332.8, + "variant": "parse", + "us": 324.8, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 327.7, + "us": 317.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 327.7, + "us": 317.2, "level": "full" }, "variants": { "read (reused)": { - "us": 327.7, - "level": "full" - }, - "structs (from_json)": { - "us": 332.8, + "us": 317.2, "level": "full" }, "parse": { - "us": 334.4, + "us": 324.8, + "level": "full" + }, + "structs (from_json)": { + "us": 327.6, "level": "full" }, "parse_copy": { - "us": 371.1, + "us": 367.1, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 3360.1, + "variant": "parse", + "us": 2984.4, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 3360.1, + "variant": "parse", + "us": 2984.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 3360.1, + "parse": { + "us": 2984.4, "level": "full" }, - "parse": { - "us": 3362.5, + "structs (from_json)": { + "us": 3136.1, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 401.9, + "variant": "read (raw numbers)", + "us": 402.3, "level": "full" }, "best_any": { - "variant": "read", - "us": 401.9, + "variant": "read (raw numbers)", + "us": 402.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 404.8, + "us": 403.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 404.8, + "us": 403.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 365.6, - "level": "full" - }, - "read": { - "us": 401.9, - "level": "full" - }, - "insitu (copy)": { - "us": 402.5, - "level": "full" - }, - "read (reused allocator)": { - "us": 404.8, + "us": 360.8, "level": "full" }, "read (raw numbers)": { - "us": 405.1, + "us": 402.3, + "level": "full" + }, + "read": { + "us": 402.5, + "level": "full" + }, + "insitu (copy)": { + "us": 402.7, + "level": "full" + }, + "read (reused allocator)": { + "us": 403.7, "level": "full" } } @@ -5821,17 +5821,17 @@ "simdjson": { "best": { "variant": "DOM", - "us": 313.0, + "us": 311.2, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 180.0, + "us": 178.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 311.3, + "us": 313.6, "level": "full" }, "best_reused_any": { @@ -5845,23 +5845,23 @@ "level": "partial" }, "On-Demand": { - "us": 180.0, + "us": 178.5, "level": "partial" }, "On-Demand (key selectors)": { - "us": 181.1, + "us": 178.7, "level": "partial" }, "On-Demand structs": { - "us": 181.5, + "us": 181.1, "level": "partial" }, - "DOM (reused)": { - "us": 311.3, + "DOM": { + "us": 311.2, "level": "full" }, - "DOM": { - "us": 313.0, + "DOM (reused)": { + "us": 313.6, "level": "full" } } @@ -5870,14 +5870,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 406.6, + "us": 407.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 406.6, + "us": 407.9, "level": "no UTF-8" } } @@ -5885,44 +5885,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 605.8, + "us": 608.2, "level": "full" }, "best_any": { "variant": "structs", - "us": 343.5, + "us": 344.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 343.5, + "us": 344.9, "level": "partial" }, "structs (validate_skipped)": { - "us": 605.8, + "us": 608.2, "level": "full" }, "lazy_json": { - "us": 989.4, - "level": "partial" - }, - "generic (double)": { - "us": 2377.5, + "us": 993.3, "level": "partial" }, "generic (double, strict)": { - "us": 2411.1, + "us": 2393.0, "level": "full" }, - "generic (strict)": { - "us": 2946.7, - "level": "full" + "generic (double)": { + "us": 2398.7, + "level": "partial" }, "generic": { - "us": 2987.6, + "us": 2918.8, "level": "partial" + }, + "generic (strict)": { + "us": 2954.3, + "level": "full" } }, "excluded": { @@ -5932,35 +5932,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 887.3, + "us": 883.0, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 887.3, + "us": 883.0, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1370.9, + "us": 1341.0, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1370.9, + "us": 1341.0, "level": "full" }, "variants": { "parse_into structs": { - "us": 887.3, - "level": "full" - }, - "parse": { - "us": 1316.5, + "us": 883.0, "level": "full" }, "parser (reused)": { - "us": 1370.9, + "us": 1341.0, + "level": "full" + }, + "parse": { + "us": 1349.1, "level": "full" } }, @@ -5971,47 +5971,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1218.7, + "us": 1217.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1061.0, + "us": 1056.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1533.1, + "us": 1522.2, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1401.9, + "us": 1395.6, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1021.7, + "us": 1016.1, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1061.0, + "us": 1056.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1180.1, + "us": 1176.8, "level": "full" }, "insitu (copy)": { - "us": 1218.7, + "us": 1217.1, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 1275.6, + "us": 1285.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1401.9, + "us": 1395.6, "level": "no UTF-8" }, "Document (no encoding check)": { @@ -6019,23 +6019,23 @@ "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1442.6, + "us": 1433.2, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1507.5, + "us": 1459.0, "level": "full" }, "Document (reused allocator)": { - "us": 1533.1, + "us": 1522.2, "level": "full" }, "Document": { - "us": 2117.6, + "us": 2094.8, "level": "full" }, "Document (raw numbers)": { - "us": 2159.6, + "us": 2118.7, "level": "full" } } @@ -6121,107 +6121,107 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 827.7, + "us": 862.7, "level": "full" }, "best_any": { "variant": "parse", - "us": 827.7, + "us": 862.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 820.2, + "us": 887.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 820.2, + "us": 887.2, "level": "full" }, "variants": { - "read (reused)": { - "us": 820.2, + "parse": { + "us": 862.7, "level": "full" }, - "parse": { - "us": 827.7, + "read (reused)": { + "us": 887.2, "level": "full" }, "structs (from_json)": { - "us": 844.2, + "us": 924.1, "level": "full" }, "parse_copy": { - "us": 927.6, + "us": 969.4, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 5267.6, + "variant": "parse", + "us": 4547.6, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 5267.6, + "variant": "parse", + "us": 4547.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 5267.6, + "parse": { + "us": 4547.6, "level": "full" }, - "parse": { - "us": 5285.1, + "structs (from_json)": { + "us": 4585.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 952.7, + "variant": "read", + "us": 953.9, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 952.7, + "variant": "read", + "us": 953.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 998.2, + "us": 963.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 998.2, + "us": 963.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 839.8, - "level": "full" - }, - "insitu (copy)": { - "us": 952.7, + "us": 839.0, "level": "full" }, "read": { "us": 953.9, "level": "full" }, + "insitu (copy)": { + "us": 954.8, + "level": "full" + }, "read (raw numbers)": { - "us": 962.3, + "us": 956.5, "level": "full" }, "read (reused allocator)": { - "us": 998.2, + "us": 963.5, "level": "full" } } @@ -6229,47 +6229,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 698.8, + "us": 698.0, "level": "full" }, "best_any": { "variant": "On-Demand (key selectors)", - "us": 496.2, + "us": 494.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 709.7, + "us": 695.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 498.7, + "us": 496.0, "level": "partial" }, "variants": { "On-Demand (key selectors)": { - "us": 496.2, + "us": 494.3, "level": "partial" }, "On-Demand (reused)": { - "us": 498.7, + "us": 496.0, "level": "partial" }, "On-Demand": { - "us": 499.0, + "us": 498.4, "level": "partial" }, "On-Demand structs": { - "us": 533.3, + "us": 533.2, "level": "partial" }, - "DOM": { - "us": 698.8, + "DOM (reused)": { + "us": 695.1, "level": "full" }, - "DOM (reused)": { - "us": 709.7, + "DOM": { + "us": 698.0, "level": "full" } } @@ -6278,14 +6278,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 948.2, + "us": 941.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 948.2, + "us": 941.5, "level": "no UTF-8" } } @@ -6293,43 +6293,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 2476.5, + "us": 1977.7, "level": "full" }, "best_any": { "variant": "structs", - "us": 401.5, + "us": 401.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 401.5, + "us": 401.0, "level": "partial" }, "structs (validate_skipped)": { - "us": 2476.5, + "us": 1977.7, + "level": "full" + }, + "generic (double, strict)": { + "us": 3909.8, "level": "full" }, "generic (double)": { - "us": 3940.4, + "us": 3970.8, "level": "partial" }, - "generic (double, strict)": { - "us": 3966.0, - "level": "full" - }, - "generic (strict)": { - "us": 5244.2, - "level": "full" - }, "generic": { - "us": 5256.4, + "us": 5226.9, "level": "partial" }, + "generic (strict)": { + "us": 5261.0, + "level": "full" + }, "lazy_json": { - "us": 8408.8, + "us": 8450.9, "level": "partial" } }, @@ -6340,35 +6340,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1269.5, + "us": 1285.9, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1269.5, + "us": 1285.9, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1642.8, + "us": 1632.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1642.8, + "us": 1632.9, "level": "full" }, "variants": { "parse_into structs": { - "us": 1269.5, + "us": 1285.9, "level": "full" }, "parser (reused)": { - "us": 1642.8, + "us": 1632.9, "level": "full" }, "parse": { - "us": 1643.6, + "us": 1640.4, "level": "full" } }, @@ -6379,71 +6379,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1809.6, + "us": 1806.9, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1763.6, + "us": 1767.0, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1894.9, + "us": 1898.1, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 1894.9, + "us": 1898.1, "level": "full" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1648.3, + "us": 1644.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1693.1, + "us": 1686.0, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 1763.6, + "us": 1767.0, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1809.6, + "us": 1806.9, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 1816.7, + "us": 1870.7, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1847.1, + "us": 1878.7, "level": "full" }, "Document (no encoding check)": { - "us": 1865.3, + "us": 1893.6, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1894.9, + "us": 1898.1, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1920.5, + "us": 1914.5, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 2119.7, + "us": 2112.9, "level": "no UTF-8" }, "Document": { - "us": 2275.6, + "us": 2288.5, "level": "full" }, "Document (raw numbers)": { - "us": 2517.8, + "us": 2522.7, "level": "full" } } @@ -6529,39 +6529,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 1368.2, + "us": 1302.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 1368.2, + "us": 1302.2, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1373.7, + "us": 1304.0, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1373.7, + "us": 1304.0, "level": "full" }, "variants": { "parse": { - "us": 1368.2, + "us": 1302.2, "level": "full" }, "read (reused)": { - "us": 1373.7, + "us": 1304.0, "level": "full" }, "structs (from_json)": { - "us": 1388.1, + "us": 1305.8, "level": "full" }, "parse_copy": { - "us": 1560.8, + "us": 1465.4, "level": "full" } } @@ -6569,23 +6569,23 @@ "nlohmann json": { "best": { "variant": "structs (from_json)", - "us": 12005.7, + "us": 9123.5, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 12005.7, + "us": 9123.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "structs (from_json)": { - "us": 12005.7, + "us": 9123.5, "level": "full" }, "parse": { - "us": 12483.4, + "us": 9123.9, "level": "full" } } @@ -6593,43 +6593,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2204.3, + "us": 2127.3, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2204.3, + "us": 2127.3, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 3500.0, + "us": 3274.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 3500.0, + "us": 3274.5, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2204.3, + "us": 2127.3, "level": "full" }, "insitu (copy untimed)": { - "us": 3358.7, + "us": 3123.0, "level": "full" }, "read": { - "us": 3434.1, - "level": "full" - }, - "read (reused allocator)": { - "us": 3500.0, + "us": 3266.2, "level": "full" }, "insitu (copy)": { - "us": 3523.0, + "us": 3274.3, + "level": "full" + }, + "read (reused allocator)": { + "us": 3274.5, "level": "full" } } @@ -6637,47 +6637,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3324.7, + "us": 3140.7, "level": "full" }, "best_any": { - "variant": "On-Demand (key selectors)", - "us": 689.5, + "variant": "On-Demand", + "us": 674.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 3490.5, + "us": 3159.2, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 698.4, + "us": 674.3, "level": "partial" }, "variants": { - "On-Demand (key selectors)": { - "us": 689.5, - "level": "partial" - }, "On-Demand (reused)": { - "us": 698.4, + "us": 674.3, "level": "partial" }, "On-Demand": { - "us": 720.0, + "us": 674.5, + "level": "partial" + }, + "On-Demand (key selectors)": { + "us": 675.4, "level": "partial" }, "On-Demand structs": { - "us": 901.8, + "us": 886.0, "level": "partial" }, "DOM": { - "us": 3324.7, + "us": 3140.7, "level": "full" }, "DOM (reused)": { - "us": 3490.5, + "us": 3159.2, "level": "full" } } @@ -6686,14 +6686,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3463.8, + "us": 3166.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3463.8, + "us": 3166.3, "level": "no UTF-8" } } @@ -6701,44 +6701,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 2557.2, + "us": 2521.1, "level": "full" }, "best_any": { "variant": "structs", - "us": 416.9, + "us": 414.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 416.9, + "us": 414.7, "level": "partial" }, "structs (validate_skipped)": { - "us": 2557.2, + "us": 2521.1, "level": "full" }, "lazy_json": { - "us": 3640.4, + "us": 3446.7, "level": "partial" }, "generic (double)": { - "us": 10383.5, + "us": 9487.9, "level": "partial" }, "generic (double, strict)": { - "us": 10884.7, - "level": "full" - }, - "generic (strict)": { - "us": 18620.2, + "us": 9674.4, "level": "full" }, "generic": { - "us": 18916.1, + "us": 16456.6, "level": "partial" + }, + "generic (strict)": { + "us": 16612.4, + "level": "full" } }, "excluded": { @@ -6748,35 +6748,35 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 7291.6, + "us": 6690.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 7291.6, + "us": 6690.3, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 7307.2, + "us": 6658.1, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 7307.2, + "us": 6658.1, "level": "full" }, "variants": { - "parse": { - "us": 7291.6, + "parser (reused)": { + "us": 6658.1, "level": "full" }, - "parser (reused)": { - "us": 7307.2, + "parse": { + "us": 6690.3, "level": "full" }, "parse_into structs": { - "us": 7567.9, + "us": 6915.3, "level": "full" } }, @@ -6787,71 +6787,71 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 10389.8, + "us": 9687.9, "level": "full" }, "best_any": { - "variant": "Document (string stream)", - "us": 10389.8, - "level": "full" + "variant": "Document (string stream) (no encoding check)", + "us": 9632.1, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12439.1, + "us": 11710.3, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 12439.1, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 11636.0, + "level": "no UTF-8" }, "variants": { + "Document (string stream) (no encoding check)": { + "us": 9632.1, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 10389.8, + "us": 9687.9, "level": "full" }, "insitu (copy untimed)": { - "us": 10515.7, + "us": 9911.9, "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 10725.2, - "level": "no UTF-8" - }, "insitu (copy)": { - "us": 10787.5, + "us": 9986.6, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 10836.1, + "us": 10016.6, "level": "no UTF-8" }, - "Document (string stream) (no encoding check)": { - "us": 11011.0, + "insitu (copy) (no encoding check)": { + "us": 10187.8, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 11636.0, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 12439.1, + "us": 11710.3, "level": "full" }, "Document": { - "us": 12575.5, + "us": 11744.9, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 12906.6, + "Document (no encoding check)": { + "us": 11832.6, "level": "no UTF-8" }, "Document (raw numbers)": { - "us": 12915.3, + "us": 11914.9, "level": "full" }, "Document (raw numbers) (no encoding check)": { - "us": 13024.2, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 13199.0, + "us": 12187.0, "level": "no UTF-8" } } @@ -6937,39 +6937,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 89876.3, + "us": 87940.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 89876.3, + "us": 87940.5, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 53056.6, + "us": 52921.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 53056.6, + "us": 52921.6, "level": "full" }, "variants": { "read (reused)": { - "us": 53056.6, + "us": 52921.6, "level": "full" }, "parse": { - "us": 89876.3, + "us": 87940.5, "level": "full" }, "structs (from_json)": { - "us": 102875.2, + "us": 105969.9, "level": "full" }, "parse_copy": { - "us": 131355.6, + "us": 131631.2, "level": "full" } } @@ -6977,67 +6977,67 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 410220.7, + "us": 383107.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 410220.7, + "us": 383107.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 410220.7, + "us": 383107.9, "level": "full" }, "structs (from_json)": { - "us": 428036.9, + "us": 391566.1, "level": "full" } } }, "yyjson": { "best": { - "variant": "read (raw numbers)", - "us": 135777.7, + "variant": "read", + "us": 140491.2, "level": "full" }, "best_any": { - "variant": "read (raw numbers)", - "us": 135777.7, + "variant": "read", + "us": 140491.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 70652.0, + "us": 74459.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 70652.0, + "us": 74459.2, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 70652.0, + "us": 74459.2, "level": "full" }, "insitu (copy untimed)": { - "us": 96172.3, - "level": "full" - }, - "read (raw numbers)": { - "us": 135777.7, - "level": "full" - }, - "insitu (copy)": { - "us": 138922.1, + "us": 98567.4, "level": "full" }, "read": { - "us": 139868.1, + "us": 140491.2, + "level": "full" + }, + "insitu (copy)": { + "us": 144408.1, + "level": "full" + }, + "read (raw numbers)": { + "us": 144981.7, "level": "full" } } @@ -7045,47 +7045,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 122555.9, + "us": 130228.2, "level": "full" }, "best_any": { - "variant": "On-Demand (key selectors)", - "us": 48272.2, + "variant": "On-Demand", + "us": 48492.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 56403.4, + "us": 56436.4, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 28436.0, + "us": 29427.8, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 28436.0, - "level": "partial" - }, - "On-Demand (key selectors)": { - "us": 48272.2, + "us": 29427.8, "level": "partial" }, "On-Demand": { - "us": 48772.9, + "us": 48492.3, + "level": "partial" + }, + "On-Demand (key selectors)": { + "us": 48609.5, "level": "partial" }, "DOM (reused)": { - "us": 56403.4, + "us": 56436.4, "level": "full" }, "On-Demand structs": { - "us": 69146.1, + "us": 71886.0, "level": "partial" }, "DOM": { - "us": 122555.9, + "us": 130228.2, "level": "full" } } @@ -7094,14 +7094,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 110884.8, + "us": 110763.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 110884.8, + "us": 110763.1, "level": "no UTF-8" } } @@ -7109,44 +7109,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 89957.0, + "us": 90806.7, "level": "full" }, "best_any": { "variant": "structs", - "us": 67466.7, + "us": 67455.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 67466.7, + "us": 67455.8, "level": "partial" }, "structs (validate_skipped)": { - "us": 89957.0, + "us": 90806.7, "level": "full" }, "lazy_json": { - "us": 121164.6, + "us": 123651.8, + "level": "partial" + }, + "generic (double)": { + "us": 245538.9, "level": "partial" }, "generic (double, strict)": { - "us": 239604.5, - "level": "full" - }, - "generic (double)": { - "us": 250218.1, - "level": "partial" - }, - "generic (strict)": { - "us": 319624.4, + "us": 251937.8, "level": "full" }, "generic": { - "us": 323477.2, + "us": 322428.3, "level": "partial" + }, + "generic (strict)": { + "us": 337457.9, + "level": "full" } }, "excluded": { @@ -7156,35 +7156,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 95866.3, + "us": 101285.5, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 95866.3, + "us": 101285.5, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 135537.9, + "us": 133593.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 135537.9, + "us": 133593.2, "level": "full" }, "variants": { "parse_into structs": { - "us": 95866.3, + "us": 101285.5, "level": "full" }, "parser (reused)": { - "us": 135537.9, + "us": 133593.2, "level": "full" }, "parse": { - "us": 190726.3, + "us": 202474.8, "level": "full" } }, @@ -7195,71 +7195,71 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 147469.9, + "us": 152274.8, "level": "full" }, "best_any": { "variant": "Document (string stream) (no encoding check)", - "us": 137983.7, + "us": 148964.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 188613.4, + "us": 193265.0, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 182388.4, + "us": 182301.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 108290.1, + "us": 115255.0, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 116393.7, + "us": 125741.2, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 137983.7, + "us": 148964.3, + "level": "no UTF-8" + }, + "insitu (copy) (no encoding check)": { + "us": 151466.3, "level": "no UTF-8" }, "Document (string stream)": { - "us": 147469.9, + "us": 152274.8, "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 148650.3, - "level": "no UTF-8" - }, "insitu (copy)": { - "us": 158429.5, + "us": 166264.6, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 182388.4, + "us": 182301.3, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 183032.3, + "us": 190149.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 185663.7, + "us": 191641.5, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 188613.4, - "level": "full" - }, - "Document (raw numbers)": { - "us": 261083.0, + "us": 193265.0, "level": "full" }, "Document": { - "us": 266364.1, + "us": 273823.7, + "level": "full" + }, + "Document (raw numbers)": { + "us": 280533.7, "level": "full" } } @@ -7345,12 +7345,12 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 1.7, + "us": 1.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 1.7, + "us": 1.6, "level": "full" }, "best_reused": { @@ -7369,15 +7369,15 @@ "level": "full" }, "parse": { - "us": 1.7, + "us": 1.6, "level": "full" }, "structs (from_json)": { - "us": 1.7, + "us": 1.6, "level": "full" }, "parse_copy": { - "us": 1.8, + "us": 1.7, "level": "full" } } @@ -7385,23 +7385,23 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 17.7, + "us": 15.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 17.7, + "us": 15.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 17.7, + "us": 15.2, "level": "full" }, "structs (from_json)": { - "us": 17.7, + "us": 16.2, "level": "full" } } @@ -7432,21 +7432,21 @@ "us": 1.7, "level": "full" }, + "insitu (copy)": { + "us": 1.7, + "level": "full" + }, "insitu (copy untimed)": { "us": 1.7, "level": "full" }, + "read (raw numbers)": { + "us": 1.7, + "level": "full" + }, "read (reused allocator)": { "us": 1.7, "level": "full" - }, - "insitu (copy)": { - "us": 1.8, - "level": "full" - }, - "read (raw numbers)": { - "us": 1.8, - "level": "full" } } }, @@ -7463,7 +7463,7 @@ }, "best_reused": { "variant": "DOM (reused)", - "us": 1.6, + "us": 1.5, "level": "full" }, "best_reused_any": { @@ -7485,11 +7485,11 @@ "level": "partial" }, "On-Demand structs": { - "us": 1.3, + "us": 1.2, "level": "partial" }, "DOM (reused)": { - "us": 1.6, + "us": 1.5, "level": "full" }, "DOM": { @@ -7545,16 +7545,16 @@ "level": "partial" }, "generic (double, strict)": { - "us": 9.3, + "us": 9.2, + "level": "full" + }, + "generic (strict)": { + "us": 12.3, "level": "full" }, "generic": { - "us": 12.3, + "us": 12.6, "level": "partial" - }, - "generic (strict)": { - "us": 12.5, - "level": "full" } }, "excluded": { @@ -7564,12 +7564,12 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 3.7, + "us": 3.6, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 3.7, + "us": 3.6, "level": "full" }, "best_reused": { @@ -7584,7 +7584,7 @@ }, "variants": { "parse_into structs": { - "us": 3.7, + "us": 3.6, "level": "full" }, "parser (reused)": { @@ -7643,7 +7643,7 @@ "level": "full" }, "Document (string stream)": { - "us": 6.4, + "us": 6.5, "level": "full" }, "Document (reused allocator) (no encoding check)": { @@ -7662,11 +7662,11 @@ "us": 7.7, "level": "no UTF-8" }, - "Document": { - "us": 11.4, + "Document (raw numbers)": { + "us": 11.5, "level": "full" }, - "Document (raw numbers)": { + "Document": { "us": 11.6, "level": "full" } @@ -7752,64 +7752,64 @@ "twitter_min": { "nlohmann json_document": { "best": { - "variant": "parse", - "us": 276.8, + "variant": "structs (from_json)", + "us": 272.4, "level": "full" }, "best_any": { - "variant": "parse", - "us": 276.8, + "variant": "structs (from_json)", + "us": 272.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 272.6, + "us": 265.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 272.6, + "us": 265.3, "level": "full" }, "variants": { "read (reused)": { - "us": 272.6, - "level": "full" - }, - "parse": { - "us": 276.8, + "us": 265.3, "level": "full" }, "structs (from_json)": { - "us": 281.9, + "us": 272.4, + "level": "full" + }, + "parse": { + "us": 273.0, "level": "full" }, "parse_copy": { - "us": 307.0, + "us": 302.3, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 3212.0, + "variant": "parse", + "us": 2781.5, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 3212.0, + "variant": "parse", + "us": 2781.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 3212.0, + "parse": { + "us": 2781.5, "level": "full" }, - "parse": { - "us": 3244.4, + "structs (from_json)": { + "us": 2937.7, "level": "full" } } @@ -7817,43 +7817,43 @@ "yyjson": { "best": { "variant": "read", - "us": 333.8, + "us": 332.0, "level": "full" }, "best_any": { "variant": "read", - "us": 333.8, + "us": 332.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 332.2, + "us": 333.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 332.2, + "us": 333.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 301.0, - "level": "full" - }, - "read (reused allocator)": { - "us": 332.2, + "us": 301.8, "level": "full" }, "read": { - "us": 333.8, + "us": 332.0, "level": "full" }, "insitu (copy)": { - "us": 334.2, + "us": 332.6, + "level": "full" + }, + "read (reused allocator)": { + "us": 333.6, "level": "full" }, "read (raw numbers)": { - "us": 337.7, + "us": 335.5, "level": "full" } } @@ -7861,47 +7861,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 295.2, + "us": 297.2, "level": "full" }, "best_any": { - "variant": "On-Demand", - "us": 158.9, + "variant": "On-Demand (key selectors)", + "us": 159.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 293.1, + "us": 303.2, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 156.2, + "us": 158.5, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 156.2, - "level": "partial" - }, - "On-Demand": { - "us": 158.9, + "us": 158.5, "level": "partial" }, "On-Demand (key selectors)": { - "us": 160.0, + "us": 159.3, + "level": "partial" + }, + "On-Demand": { + "us": 161.6, "level": "partial" }, "On-Demand structs": { - "us": 162.5, + "us": 163.4, "level": "partial" }, - "DOM (reused)": { - "us": 293.1, + "DOM": { + "us": 297.2, "level": "full" }, - "DOM": { - "us": 295.2, + "DOM (reused)": { + "us": 303.2, "level": "full" } } @@ -7910,14 +7910,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 305.1, + "us": 307.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 305.1, + "us": 307.1, "level": "no UTF-8" } } @@ -7925,43 +7925,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 467.5, + "us": 466.9, "level": "full" }, "best_any": { "variant": "structs", - "us": 296.5, + "us": 296.3, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 296.5, + "us": 296.3, "level": "partial" }, "structs (validate_skipped)": { - "us": 467.5, + "us": 466.9, "level": "full" }, "lazy_json": { - "us": 482.2, - "level": "partial" - }, - "generic (double)": { - "us": 2149.2, + "us": 482.6, "level": "partial" }, "generic (double, strict)": { - "us": 2178.3, + "us": 2160.8, "level": "full" }, + "generic (double)": { + "us": 2167.2, + "level": "partial" + }, "generic": { - "us": 2727.9, + "us": 2707.8, "level": "partial" }, "generic (strict)": { - "us": 2793.3, + "us": 2714.6, "level": "full" } }, @@ -7972,35 +7972,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 754.3, + "us": 738.6, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 754.3, + "us": 738.6, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1201.6, + "us": 1209.7, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1201.6, + "us": 1209.7, "level": "full" }, "variants": { "parse_into structs": { - "us": 754.3, + "us": 738.6, "level": "full" }, "parser (reused)": { - "us": 1201.6, + "us": 1209.7, "level": "full" }, "parse": { - "us": 1209.3, + "us": 1210.9, "level": "full" } }, @@ -8011,71 +8011,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 862.7, + "us": 871.4, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 779.0, + "us": 775.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1456.8, + "us": 1449.9, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1319.8, + "us": 1315.9, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 746.7, + "us": 744.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 779.0, + "us": 775.7, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 833.0, + "us": 835.1, "level": "full" }, "insitu (copy)": { - "us": 862.7, + "us": 871.4, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 1020.1, + "us": 1029.6, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1131.7, + "us": 1133.6, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 1319.8, + "us": 1315.9, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1343.1, + "us": 1342.0, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1366.1, + "us": 1359.3, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1456.8, + "us": 1449.9, "level": "full" }, "Document": { - "us": 2024.1, + "us": 2019.4, "level": "full" }, "Document (raw numbers)": { - "us": 2055.2, + "us": 2053.5, "level": "full" } } @@ -8161,39 +8161,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 551.4, + "us": 525.0, "level": "full" }, "best_any": { "variant": "parse", - "us": 551.4, + "us": 525.0, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 555.5, + "us": 525.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 555.5, + "us": 525.2, "level": "full" }, "variants": { "parse": { - "us": 551.4, + "us": 525.0, "level": "full" }, "read (reused)": { - "us": 555.5, + "us": 525.2, "level": "full" }, "parse_copy": { - "us": 569.8, + "us": 557.8, "level": "full" }, "structs (from_json)": { - "us": 606.4, + "us": 558.3, "level": "full" } } @@ -8201,67 +8201,67 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 5275.0, + "us": 4000.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 5275.0, + "us": 4000.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 5275.0, + "us": 4000.6, "level": "full" }, "structs (from_json)": { - "us": 5363.6, + "us": 4116.6, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 509.4, + "variant": "insitu (copy)", + "us": 494.2, "level": "full" }, "best_any": { - "variant": "read", - "us": 509.4, + "variant": "insitu (copy)", + "us": 494.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 535.2, + "us": 495.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 535.2, + "us": 495.0, "level": "full" }, "variants": { - "read": { - "us": 509.4, + "insitu (copy untimed)": { + "us": 463.8, "level": "full" }, "insitu (copy)": { - "us": 512.1, - "level": "full" - }, - "insitu (copy untimed)": { - "us": 512.3, + "us": 494.2, "level": "full" }, "read (reused allocator)": { - "us": 535.2, + "us": 495.0, + "level": "full" + }, + "read": { + "us": 496.2, "level": "full" }, "read (raw numbers)": { - "us": 561.0, + "us": 516.7, "level": "full" } } @@ -8269,47 +8269,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 572.7, + "us": 547.0, "level": "full" }, "best_any": { - "variant": "On-Demand", - "us": 334.7, + "variant": "On-Demand (key selectors)", + "us": 327.8, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 599.6, + "us": 543.9, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 356.3, + "us": 332.6, "level": "partial" }, "variants": { - "On-Demand": { - "us": 334.7, - "level": "partial" - }, "On-Demand (key selectors)": { - "us": 348.3, + "us": 327.8, "level": "partial" }, "On-Demand (reused)": { - "us": 356.3, + "us": 332.6, + "level": "partial" + }, + "On-Demand": { + "us": 334.1, "level": "partial" }, "On-Demand structs": { - "us": 389.9, + "us": 366.4, "level": "partial" }, - "DOM": { - "us": 572.7, + "DOM (reused)": { + "us": 543.9, "level": "full" }, - "DOM (reused)": { - "us": 599.6, + "DOM": { + "us": 547.0, "level": "full" } } @@ -8318,14 +8318,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 662.6, + "us": 611.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 662.6, + "us": 611.4, "level": "no UTF-8" } } @@ -8333,44 +8333,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 815.2, + "us": 786.7, "level": "full" }, "best_any": { "variant": "structs", - "us": 205.2, + "us": 203.3, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 205.2, + "us": 203.3, "level": "partial" }, "structs (validate_skipped)": { - "us": 815.2, + "us": 786.7, "level": "full" }, "lazy_json": { - "us": 1707.1, - "level": "partial" - }, - "generic (double)": { - "us": 3279.8, + "us": 1583.8, "level": "partial" }, "generic (double, strict)": { - "us": 3410.3, + "us": 2994.7, "level": "full" }, - "generic (strict)": { - "us": 4850.0, - "level": "full" + "generic (double)": { + "us": 3069.4, + "level": "partial" }, "generic": { - "us": 4994.5, + "us": 4420.6, "level": "partial" + }, + "generic (strict)": { + "us": 4491.6, + "level": "full" } }, "excluded": { @@ -8380,35 +8380,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1074.9, + "us": 977.7, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1074.9, + "us": 977.7, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1435.4, + "us": 1363.0, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1435.4, + "us": 1363.0, "level": "full" }, "variants": { "parse_into structs": { - "us": 1074.9, + "us": 977.7, "level": "full" }, "parser (reused)": { - "us": 1435.4, + "us": 1363.0, "level": "full" }, "parse": { - "us": 1511.7, + "us": 1367.1, "level": "full" } }, @@ -8419,71 +8419,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1282.2, + "us": 1191.3, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 1282.2, + "us": 1191.3, "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1895.7, + "us": 1694.3, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator) (no encoding check)", - "us": 1890.2, - "level": "no UTF-8" + "variant": "Document (reused allocator)", + "us": 1694.3, + "level": "full" }, "variants": { - "insitu (copy untimed) (no encoding check)": { - "us": 1269.6, - "level": "no UTF-8" - }, "insitu (copy untimed)": { - "us": 1275.6, + "us": 1160.0, "level": "full" }, + "insitu (copy untimed) (no encoding check)": { + "us": 1186.7, + "level": "no UTF-8" + }, "insitu (copy)": { - "us": 1282.2, + "us": 1191.3, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 1352.2, + "us": 1223.6, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1430.4, + "us": 1323.7, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 1539.8, + "us": 1432.5, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1839.3, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1890.2, + "us": 1682.2, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1895.7, + "us": 1694.3, "level": "full" }, + "Document (reused allocator) (no encoding check)": { + "us": 1721.2, + "level": "no UTF-8" + }, "Document (raw numbers) (no encoding check)": { - "us": 2175.1, + "us": 1920.4, "level": "no UTF-8" }, "Document": { - "us": 2325.9, + "us": 2120.4, "level": "full" }, "Document (raw numbers)": { - "us": 2613.7, + "us": 2374.7, "level": "full" } } @@ -8571,23 +8571,23 @@ "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 529.7, + "us": 533.0, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 529.7, + "us": 533.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 529.7, + "us": 533.0, "level": "full" }, "editable": { - "us": 536.5, + "us": 537.9, "level": "full" } } @@ -8595,23 +8595,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2832.5, + "us": 2534.6, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2832.5, + "us": 2534.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2832.5, + "us": 2534.6, "level": "full" }, "parse": { - "us": 3834.2, + "us": 3462.2, "level": "full" } } @@ -8619,27 +8619,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 791.4, + "us": 786.0, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 791.4, + "us": 786.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 746.4, + "us": 748.1, "level": "full" }, "mut copy": { - "us": 791.4, + "us": 786.0, "level": "full" }, "insitu (copy) + mut copy": { - "us": 797.1, + "us": 787.5, "level": "full" } } @@ -8648,14 +8648,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 619.9, + "us": 620.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 619.9, + "us": 620.2, "level": "no UTF-8" } } @@ -8663,23 +8663,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3388.6, + "us": 3364.0, "level": "full" }, "best_any": { "variant": "generic", - "us": 3289.6, + "us": 3287.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 3289.6, + "us": 3287.4, "level": "partial" }, "generic (strict)": { - "us": 3388.6, + "us": 3364.0, "level": "full" } }, @@ -8691,19 +8691,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1767.2, + "us": 1858.7, "level": "full" }, "best_any": { "variant": "parse", - "us": 1767.2, + "us": 1858.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1767.2, + "us": 1858.7, "level": "full" } } @@ -8711,47 +8711,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1918.5, + "us": 1895.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1747.0, + "us": 1748.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1737.3, + "us": 1746.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1747.0, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 1854.3, + "us": 1748.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1865.0, + "us": 1863.2, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 1873.5, + "level": "no UTF-8" + }, "insitu (copy)": { - "us": 1918.5, + "us": 1895.8, "level": "full" }, "Document (no encoding check)": { - "us": 2020.1, + "us": 1995.6, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2036.6, + "us": 2045.9, "level": "full" }, "Document": { - "us": 2725.6, + "us": 2662.1, "level": "full" } } @@ -8824,24 +8824,24 @@ "citm_catalog": { "nlohmann json_document": { "best": { - "variant": "editable (source numbers)", - "us": 1148.7, + "variant": "editable", + "us": 1214.5, "level": "full" }, "best_any": { - "variant": "editable (source numbers)", - "us": 1148.7, + "variant": "editable", + "us": 1214.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "editable (source numbers)": { - "us": 1148.7, + "editable": { + "us": 1214.5, "level": "full" }, - "editable": { - "us": 1162.3, + "editable (source numbers)": { + "us": 1226.6, "level": "full" } } @@ -8849,23 +8849,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4970.1, + "us": 4483.9, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4970.1, + "us": 4483.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4970.1, + "us": 4483.9, "level": "full" }, "parse": { - "us": 5811.0, + "us": 5124.8, "level": "full" } } @@ -8873,27 +8873,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 1631.8, + "us": 1642.1, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 1631.8, + "us": 1642.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1526.1, + "us": 1530.3, "level": "full" }, "insitu (copy) + mut copy": { - "us": 1631.8, + "us": 1642.1, "level": "full" }, "mut copy": { - "us": 1633.3, + "us": 1645.1, "level": "full" } } @@ -8902,14 +8902,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1438.4, + "us": 1426.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1438.4, + "us": 1426.4, "level": "no UTF-8" } } @@ -8917,23 +8917,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 6002.3, + "us": 6035.6, "level": "full" }, "best_any": { "variant": "generic", - "us": 5970.1, + "us": 6028.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 5970.1, + "us": 6028.1, "level": "partial" }, "generic (strict)": { - "us": 6002.3, + "us": 6035.6, "level": "full" } }, @@ -8945,19 +8945,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2493.1, + "us": 2512.7, "level": "full" }, "best_any": { "variant": "parse", - "us": 2493.1, + "us": 2512.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2493.1, + "us": 2512.7, "level": "full" } } @@ -8965,47 +8965,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2740.5, + "us": 2753.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2691.0, + "us": 2729.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2594.8, + "us": 2589.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2616.4, + "us": 2636.7, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 2691.0, + "us": 2729.6, "level": "no UTF-8" }, "insitu (copy)": { - "us": 2740.5, + "us": 2753.8, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 2743.8, + "us": 2786.3, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2771.2, + "us": 2812.3, "level": "full" }, "Document (no encoding check)": { - "us": 2787.9, + "us": 2814.8, "level": "no UTF-8" }, "Document": { - "us": 3204.3, + "us": 3211.3, "level": "full" } } @@ -9079,47 +9079,47 @@ "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 2188.1, + "us": 2139.7, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 2188.1, + "us": 2139.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 2188.1, + "us": 2139.7, "level": "full" }, "editable": { - "us": 5567.3, + "us": 5640.4, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "ordered_json", - "us": 15805.5, + "variant": "parse", + "us": 13526.2, "level": "full" }, "best_any": { - "variant": "ordered_json", - "us": 15805.5, + "variant": "parse", + "us": 13526.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "ordered_json": { - "us": 15805.5, + "parse": { + "us": 13526.2, "level": "full" }, - "parse": { - "us": 15845.2, + "ordered_json": { + "us": 13973.7, "level": "full" } } @@ -9127,27 +9127,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 7654.7, + "us": 7599.2, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 7654.7, + "us": 7599.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 7478.9, + "us": 7543.6, "level": "full" }, "insitu (copy) + mut copy": { - "us": 7654.7, + "us": 7599.2, "level": "full" }, "mut copy": { - "us": 7676.3, + "us": 7618.2, "level": "full" } } @@ -9156,14 +9156,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 8495.2, + "us": 8465.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 8495.2, + "us": 8465.9, "level": "no UTF-8" } } @@ -9171,23 +9171,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 21598.4, + "us": 21592.5, "level": "full" }, "best_any": { "variant": "generic", - "us": 21329.2, + "us": 21371.2, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 21329.2, + "us": 21371.2, "level": "partial" }, "generic (strict)": { - "us": 21598.4, + "us": 21592.5, "level": "full" } }, @@ -9199,19 +9199,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 12767.4, + "us": 12764.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 12767.4, + "us": 12764.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 12767.4, + "us": 12764.8, "level": "full" } } @@ -9219,47 +9219,47 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 18812.1, + "us": 19359.2, "level": "full" }, "best_any": { - "variant": "Document (string stream)", - "us": 18812.1, - "level": "full" + "variant": "Document (string stream) (no encoding check)", + "us": 19154.7, + "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { - "Document (string stream)": { - "us": 18812.1, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 19170.2, - "level": "no UTF-8" - }, "Document (string stream) (no encoding check)": { - "us": 19443.4, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 19447.6, + "us": 19154.7, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 19448.5, + "us": 19219.0, "level": "full" }, + "Document (string stream)": { + "us": 19359.2, + "level": "full" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 19515.8, + "level": "no UTF-8" + }, "insitu (copy)": { - "us": 19695.5, + "us": 19687.1, "level": "full" }, + "insitu (copy) (no encoding check)": { + "us": 19958.7, + "level": "no UTF-8" + }, "Document": { - "us": 21357.3, + "us": 21380.7, "level": "full" }, "Document (no encoding check)": { - "us": 21810.2, + "us": 21742.1, "level": "no UTF-8" } } @@ -9333,23 +9333,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 192322.7, + "us": 193023.9, "level": "full" }, "best_any": { "variant": "editable", - "us": 192322.7, + "us": 193023.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 192322.7, + "us": 193023.9, "level": "full" }, "editable (source numbers)": { - "us": 193342.7, + "us": 201854.5, "level": "full" } } @@ -9357,23 +9357,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 647704.5, + "us": 635911.8, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 647704.5, + "us": 635911.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 647704.5, + "us": 635911.8, "level": "full" }, "parse": { - "us": 844653.5, + "us": 821442.3, "level": "full" } } @@ -9381,27 +9381,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 313354.7, + "us": 303302.8, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 313354.7, + "us": 303302.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 275024.6, + "us": 266325.7, "level": "full" }, "mut copy": { - "us": 313354.7, + "us": 303302.8, "level": "full" }, "insitu (copy) + mut copy": { - "us": 313654.0, + "us": 314354.8, "level": "full" } } @@ -9410,14 +9410,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 186077.7, + "us": 181035.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 186077.7, + "us": 181035.1, "level": "no UTF-8" } } @@ -9425,24 +9425,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 607766.9, + "us": 652302.5, "level": "full" }, "best_any": { - "variant": "generic (strict)", - "us": 607766.9, - "level": "full" + "variant": "generic", + "us": 631008.6, + "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 607766.9, - "level": "full" - }, "generic": { - "us": 622208.2, + "us": 631008.6, "level": "partial" + }, + "generic (strict)": { + "us": 652302.5, + "level": "full" } }, "excluded": { @@ -9453,19 +9453,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 331309.7, + "us": 348702.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 331309.7, + "us": 348702.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 331309.7, + "us": 348702.8, "level": "full" } } @@ -9473,47 +9473,47 @@ "RapidJSON": { "best": { "variant": "Document (string stream)", - "us": 268046.5, + "us": 269071.3, "level": "full" }, "best_any": { "variant": "Document (string stream) (no encoding check)", - "us": 258426.5, + "us": 259147.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 234669.1, + "us": 245468.2, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 245724.3, + "us": 251889.5, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 258426.5, + "us": 259147.6, "level": "no UTF-8" }, "Document (string stream)": { - "us": 268046.5, + "us": 269071.3, "level": "full" }, "insitu (copy) (no encoding check)": { - "us": 277333.9, + "us": 289239.5, "level": "no UTF-8" }, "insitu (copy)": { - "us": 287472.3, + "us": 289759.7, "level": "full" }, "Document (no encoding check)": { - "us": 308207.2, + "us": 315057.2, "level": "no UTF-8" }, "Document": { - "us": 383510.1, + "us": 398790.8, "level": "full" } } @@ -9587,19 +9587,19 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 3.0, + "us": 3.1, "level": "full" }, "best_any": { "variant": "editable", - "us": 3.0, + "us": 3.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 3.0, + "us": 3.1, "level": "full" }, "editable (source numbers)": { @@ -9611,23 +9611,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 13.1, + "us": 12.4, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 13.1, + "us": 12.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 13.1, + "us": 12.4, "level": "full" }, "parse": { - "us": 19.2, + "us": 18.2, "level": "full" } } @@ -9635,27 +9635,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 3.6, + "us": 3.8, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 3.6, + "us": 3.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "mut copy": { - "us": 3.6, - "level": "full" - }, - "insitu (copy untimed) + mut copy": { - "us": 3.6, + "us": 3.8, "level": "full" }, "insitu (copy) + mut copy": { - "us": 3.7, + "us": 3.8, + "level": "full" + }, + "insitu (copy untimed) + mut copy": { + "us": 3.8, "level": "full" } } @@ -9664,14 +9664,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3.4, + "us": 3.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3.4, + "us": 3.3, "level": "no UTF-8" } } @@ -9679,23 +9679,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 14.8, + "us": 15.6, "level": "full" }, "best_any": { "variant": "generic", - "us": 14.4, + "us": 15.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 14.4, + "us": 15.5, "level": "partial" }, "generic (strict)": { - "us": 14.8, + "us": 15.6, "level": "full" } }, @@ -9707,19 +9707,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 8.5, + "us": 8.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 8.5, + "us": 8.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 8.5, + "us": 8.8, "level": "full" } } @@ -9727,47 +9727,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 8.7, + "us": 9.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 7.2, + "us": 7.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy) (no encoding check)": { - "us": 7.2, + "us": 7.5, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 7.2, + "us": 7.7, "level": "no UTF-8" }, "Document (string stream) (no encoding check)": { - "us": 8.3, + "us": 8.1, "level": "no UTF-8" }, "insitu (copy)": { - "us": 8.7, + "us": 9.1, "level": "full" }, "insitu (copy untimed)": { - "us": 8.7, + "us": 9.2, "level": "full" }, "Document (string stream)": { - "us": 10.1, + "us": 10.7, "level": "full" }, "Document (no encoding check)": { - "us": 11.3, + "us": 11.8, "level": "no UTF-8" }, "Document": { - "us": 15.2, + "us": 16.0, "level": "full" } } @@ -9841,23 +9841,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 474.8, + "us": 469.6, "level": "full" }, "best_any": { "variant": "editable", - "us": 474.8, + "us": 469.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 474.8, + "us": 469.6, "level": "full" }, "editable (source numbers)": { - "us": 476.1, + "us": 472.0, "level": "full" } } @@ -9865,23 +9865,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2673.6, + "us": 2388.9, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2673.6, + "us": 2388.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2673.6, + "us": 2388.9, "level": "full" }, "parse": { - "us": 3656.6, + "us": 3264.5, "level": "full" } } @@ -9889,27 +9889,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 704.3, + "us": 706.8, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 704.3, + "us": 706.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 677.0, + "us": 686.2, "level": "full" }, "mut copy": { - "us": 704.3, + "us": 706.8, "level": "full" }, "insitu (copy) + mut copy": { - "us": 704.9, + "us": 715.4, "level": "full" } } @@ -9918,14 +9918,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 511.4, + "us": 519.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 511.4, + "us": 519.3, "level": "no UTF-8" } } @@ -9933,23 +9933,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3153.2, + "us": 3127.8, "level": "full" }, "best_any": { "variant": "generic", - "us": 3094.5, + "us": 3086.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 3094.5, + "us": 3086.7, "level": "partial" }, "generic (strict)": { - "us": 3153.2, + "us": 3127.8, "level": "full" } }, @@ -9961,19 +9961,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1653.2, + "us": 1661.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 1653.2, + "us": 1661.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1653.2, + "us": 1661.3, "level": "full" } } @@ -9981,47 +9981,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1538.4, + "us": 1539.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1461.7, + "us": 1464.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1428.4, + "us": 1428.8, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1461.7, + "us": 1464.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1505.8, + "us": 1515.8, "level": "full" }, "insitu (copy)": { - "us": 1538.4, + "us": 1539.3, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 1598.8, + "us": 1618.5, "level": "no UTF-8" }, "Document (string stream)": { - "us": 1703.4, + "us": 1718.4, "level": "full" }, "Document (no encoding check)": { - "us": 1914.2, + "us": 1932.2, "level": "no UTF-8" }, "Document": { - "us": 2615.9, + "us": 2605.9, "level": "full" } } @@ -10094,24 +10094,24 @@ "citm_catalog_min": { "nlohmann json_document": { "best": { - "variant": "editable", - "us": 860.5, + "variant": "editable (source numbers)", + "us": 848.5, "level": "full" }, "best_any": { - "variant": "editable", - "us": 860.5, + "variant": "editable (source numbers)", + "us": 848.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "editable": { - "us": 860.5, + "editable (source numbers)": { + "us": 848.5, "level": "full" }, - "editable (source numbers)": { - "us": 877.7, + "editable": { + "us": 852.1, "level": "full" } } @@ -10119,51 +10119,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4746.7, + "us": 4011.7, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4746.7, + "us": 4011.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4746.7, + "us": 4011.7, "level": "full" }, "parse": { - "us": 5667.6, + "us": 4743.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "mut copy", - "us": 1173.7, + "variant": "insitu (copy) + mut copy", + "us": 1174.0, "level": "full" }, "best_any": { - "variant": "mut copy", - "us": 1173.7, + "variant": "insitu (copy) + mut copy", + "us": 1174.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1145.9, - "level": "full" - }, - "mut copy": { - "us": 1173.7, + "us": 1141.2, "level": "full" }, "insitu (copy) + mut copy": { - "us": 1179.1, + "us": 1174.0, + "level": "full" + }, + "mut copy": { + "us": 1182.5, "level": "full" } } @@ -10172,14 +10172,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1102.2, + "us": 1095.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1102.2, + "us": 1095.4, "level": "no UTF-8" } } @@ -10187,23 +10187,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 5385.2, + "us": 5327.2, "level": "full" }, "best_any": { "variant": "generic", - "us": 5287.8, + "us": 5297.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 5287.8, + "us": 5297.6, "level": "partial" }, "generic (strict)": { - "us": 5385.2, + "us": 5327.2, "level": "full" } }, @@ -10215,19 +10215,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2263.4, + "us": 2226.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 2263.4, + "us": 2226.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2263.4, + "us": 2226.8, "level": "full" } } @@ -10235,47 +10235,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2132.9, + "us": 2131.3, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 2132.9, + "us": 2131.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed)": { - "us": 2109.7, + "us": 2105.2, "level": "full" }, "insitu (copy)": { - "us": 2132.9, + "us": 2131.3, "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 2139.8, + "us": 2135.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2172.3, + "us": 2172.4, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2253.9, + "us": 2286.7, "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 2323.6, + "us": 2455.7, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2639.0, + "us": 2617.0, "level": "no UTF-8" }, "Document": { - "us": 3083.6, + "us": 3045.2, "level": "full" } } @@ -10351,39 +10351,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 495.8, + "us": 466.8, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 495.8, + "us": 466.8, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 494.2, + "us": 472.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 494.2, + "us": 472.2, "level": "full" }, "variants": { - "read + dump (reused)": { - "us": 494.2, + "parse + dump (source numbers)": { + "us": 466.8, "level": "full" }, - "parse + dump (source numbers)": { - "us": 495.8, + "read + dump (reused)": { + "us": 472.2, "level": "full" }, "parse + dump": { - "us": 518.1, + "us": 477.9, "level": "full" }, "parse_copy + dump": { - "us": 575.7, + "us": 520.9, "level": "full" } } @@ -10391,63 +10391,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 4195.9, + "us": 3368.7, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 4195.9, + "us": 3368.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 4195.9, + "us": 3368.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy) + write", - "us": 625.5, + "variant": "read (raw numbers) + write", + "us": 609.0, "level": "full" }, "best_any": { - "variant": "insitu (copy) + write", - "us": 625.5, + "variant": "read (raw numbers) + write", + "us": 609.0, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 716.6, + "us": 615.2, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 716.6, + "us": 615.2, "level": "full" }, "variants": { - "insitu (copy) + write": { - "us": 625.5, - "level": "full" - }, "insitu (copy untimed) + write": { - "us": 637.2, - "level": "full" - }, - "read + write": { - "us": 657.9, + "us": 574.2, "level": "full" }, "read (raw numbers) + write": { - "us": 667.1, + "us": 609.0, + "level": "full" + }, + "read + write": { + "us": 610.2, + "level": "full" + }, + "insitu (copy) + write": { + "us": 612.4, "level": "full" }, "read + write (reused allocator)": { - "us": 716.6, + "us": 615.2, "level": "full" } } @@ -10455,35 +10455,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 714.2, + "us": 665.5, "level": "full" }, "best_any": { "variant": "minify", - "us": 99.9, + "us": 93.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 703.7, + "us": 664.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 703.7, + "us": 664.2, "level": "full" }, "variants": { "minify": { - "us": 99.9, + "us": 93.3, "level": "partial" }, "DOM (reused) + to_string": { - "us": 703.7, + "us": 664.2, "level": "full" }, "DOM + to_string": { - "us": 714.2, + "us": 665.5, "level": "full" } } @@ -10492,14 +10492,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 675.1, + "us": 636.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 675.1, + "us": 636.2, "level": "no UTF-8" } } @@ -10507,27 +10507,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3684.7, + "us": 3243.0, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 442.0, + "us": 417.3, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 442.0, + "us": 417.3, "level": "partial" }, "generic": { - "us": 3529.2, + "us": 3185.5, "level": "partial" }, "generic (strict)": { - "us": 3684.7, + "us": 3243.0, "level": "full" } }, @@ -10539,31 +10539,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1974.2, + "us": 1782.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1974.2, + "us": 1782.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1889.4, + "us": 1780.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1889.4, + "us": 1780.8, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 1889.4, + "us": 1780.8, "level": "full" }, "parse + serialize": { - "us": 1974.2, + "us": 1782.7, "level": "full" } } @@ -10571,63 +10571,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 1949.4, + "us": 1851.1, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1879.7, + "us": 1709.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2412.6, + "us": 2168.4, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2267.0, + "us": 2049.2, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1879.7, + "us": 1709.9, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1941.4, + "us": 1774.9, + "level": "no UTF-8" + }, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 1815.8, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 1949.4, + "us": 1851.1, "level": "full" }, - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1949.4, - "level": "no UTF-8" - }, "Document + Writer (no encoding check)": { - "us": 2236.8, + "us": 2014.2, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2267.0, + "us": 2049.2, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2412.6, - "level": "full" - }, - "SAX to Writer": { - "us": 2683.1, + "us": 2168.4, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 2793.4, + "us": 2472.1, + "level": "full" + }, + "SAX to Writer": { + "us": 2496.3, "level": "full" }, "Document + Writer": { - "us": 2887.6, + "us": 2710.5, "level": "full" } } @@ -10696,40 +10696,40 @@ "citm_catalog": { "nlohmann json_document": { "best": { - "variant": "parse + dump", - "us": 1044.8, + "variant": "parse + dump (source numbers)", + "us": 1117.9, "level": "full" }, "best_any": { - "variant": "parse + dump", - "us": 1044.8, + "variant": "parse + dump (source numbers)", + "us": 1117.9, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 1071.1, + "us": 1153.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 1071.1, + "us": 1153.2, "level": "full" }, "variants": { - "parse + dump": { - "us": 1044.8, + "parse + dump (source numbers)": { + "us": 1117.9, "level": "full" }, - "parse + dump (source numbers)": { - "us": 1046.8, + "parse + dump": { + "us": 1151.9, "level": "full" }, "read + dump (reused)": { - "us": 1071.1, + "us": 1153.2, "level": "full" }, "parse_copy + dump": { - "us": 1177.8, + "us": 1256.1, "level": "full" } } @@ -10737,19 +10737,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5806.5, + "us": 5399.2, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5806.5, + "us": 5399.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5806.5, + "us": 5399.2, "level": "full" } } @@ -10757,43 +10757,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 1217.9, + "us": 1220.7, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 1217.9, + "us": 1220.7, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 1314.5, + "us": 1407.2, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 1314.5, + "us": 1407.2, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 1159.8, + "us": 1165.4, "level": "full" }, "read (raw numbers) + write": { - "us": 1217.9, - "level": "full" - }, - "insitu (copy) + write": { - "us": 1265.0, + "us": 1220.7, "level": "full" }, "read + write": { - "us": 1265.8, + "us": 1276.8, + "level": "full" + }, + "insitu (copy) + write": { + "us": 1306.7, "level": "full" }, "read + write (reused allocator)": { - "us": 1314.5, + "us": 1407.2, "level": "full" } } @@ -10801,35 +10801,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1318.4, + "us": 1353.9, "level": "full" }, "best_any": { "variant": "minify", - "us": 278.1, + "us": 279.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1318.1, + "us": 1366.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1318.1, + "us": 1366.8, "level": "full" }, "variants": { "minify": { - "us": 278.1, + "us": 279.3, "level": "partial" }, - "DOM (reused) + to_string": { - "us": 1318.1, + "DOM + to_string": { + "us": 1353.9, "level": "full" }, - "DOM + to_string": { - "us": 1318.4, + "DOM (reused) + to_string": { + "us": 1366.8, "level": "full" } } @@ -10838,14 +10838,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1417.4, + "us": 1497.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1417.4, + "us": 1497.5, "level": "no UTF-8" } } @@ -10853,27 +10853,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 5941.5, + "us": 6174.8, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1292.0, + "us": 1298.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1292.0, + "us": 1298.9, "level": "partial" }, "generic (strict)": { - "us": 5941.5, + "us": 6174.8, "level": "full" }, "generic": { - "us": 5978.0, + "us": 6275.9, "level": "partial" } }, @@ -10885,31 +10885,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2525.2, + "us": 2498.1, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2525.2, + "us": 2498.1, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2498.2, + "us": 2521.5, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2498.2, + "us": 2521.5, "level": "full" }, "variants": { - "parser (reused) + serialize": { - "us": 2498.2, + "parse + serialize": { + "us": 2498.1, "level": "full" }, - "parse + serialize": { - "us": 2525.2, + "parser (reused) + serialize": { + "us": 2521.5, "level": "full" } } @@ -10917,63 +10917,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 2382.4, + "us": 2428.6, "level": "full" }, "best_any": { - "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 2314.5, - "level": "no UTF-8" + "variant": "SAX to Writer (string stream)", + "us": 2428.6, + "level": "full" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2811.2, + "us": 2997.3, "level": "full" }, "best_reused_any": { - "variant": "Document + Writer (reused allocator)", - "us": 2811.2, - "level": "full" + "variant": "Document + Writer (reused allocator) (no encoding check)", + "us": 2992.6, + "level": "no UTF-8" }, "variants": { - "SAX to Writer (string stream) (no encoding check)": { - "us": 2314.5, - "level": "no UTF-8" - }, "SAX to Writer (string stream)": { - "us": 2382.4, + "us": 2428.6, "level": "full" }, + "SAX to Writer (string stream) (no encoding check)": { + "us": 2439.6, + "level": "no UTF-8" + }, "SAX to Writer (no encoding check)": { - "us": 2387.7, + "us": 2469.5, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2623.9, + "us": 2780.8, "level": "no UTF-8" }, "SAX to Writer": { - "us": 2755.5, - "level": "full" - }, - "Document + Writer (no encoding check)": { - "us": 2774.0, - "level": "no UTF-8" - }, - "Document + Writer (reused allocator)": { - "us": 2811.2, + "us": 2875.6, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2862.5, + "us": 2992.6, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator)": { + "us": 2997.3, + "level": "full" + }, + "Document + Writer (no encoding check)": { + "us": 3050.3, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 3119.6, + "us": 3194.5, "level": "full" }, "Document + Writer": { - "us": 3228.6, + "us": 3311.3, "level": "full" } } @@ -11043,39 +11043,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 2196.2, + "us": 2150.3, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 2196.2, + "us": 2150.3, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 5381.2, + "us": 5212.0, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 5381.2, + "us": 5212.0, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 2196.2, + "us": 2150.3, "level": "full" }, "parse + dump": { - "us": 5240.0, + "us": 5208.7, "level": "full" }, "read + dump (reused)": { - "us": 5381.2, + "us": 5212.0, "level": "full" }, "parse_copy + dump": { - "us": 5650.7, + "us": 5595.2, "level": "full" } } @@ -11083,19 +11083,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 16625.5, + "us": 13402.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 16625.5, + "us": 13402.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 16625.5, + "us": 13402.5, "level": "full" } } @@ -11103,43 +11103,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 2900.7, + "us": 2859.5, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 2900.7, + "us": 2859.5, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 7057.5, + "us": 6718.8, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 7057.5, + "us": 6718.8, "level": "full" }, "variants": { "read (raw numbers) + write": { - "us": 2900.7, + "us": 2859.5, "level": "full" }, "insitu (copy untimed) + write": { - "us": 6701.2, - "level": "full" - }, - "insitu (copy) + write": { - "us": 6988.5, + "us": 6585.7, "level": "full" }, "read + write": { - "us": 6999.3, + "us": 6630.5, + "level": "full" + }, + "insitu (copy) + write": { + "us": 6634.0, "level": "full" }, "read + write (reused allocator)": { - "us": 7057.5, + "us": 6718.8, "level": "full" } } @@ -11147,35 +11147,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 9135.2, + "us": 8606.5, "level": "full" }, "best_any": { "variant": "minify", - "us": 311.9, + "us": 314.2, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 8851.4, + "us": 8584.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 8851.4, + "us": 8584.8, "level": "full" }, "variants": { "minify": { - "us": 311.9, + "us": 314.2, "level": "partial" }, "DOM (reused) + to_string": { - "us": 8851.4, + "us": 8584.8, "level": "full" }, "DOM + to_string": { - "us": 9135.2, + "us": 8606.5, "level": "full" } } @@ -11184,14 +11184,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 8958.4, + "us": 8353.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 8958.4, + "us": 8353.6, "level": "no UTF-8" } } @@ -11199,27 +11199,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 22138.1, + "us": 20960.9, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 2726.4, + "us": 2698.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 2726.4, + "us": 2698.7, "level": "partial" }, "generic (strict)": { - "us": 22138.1, + "us": 20960.9, "level": "full" }, "generic": { - "us": 22728.1, + "us": 21073.7, "level": "partial" } }, @@ -11231,31 +11231,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 12747.7, + "us": 12366.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 12747.7, + "us": 12366.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 13260.2, + "us": 12415.3, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 13260.2, + "us": 12415.3, "level": "full" }, "variants": { "parse + serialize": { - "us": 12747.7, + "us": 12366.7, "level": "full" }, "parser (reused) + serialize": { - "us": 13260.2, + "us": 12415.3, "level": "full" } } @@ -11263,63 +11263,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (raw numbers)", - "us": 14400.4, + "us": 14204.8, "level": "full" }, "best_any": { "variant": "SAX to Writer (raw numbers)", - "us": 14400.4, + "us": 14204.8, "level": "full" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 21158.4, + "us": 20764.2, "level": "full" }, "best_reused_any": { - "variant": "Document + Writer (reused allocator)", - "us": 21158.4, - "level": "full" + "variant": "Document + Writer (reused allocator) (no encoding check)", + "us": 20625.3, + "level": "no UTF-8" }, "variants": { "SAX to Writer (raw numbers)": { - "us": 14400.4, + "us": 14204.8, "level": "full" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 14666.2, + "us": 14310.7, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 19548.0, + "us": 18809.7, "level": "full" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 19577.5, + "us": 19345.8, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 20625.3, + "level": "no UTF-8" + }, + "Document + Writer (no encoding check)": { + "us": 20702.5, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 21158.4, + "us": 20764.2, + "level": "full" + }, + "Document + Writer": { + "us": 20783.7, "level": "full" }, "SAX to Writer": { - "us": 21185.7, + "us": 21444.6, "level": "full" }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 21372.9, - "level": "no UTF-8" - }, "SAX to Writer (no encoding check)": { - "us": 22129.2, - "level": "no UTF-8" - }, - "Document + Writer": { - "us": 22260.0, - "level": "full" - }, - "Document + Writer (no encoding check)": { - "us": 22285.3, + "us": 21651.9, "level": "no UTF-8" } } @@ -11389,39 +11389,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 143205.7, + "us": 145663.9, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 143205.7, + "us": 145663.9, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 109335.3, + "us": 110500.4, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 109335.3, + "us": 110500.4, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 109335.3, + "us": 110500.4, "level": "full" }, "parse + dump (source numbers)": { - "us": 143205.7, + "us": 145663.9, "level": "full" }, "parse + dump": { - "us": 143736.6, + "us": 152631.3, "level": "full" }, "parse_copy + dump": { - "us": 180536.2, + "us": 190111.3, "level": "full" } } @@ -11429,63 +11429,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 529559.5, + "us": 493302.1, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 529559.5, + "us": 493302.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 529559.5, + "us": 493302.1, "level": "full" } } }, "yyjson": { "best": { - "variant": "read + write", - "us": 188179.2, + "variant": "insitu (copy) + write", + "us": 199086.3, "level": "full" }, "best_any": { - "variant": "read + write", - "us": 188179.2, + "variant": "insitu (copy) + write", + "us": 199086.3, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 98203.6, + "us": 101397.1, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 98203.6, + "us": 101397.1, "level": "full" }, "variants": { "read + write (reused allocator)": { - "us": 98203.6, + "us": 101397.1, "level": "full" }, "insitu (copy untimed) + write": { - "us": 156604.6, - "level": "full" - }, - "read + write": { - "us": 188179.2, + "us": 159462.5, "level": "full" }, "insitu (copy) + write": { - "us": 194880.4, + "us": 199086.3, + "level": "full" + }, + "read + write": { + "us": 202581.9, "level": "full" }, "read (raw numbers) + write": { - "us": 198103.7, + "us": 202691.0, "level": "full" } } @@ -11493,35 +11493,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 269597.1, + "us": 280738.9, "level": "full" }, "best_any": { "variant": "minify", - "us": 42643.5, + "us": 46006.1, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 211456.6, + "us": 215243.9, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 211456.6, + "us": 215243.9, "level": "full" }, "variants": { "minify": { - "us": 42643.5, + "us": 46006.1, "level": "partial" }, "DOM (reused) + to_string": { - "us": 211456.6, + "us": 215243.9, "level": "full" }, "DOM + to_string": { - "us": 269597.1, + "us": 280738.9, "level": "full" } } @@ -11530,14 +11530,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 164630.3, + "us": 173180.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 164630.3, + "us": 173180.5, "level": "no UTF-8" } } @@ -11545,27 +11545,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 450321.8, + "us": 451367.8, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 97377.0, + "us": 93793.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 97377.0, + "us": 93793.8, "level": "partial" }, "generic": { - "us": 438618.4, + "us": 439061.2, "level": "partial" }, "generic (strict)": { - "us": 450321.8, + "us": 451367.8, "level": "full" } }, @@ -11577,31 +11577,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 314298.9, + "us": 329300.0, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 314298.9, + "us": 329300.0, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 267865.8, + "us": 272863.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 267865.8, + "us": 272863.9, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 267865.8, + "us": 272863.9, "level": "full" }, "parse + serialize": { - "us": 314298.9, + "us": 329300.0, "level": "full" } } @@ -11609,63 +11609,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 231978.8, + "us": 229769.0, "level": "full" }, "best_any": { - "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 224249.3, - "level": "no UTF-8" + "variant": "SAX to Writer (string stream)", + "us": 229769.0, + "level": "full" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 311567.3, + "us": 317841.5, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 304495.2, + "us": 303052.7, "level": "no UTF-8" }, "variants": { - "SAX to Writer (string stream) (no encoding check)": { - "us": 224249.3, - "level": "no UTF-8" - }, "SAX to Writer (string stream)": { - "us": 231978.8, + "us": 229769.0, "level": "full" }, - "SAX to Writer (no encoding check)": { - "us": 271455.5, + "SAX to Writer (string stream) (no encoding check)": { + "us": 230566.1, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 271842.8, + "us": 278677.6, + "level": "no UTF-8" + }, + "SAX to Writer (no encoding check)": { + "us": 283717.4, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 304495.2, + "us": 303052.7, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 304609.8, + "us": 311574.0, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 311567.3, + "us": 317841.5, "level": "full" }, "SAX to Writer": { - "us": 353200.1, + "us": 356410.8, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 367515.2, + "us": 359424.7, "level": "full" }, "Document + Writer": { - "us": 387659.4, + "us": 400965.7, "level": "full" } } @@ -11745,12 +11745,12 @@ }, "best_reused": { "variant": "read + dump (reused)", - "us": 2.4, + "us": 2.6, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 2.4, + "us": 2.6, "level": "full" }, "variants": { @@ -11758,80 +11758,80 @@ "us": 2.4, "level": "full" }, - "read + dump (reused)": { - "us": 2.4, - "level": "full" - }, "parse + dump": { - "us": 2.5, + "us": 2.6, "level": "full" }, "parse_copy + dump": { "us": 2.6, "level": "full" + }, + "read + dump (reused)": { + "us": 2.6, + "level": "full" } } }, "nlohmann json": { "best": { "variant": "parse + dump", - "us": 19.2, + "us": 18.4, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 19.2, + "us": 18.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 19.2, + "us": 18.4, "level": "full" } } }, "yyjson": { "best": { - "variant": "read + write", - "us": 2.9, + "variant": "insitu (copy) + write", + "us": 3.0, "level": "full" }, "best_any": { - "variant": "read + write", - "us": 2.9, + "variant": "insitu (copy) + write", + "us": 3.0, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 2.6, + "us": 2.7, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 2.6, + "us": 2.7, "level": "full" }, "variants": { "read + write (reused allocator)": { - "us": 2.6, + "us": 2.7, "level": "full" }, "insitu (copy untimed) + write": { "us": 2.8, "level": "full" }, - "read + write": { - "us": 2.9, + "insitu (copy) + write": { + "us": 3.0, "level": "full" }, - "insitu (copy) + write": { - "us": 2.9, + "read + write": { + "us": 3.1, "level": "full" }, "read (raw numbers) + write": { - "us": 2.9, + "us": 3.1, "level": "full" } } @@ -11839,7 +11839,7 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 3.7, + "us": 3.9, "level": "full" }, "best_any": { @@ -11849,12 +11849,12 @@ }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 3.3, + "us": 3.5, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 3.3, + "us": 3.5, "level": "full" }, "variants": { @@ -11863,11 +11863,11 @@ "level": "partial" }, "DOM (reused) + to_string": { - "us": 3.3, + "us": 3.5, "level": "full" }, "DOM + to_string": { - "us": 3.7, + "us": 3.9, "level": "full" } } @@ -11891,27 +11891,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 14.0, + "us": 15.3, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1.9, + "us": 2.1, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1.9, + "us": 2.1, "level": "partial" }, "generic": { - "us": 13.5, + "us": 14.7, "level": "partial" }, "generic (strict)": { - "us": 14.0, + "us": 15.3, "level": "full" } }, @@ -11923,31 +11923,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 8.6, + "us": 8.9, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 8.6, + "us": 8.9, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 8.2, + "us": 8.7, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 8.2, + "us": 8.7, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 8.2, + "us": 8.7, "level": "full" }, "parse + serialize": { - "us": 8.6, + "us": 8.9, "level": "full" } } @@ -11955,63 +11955,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 8.2, + "us": 9.0, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 6.2, + "us": 6.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 11.5, + "us": 12.1, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 10.8, + "us": 11.6, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 6.2, + "us": 6.7, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 8.2, + "us": 9.0, "level": "full" }, "SAX to Writer (no encoding check)": { - "us": 9.5, + "us": 10.1, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 10.0, + "us": 10.9, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 10.8, + "us": 11.6, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 11.3, + "us": 12.0, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 11.5, - "level": "full" - }, - "SAX to Writer": { - "us": 13.7, + "us": 12.1, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 13.9, + "us": 14.4, + "level": "full" + }, + "SAX to Writer": { + "us": 14.9, "level": "full" }, "Document + Writer": { - "us": 15.2, + "us": 16.5, "level": "full" } } @@ -12081,39 +12081,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 410.0, + "us": 404.1, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 410.0, + "us": 404.1, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 417.5, + "us": 413.1, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 417.5, + "us": 413.1, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 410.0, + "us": 404.1, "level": "full" }, "read + dump (reused)": { - "us": 417.5, + "us": 413.1, "level": "full" }, "parse + dump": { - "us": 423.3, + "us": 422.9, "level": "full" }, "parse_copy + dump": { - "us": 456.2, + "us": 453.3, "level": "full" } } @@ -12121,63 +12121,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 3605.1, + "us": 3238.3, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 3605.1, + "us": 3238.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 3605.1, + "us": 3238.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "read + write", - "us": 542.4, + "variant": "insitu (copy) + write", + "us": 539.5, "level": "full" }, "best_any": { - "variant": "read + write", - "us": 542.4, + "variant": "insitu (copy) + write", + "us": 539.5, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 540.0, + "us": 544.7, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 540.0, + "us": 544.7, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 518.2, - "level": "full" - }, - "read + write (reused allocator)": { - "us": 540.0, - "level": "full" - }, - "read + write": { - "us": 542.4, + "us": 515.1, "level": "full" }, "insitu (copy) + write": { - "us": 545.2, + "us": 539.5, + "level": "full" + }, + "read + write": { + "us": 541.8, "level": "full" }, "read (raw numbers) + write": { - "us": 547.7, + "us": 542.4, + "level": "full" + }, + "read + write (reused allocator)": { + "us": 544.7, "level": "full" } } @@ -12185,35 +12185,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 654.5, + "us": 655.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 67.7, + "us": 77.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 652.4, + "us": 655.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 652.4, + "us": 655.7, "level": "full" }, "variants": { "minify": { - "us": 67.7, + "us": 77.3, "level": "partial" }, - "DOM (reused) + to_string": { - "us": 652.4, + "DOM + to_string": { + "us": 655.0, "level": "full" }, - "DOM + to_string": { - "us": 654.5, + "DOM (reused) + to_string": { + "us": 655.7, "level": "full" } } @@ -12222,14 +12222,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 526.3, + "us": 531.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 526.3, + "us": 531.7, "level": "no UTF-8" } } @@ -12237,27 +12237,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3043.3, + "us": 3033.6, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 350.0, + "us": 355.3, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 350.0, + "us": 355.3, "level": "partial" }, "generic": { - "us": 2990.2, + "us": 3002.9, "level": "partial" }, "generic (strict)": { - "us": 3043.3, + "us": 3033.6, "level": "full" } }, @@ -12269,31 +12269,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1668.0, + "us": 1678.5, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1668.0, + "us": 1678.5, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1661.0, + "us": 1662.5, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1661.0, + "us": 1662.5, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 1661.0, + "us": 1662.5, "level": "full" }, "parse + serialize": { - "us": 1668.0, + "us": 1678.5, "level": "full" } } @@ -12301,63 +12301,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 1438.5, + "us": 1466.8, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1420.4, + "us": 1422.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2079.8, + "us": 2087.1, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 1952.6, + "us": 1949.2, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1420.4, + "us": 1422.8, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 1438.5, + "us": 1466.8, "level": "full" }, "SAX to Writer (no encoding check)": { - "us": 1692.4, + "us": 1674.0, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1752.8, + "us": 1774.9, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 1929.4, + "us": 1937.8, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 1952.6, + "us": 1949.2, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2079.8, + "us": 2087.1, "level": "full" }, "SAX to Writer": { - "us": 2365.1, + "us": 2408.1, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 2441.8, + "us": 2428.9, "level": "full" }, "Document + Writer": { - "us": 2681.5, + "us": 2640.4, "level": "full" } } @@ -12427,39 +12427,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 746.3, + "us": 737.6, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 746.3, + "us": 737.6, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 760.4, + "us": 768.4, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 760.4, + "us": 768.4, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 746.3, - "level": "full" - }, - "read + dump (reused)": { - "us": 760.4, + "us": 737.6, "level": "full" }, "parse + dump": { - "us": 760.8, + "us": 760.9, + "level": "full" + }, + "read + dump (reused)": { + "us": 768.4, "level": "full" }, "parse_copy + dump": { - "us": 795.0, + "us": 800.8, "level": "full" } } @@ -12467,19 +12467,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5370.2, + "us": 4785.2, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5370.2, + "us": 4785.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5370.2, + "us": 4785.2, "level": "full" } } @@ -12487,43 +12487,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 773.7, + "us": 781.6, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 773.7, + "us": 781.6, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 811.6, + "us": 820.4, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 811.6, + "us": 820.4, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 772.8, + "us": 779.9, "level": "full" }, "read (raw numbers) + write": { - "us": 773.7, + "us": 781.6, "level": "full" }, "insitu (copy) + write": { - "us": 807.0, + "us": 807.8, "level": "full" }, "read + write (reused allocator)": { - "us": 811.6, + "us": 820.4, "level": "full" }, "read + write": { - "us": 818.0, + "us": 836.7, "level": "full" } } @@ -12531,35 +12531,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1160.0, + "us": 1239.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 69.3, + "us": 69.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1163.9, + "us": 1214.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1163.9, + "us": 1214.0, "level": "full" }, "variants": { "minify": { - "us": 69.3, + "us": 69.4, "level": "partial" }, - "DOM + to_string": { - "us": 1160.0, + "DOM (reused) + to_string": { + "us": 1214.0, "level": "full" }, - "DOM (reused) + to_string": { - "us": 1163.9, + "DOM + to_string": { + "us": 1239.0, "level": "full" } } @@ -12568,14 +12568,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1097.8, + "us": 1170.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1097.8, + "us": 1170.9, "level": "no UTF-8" } } @@ -12583,27 +12583,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 5181.4, + "us": 5498.8, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 652.4, + "us": 663.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 652.4, + "us": 663.9, "level": "partial" }, "generic": { - "us": 5048.5, + "us": 5177.7, "level": "partial" }, "generic (strict)": { - "us": 5181.4, + "us": 5498.8, "level": "full" } }, @@ -12615,31 +12615,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2193.8, + "us": 2222.0, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2193.8, + "us": 2222.0, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2174.7, + "us": 2289.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2174.7, + "us": 2289.9, "level": "full" }, "variants": { - "parser (reused) + serialize": { - "us": 2174.7, + "parse + serialize": { + "us": 2222.0, "level": "full" }, - "parse + serialize": { - "us": 2193.8, + "parser (reused) + serialize": { + "us": 2289.9, "level": "full" } } @@ -12647,63 +12647,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 1849.8, + "us": 1900.7, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream)", - "us": 1849.8, + "us": 1900.7, "level": "full" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2614.0, + "us": 2756.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator)", - "us": 2614.0, + "us": 2756.3, "level": "full" }, "variants": { "SAX to Writer (string stream)": { - "us": 1849.8, + "us": 1900.7, "level": "full" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 1880.8, + "us": 1928.2, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 2174.6, + "us": 2224.2, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2451.7, + "us": 2557.9, "level": "no UTF-8" }, "SAX to Writer": { - "us": 2529.6, + "us": 2696.1, "level": "full" }, - "Document + Writer (no encoding check)": { - "us": 2586.4, - "level": "no UTF-8" - }, "Document + Writer (reused allocator)": { - "us": 2614.0, + "us": 2756.3, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2662.9, + "us": 2797.1, + "level": "no UTF-8" + }, + "Document + Writer (no encoding check)": { + "us": 2830.1, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 2886.8, + "us": 3065.3, "level": "full" }, "Document + Writer": { - "us": 3109.2, + "us": 3268.0, "level": "full" } } @@ -12775,23 +12775,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 140.4, + "us": 139.2, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 140.4, + "us": 139.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 140.4, + "us": 139.2, "level": "n/a" }, "dump": { - "us": 155.7, + "us": 154.0, "level": "n/a" } } @@ -12799,19 +12799,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 443.8, + "us": 412.8, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 443.8, + "us": 412.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 443.8, + "us": 412.8, "level": "n/a" } } @@ -12819,19 +12819,19 @@ "yyjson": { "best": { "variant": "write", - "us": 215.3, + "us": 184.6, "level": "n/a" }, "best_any": { "variant": "write", - "us": 215.3, + "us": 184.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 215.3, + "us": 184.6, "level": "n/a" } } @@ -12839,19 +12839,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 361.3, + "us": 346.2, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 361.3, + "us": 346.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 361.3, + "us": 346.2, "level": "n/a" } } @@ -12859,19 +12859,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 678.3, + "us": 637.8, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 678.3, + "us": 637.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 678.3, + "us": 637.8, "level": "n/a" } } @@ -12879,19 +12879,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 248.6, + "us": 258.2, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 248.6, + "us": 258.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 248.6, + "us": 258.2, "level": "n/a" } } @@ -12899,23 +12899,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 381.2, + "us": 376.6, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 381.2, + "us": 376.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 381.2, + "us": 376.6, "level": "n/a" }, "generic (strict)": { - "us": 450.7, + "us": 408.5, "level": "n/a" } }, @@ -12927,19 +12927,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 469.0, + "us": 450.8, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 469.0, + "us": 450.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 469.0, + "us": 450.8, "level": "n/a" } } @@ -13009,23 +13009,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 230.0, + "us": 229.4, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 230.0, + "us": 229.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 230.0, + "us": 229.4, "level": "n/a" }, "dump": { - "us": 250.9, + "us": 250.6, "level": "n/a" } } @@ -13033,19 +13033,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 639.6, + "us": 610.8, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 639.6, + "us": 610.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 639.6, + "us": 610.8, "level": "n/a" } } @@ -13053,19 +13053,19 @@ "yyjson": { "best": { "variant": "write", - "us": 318.9, + "us": 317.8, "level": "n/a" }, "best_any": { "variant": "write", - "us": 318.9, + "us": 317.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 318.9, + "us": 317.8, "level": "n/a" } } @@ -13073,19 +13073,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 613.9, + "us": 609.8, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 613.9, + "us": 609.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 613.9, + "us": 609.8, "level": "n/a" } } @@ -13093,19 +13093,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 979.3, + "us": 983.5, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 979.3, + "us": 983.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 979.3, + "us": 983.5, "level": "n/a" } } @@ -13113,19 +13113,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 509.4, + "us": 507.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 509.4, + "us": 507.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 509.4, + "us": 507.6, "level": "n/a" } } @@ -13133,23 +13133,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 730.3, + "us": 730.0, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 730.3, + "us": 730.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 730.3, + "us": 730.0, "level": "n/a" }, "generic (strict)": { - "us": 738.7, + "us": 739.4, "level": "n/a" } }, @@ -13161,19 +13161,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 829.8, + "us": 832.0, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 829.8, + "us": 832.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 829.8, + "us": 832.0, "level": "n/a" } } @@ -13243,23 +13243,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 823.3, + "us": 831.0, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 823.3, + "us": 831.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 823.3, + "us": 831.0, "level": "n/a" }, "dump": { - "us": 3842.2, + "us": 3945.7, "level": "n/a" } } @@ -13267,19 +13267,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 4088.6, + "us": 3904.9, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 4088.6, + "us": 3904.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 4088.6, + "us": 3904.9, "level": "n/a" } } @@ -13287,19 +13287,19 @@ "yyjson": { "best": { "variant": "write", - "us": 3359.8, + "us": 3329.5, "level": "n/a" }, "best_any": { "variant": "write", - "us": 3359.8, + "us": 3329.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 3359.8, + "us": 3329.5, "level": "n/a" } } @@ -13307,19 +13307,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 5609.3, + "us": 5580.0, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 5609.3, + "us": 5580.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 5609.3, + "us": 5580.0, "level": "n/a" } } @@ -13327,19 +13327,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 9095.1, + "us": 8885.9, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 9095.1, + "us": 8885.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 9095.1, + "us": 8885.9, "level": "n/a" } } @@ -13347,19 +13347,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 5074.3, + "us": 5076.9, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 5074.3, + "us": 5076.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 5074.3, + "us": 5076.9, "level": "n/a" } } @@ -13367,23 +13367,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 4070.6, + "us": 4050.0, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 4070.6, + "us": 4050.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 4070.6, + "us": 4050.0, "level": "n/a" }, "generic (strict)": { - "us": 4085.7, + "us": 4082.6, "level": "n/a" } }, @@ -13395,19 +13395,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 5658.6, + "us": 5570.4, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 5658.6, + "us": 5570.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 5658.6, + "us": 5570.4, "level": "n/a" } } @@ -13477,23 +13477,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 65375.7, + "us": 62865.9, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 65375.7, + "us": 62865.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 65375.7, + "us": 62865.9, "level": "n/a" }, "dump": { - "us": 67769.0, + "us": 64775.7, "level": "n/a" } } @@ -13501,19 +13501,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 117316.2, + "us": 113990.4, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 117316.2, + "us": 113990.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 117316.2, + "us": 113990.4, "level": "n/a" } } @@ -13521,19 +13521,19 @@ "yyjson": { "best": { "variant": "write", - "us": 66669.1, + "us": 67530.6, "level": "n/a" }, "best_any": { "variant": "write", - "us": 66669.1, + "us": 67530.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 66669.1, + "us": 67530.6, "level": "n/a" } } @@ -13541,19 +13541,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 158492.1, + "us": 158669.8, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 158492.1, + "us": 158669.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 158492.1, + "us": 158669.8, "level": "n/a" } } @@ -13561,19 +13561,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 131408.2, + "us": 131434.6, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 131408.2, + "us": 131434.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 131408.2, + "us": 131434.6, "level": "n/a" } } @@ -13581,19 +13581,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 69916.0, + "us": 72261.9, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 69916.0, + "us": 72261.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 69916.0, + "us": 72261.9, "level": "n/a" } } @@ -13601,23 +13601,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 131946.3, + "us": 129719.5, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 131946.3, + "us": 129719.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 131946.3, + "us": 129719.5, "level": "n/a" }, "generic (strict)": { - "us": 144261.7, + "us": 138641.0, "level": "n/a" } }, @@ -13629,19 +13629,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 144173.9, + "us": 138780.0, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 144173.9, + "us": 138780.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 144173.9, + "us": 138780.0, "level": "n/a" } } @@ -13795,19 +13795,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 3.8, + "us": 3.9, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 3.8, + "us": 3.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 3.8, + "us": 3.9, "level": "n/a" } } @@ -13945,23 +13945,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 133.7, + "us": 137.0, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 133.7, + "us": 137.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 133.7, + "us": 137.0, "level": "n/a" }, "dump": { - "us": 150.4, + "us": 150.6, "level": "n/a" } } @@ -13969,19 +13969,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 429.0, + "us": 424.8, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 429.0, + "us": 424.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 429.0, + "us": 424.8, "level": "n/a" } } @@ -13989,19 +13989,19 @@ "yyjson": { "best": { "variant": "write", - "us": 201.3, + "us": 185.1, "level": "n/a" }, "best_any": { "variant": "write", - "us": 201.3, + "us": 185.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 201.3, + "us": 185.1, "level": "n/a" } } @@ -14009,19 +14009,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 349.4, + "us": 348.9, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 349.4, + "us": 348.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 349.4, + "us": 348.9, "level": "n/a" } } @@ -14029,19 +14029,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 620.4, + "us": 630.4, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 620.4, + "us": 630.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 620.4, + "us": 630.4, "level": "n/a" } } @@ -14049,19 +14049,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 228.6, + "us": 234.5, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 228.6, + "us": 234.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 228.6, + "us": 234.5, "level": "n/a" } } @@ -14069,23 +14069,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 377.3, + "us": 378.6, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 377.3, + "us": 378.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 377.3, + "us": 378.6, "level": "n/a" }, "generic (strict)": { - "us": 415.3, + "us": 411.7, "level": "n/a" } }, @@ -14097,19 +14097,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 456.4, + "us": 452.9, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 456.4, + "us": 452.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 456.4, + "us": 452.9, "level": "n/a" } } @@ -14179,23 +14179,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 240.1, + "us": 225.6, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 240.1, + "us": 225.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 240.1, + "us": 225.6, "level": "n/a" }, "dump": { - "us": 271.3, + "us": 247.4, "level": "n/a" } } @@ -14203,19 +14203,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 675.9, + "us": 629.5, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 675.9, + "us": 629.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 675.9, + "us": 629.5, "level": "n/a" } } @@ -14223,19 +14223,19 @@ "yyjson": { "best": { "variant": "write", - "us": 347.7, + "us": 316.1, "level": "n/a" }, "best_any": { "variant": "write", - "us": 347.7, + "us": 316.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 347.7, + "us": 316.1, "level": "n/a" } } @@ -14243,19 +14243,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 648.5, + "us": 613.9, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 648.5, + "us": 613.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 648.5, + "us": 613.9, "level": "n/a" } } @@ -14263,19 +14263,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 1057.5, + "us": 984.1, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 1057.5, + "us": 984.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 1057.5, + "us": 984.1, "level": "n/a" } } @@ -14283,43 +14283,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 532.0, + "us": 500.3, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 532.0, + "us": 500.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 532.0, + "us": 500.3, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic (strict)", - "us": 784.1, + "variant": "generic", + "us": 737.2, "level": "n/a" }, "best_any": { - "variant": "generic (strict)", - "us": 784.1, + "variant": "generic", + "us": 737.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 784.1, + "generic": { + "us": 737.2, "level": "n/a" }, - "generic": { - "us": 796.7, + "generic (strict)": { + "us": 773.4, "level": "n/a" } }, @@ -14331,19 +14331,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 907.4, + "us": 871.5, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 907.4, + "us": 871.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 907.4, + "us": 871.5, "level": "n/a" } } diff --git a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc13.json b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc13.json index 454c67200..f8f6b984a 100644 --- a/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc13.json +++ b/docs/mkdocs/scripts/figures/data/perf_usecases_x86-gcc13.json @@ -4,35 +4,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 271.0, + "us": 266.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 271.0, + "us": 266.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 313.2, + "us": 306.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 313.2, + "us": 306.4, "level": "full" }, "variants": { "accept": { - "us": 271.0, + "us": 266.9, "level": "full" }, "read (reused)": { - "us": 313.2, + "us": 306.4, "level": "full" }, "parse": { - "us": 319.2, + "us": 314.5, "level": "full" } } @@ -40,23 +40,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 677.0, + "us": 311.5, "level": "full" }, "best_any": { "variant": "accept", - "us": 677.0, + "us": 311.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 677.0, + "us": 311.5, "level": "full" }, "parse": { - "us": 3472.5, + "us": 3045.2, "level": "full" } } @@ -64,43 +64,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 390.8, + "us": 393.5, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 390.8, + "us": 393.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 396.6, + "us": 403.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 396.6, + "us": 403.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 347.9, + "us": 348.2, "level": "full" }, "insitu (copy)": { - "us": 390.8, - "level": "full" - }, - "read (raw numbers)": { - "us": 394.2, + "us": 393.5, "level": "full" }, "read": { - "us": 395.0, + "us": 394.0, + "level": "full" + }, + "read (raw numbers)": { + "us": 394.8, "level": "full" }, "read (reused allocator)": { - "us": 396.6, + "us": 403.5, "level": "full" } } @@ -108,31 +108,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 311.2, + "us": 309.4, "level": "full" }, "best_any": { "variant": "DOM", - "us": 311.2, + "us": 309.4, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 312.2, + "us": 310.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 312.2, + "us": 310.6, "level": "full" }, "variants": { "DOM": { - "us": 311.2, + "us": 309.4, "level": "full" }, "DOM (reused)": { - "us": 312.2, + "us": 310.6, "level": "full" } } @@ -141,14 +141,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 408.4, + "us": 409.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 408.4, + "us": 409.3, "level": "no UTF-8" } } @@ -156,83 +156,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 590.1, + "us": 584.4, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 590.1, + "us": 584.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 590.1, + "us": 584.4, + "level": "full" + }, + "generic (double, strict)": { + "us": 2315.5, "level": "full" }, "generic (double)": { - "us": 2313.6, - "level": "partial" - }, - "generic (double, strict)": { - "us": 2328.4, - "level": "full" - }, - "generic": { - "us": 2968.4, + "us": 2344.0, "level": "partial" }, "generic (strict)": { - "us": 2986.2, + "us": 2986.7, "level": "full" + }, + "generic": { + "us": 3083.9, + "level": "partial" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 709.8, + "us": 730.0, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 709.8, + "us": 730.0, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 721.3, + "us": 729.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 721.3, + "us": 729.7, "level": "full" }, "variants": { - "SAX (numbers: none)": { - "us": 709.8, + "SAX (reused)": { + "us": 729.7, "level": "full" }, - "SAX (reused)": { - "us": 721.3, + "SAX (numbers: none)": { + "us": 730.0, "level": "full" }, "SAX": { - "us": 721.9, + "us": 740.0, "level": "full" }, "parse (numbers: none)": { - "us": 1416.7, + "us": 1391.2, "level": "full" }, "parser (reused)": { - "us": 1426.9, + "us": 1394.6, "level": "full" }, "parse": { - "us": 1436.7, + "us": 1402.9, "level": "full" } } @@ -240,95 +240,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1594.8, + "us": 1200.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1116.1, + "us": 1033.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1569.9, + "us": 1604.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1526.8, + "us": 1476.2, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1082.1, + "us": 983.4, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1116.1, - "level": "no UTF-8" - }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 1195.8, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 1220.0, - "level": "no UTF-8" - }, - "SAX (default precision) (no encoding check)": { - "us": 1354.2, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 1397.4, - "level": "no UTF-8" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 1428.9, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 1495.6, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1526.8, + "us": 1033.2, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1551.7, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1569.9, + "us": 1157.7, "level": "full" }, "insitu (copy)": { - "us": 1594.8, + "us": 1200.8, + "level": "full" + }, + "SAX (string stream, default precision) (no encoding check)": { + "us": 1201.6, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 1222.0, + "level": "no UTF-8" + }, + "SAX (default precision) (no encoding check)": { + "us": 1349.4, + "level": "no UTF-8" + }, + "SAX (no encoding check)": { + "us": 1370.3, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 1442.8, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1476.2, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1492.8, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 1604.4, "level": "full" }, "SAX (string stream)": { - "us": 2184.6, + "us": 2154.7, "level": "full" }, "SAX (string stream, default precision)": { - "us": 2236.5, + "us": 2179.6, "level": "full" }, "SAX (default precision)": { - "us": 2253.6, + "us": 2268.9, "level": "full" }, "SAX": { - "us": 2307.9, + "us": 2313.8, "level": "full" }, "SAX (raw numbers)": { - "us": 2354.1, + "us": 2350.3, "level": "full" }, "Document": { - "us": 2387.4, + "us": 2436.2, "level": "full" } } @@ -426,35 +426,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 608.8, + "us": 664.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 608.8, + "us": 664.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 758.1, + "us": 846.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 758.1, + "us": 846.1, "level": "full" }, "variants": { "accept": { - "us": 608.8, - "level": "full" - }, - "read (reused)": { - "us": 758.1, + "us": 664.1, "level": "full" }, "parse": { - "us": 805.9, + "us": 839.9, + "level": "full" + }, + "read (reused)": { + "us": 846.1, "level": "full" } } @@ -462,67 +462,67 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1432.8, + "us": 685.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 1432.8, + "us": 685.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1432.8, + "us": 685.7, "level": "full" }, "parse": { - "us": 5630.2, + "us": 4454.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "read (raw numbers)", - "us": 997.4, + "variant": "read", + "us": 983.6, "level": "full" }, "best_any": { - "variant": "read (raw numbers)", - "us": 997.4, + "variant": "read", + "us": 983.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1139.7, + "us": 1010.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1139.7, + "us": 1010.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 878.3, - "level": "full" - }, - "read (raw numbers)": { - "us": 997.4, + "us": 869.9, "level": "full" }, "read": { - "us": 1023.2, + "us": 983.6, "level": "full" }, "insitu (copy)": { - "us": 1042.2, + "us": 985.9, + "level": "full" + }, + "read (raw numbers)": { + "us": 988.1, "level": "full" }, "read (reused allocator)": { - "us": 1139.7, + "us": 1010.6, "level": "full" } } @@ -530,31 +530,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 780.3, + "us": 737.1, "level": "full" }, "best_any": { "variant": "DOM", - "us": 780.3, + "us": 737.1, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 788.4, + "us": 736.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 788.4, + "us": 736.0, "level": "full" }, "variants": { - "DOM": { - "us": 780.3, + "DOM (reused)": { + "us": 736.0, "level": "full" }, - "DOM (reused)": { - "us": 788.4, + "DOM": { + "us": 737.1, "level": "full" } } @@ -563,14 +563,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1027.8, + "us": 1024.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1027.8, + "us": 1024.8, "level": "no UTF-8" } } @@ -578,179 +578,179 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1545.1, + "us": 1402.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1545.1, + "us": 1402.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1545.1, + "us": 1402.2, + "level": "full" + }, + "generic (double, strict)": { + "us": 3855.8, "level": "full" }, "generic (double)": { - "us": 4117.9, + "us": 3950.7, "level": "partial" }, - "generic (double, strict)": { - "us": 4239.7, - "level": "full" - }, - "generic (strict)": { - "us": 6202.0, - "level": "full" - }, "generic": { - "us": 6281.3, + "us": 5485.3, "level": "partial" + }, + "generic (strict)": { + "us": 5674.5, + "level": "full" } } }, "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 969.1, + "us": 933.8, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 969.1, + "us": 933.8, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 989.0, + "us": 998.1, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 989.0, + "us": 998.1, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 969.1, - "level": "full" - }, - "SAX (reused)": { - "us": 989.0, + "us": 933.8, "level": "full" }, "SAX": { - "us": 1016.1, + "us": 998.1, + "level": "full" + }, + "SAX (reused)": { + "us": 998.1, "level": "full" }, "parse (numbers: none)": { - "us": 1867.4, - "level": "full" - }, - "parser (reused)": { - "us": 1979.7, + "us": 1744.4, "level": "full" }, "parse": { - "us": 1987.7, + "us": 1856.3, + "level": "full" + }, + "parser (reused)": { + "us": 1859.0, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX (string stream, default precision)", - "us": 2214.5, + "variant": "insitu (copy)", + "us": 1930.9, "level": "full" }, "best_any": { "variant": "SAX (default precision) (no encoding check)", - "us": 1570.5, + "us": 1487.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1994.7, + "us": 1984.2, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 1994.7, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 1914.2, + "level": "no UTF-8" }, "variants": { "SAX (default precision) (no encoding check)": { - "us": 1570.5, + "us": 1487.3, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1734.1, - "level": "no UTF-8" - }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 1835.5, + "us": 1683.0, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1991.2, + "us": 1709.1, "level": "no UTF-8" }, - "Document (reused allocator)": { - "us": 1994.7, - "level": "full" - }, - "SAX (raw numbers) (no encoding check)": { - "us": 2008.0, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 2044.7, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 2045.1, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 2062.6, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 2070.9, + "SAX (string stream, default precision) (no encoding check)": { + "us": 1750.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2209.8, + "us": 1821.1, "level": "full" }, - "SAX (string stream, default precision)": { - "us": 2214.5, + "insitu (copy) (no encoding check)": { + "us": 1822.5, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1914.2, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1918.8, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 1926.1, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 1930.9, + "level": "full" + }, + "SAX (string stream) (no encoding check)": { + "us": 1972.9, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 1984.2, "level": "full" }, "SAX (default precision)": { - "us": 2242.6, + "us": 2074.5, + "level": "full" + }, + "SAX (string stream, default precision)": { + "us": 2130.0, "level": "full" }, "SAX": { - "us": 2338.1, - "level": "full" - }, - "insitu (copy)": { - "us": 2384.0, + "us": 2257.3, "level": "full" }, "SAX (string stream)": { - "us": 2620.9, + "us": 2397.1, "level": "full" }, "SAX (raw numbers)": { - "us": 2692.4, + "us": 2483.8, "level": "full" }, "Document": { - "us": 2811.6, + "us": 2536.8, "level": "full" } } @@ -848,35 +848,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 1011.0, + "us": 985.9, "level": "full" }, "best_any": { "variant": "accept", - "us": 1011.0, + "us": 985.9, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1485.7, + "us": 1359.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1485.7, + "us": 1359.4, "level": "full" }, "variants": { "accept": { - "us": 1011.0, + "us": 985.9, "level": "full" }, "parse": { - "us": 1482.6, + "us": 1358.4, "level": "full" }, "read (reused)": { - "us": 1485.7, + "us": 1359.4, "level": "full" } } @@ -884,23 +884,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 4584.1, + "us": 2345.4, "level": "full" }, "best_any": { "variant": "accept", - "us": 4584.1, + "us": 2345.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 4584.1, + "us": 2345.4, "level": "full" }, "parse": { - "us": 11889.6, + "us": 9100.4, "level": "full" } } @@ -908,43 +908,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2255.5, + "us": 2221.7, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2255.5, + "us": 2221.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 5646.5, + "us": 5331.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 5646.5, + "us": 5331.2, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2255.5, - "level": "full" - }, - "insitu (copy)": { - "us": 5502.1, - "level": "full" - }, - "read": { - "us": 5527.5, + "us": 2221.7, "level": "full" }, "insitu (copy untimed)": { - "us": 5629.1, + "us": 5179.8, "level": "full" }, "read (reused allocator)": { - "us": 5646.5, + "us": 5331.2, + "level": "full" + }, + "read": { + "us": 5378.1, + "level": "full" + }, + "insitu (copy)": { + "us": 5491.3, "level": "full" } } @@ -952,31 +952,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3350.8, + "us": 3183.1, "level": "full" }, "best_any": { "variant": "DOM", - "us": 3350.8, + "us": 3183.1, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 3313.9, + "us": 3186.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 3313.9, + "us": 3186.6, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 3313.9, + "DOM": { + "us": 3183.1, "level": "full" }, - "DOM": { - "us": 3350.8, + "DOM (reused)": { + "us": 3186.6, "level": "full" } } @@ -985,14 +985,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3622.5, + "us": 3561.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3622.5, + "us": 3561.1, "level": "no UTF-8" } } @@ -1000,35 +1000,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 1979.8, + "us": 1837.3, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 1979.8, + "us": 1837.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 1979.8, + "us": 1837.3, + "level": "full" + }, + "generic (double, strict)": { + "us": 9708.0, "level": "full" }, "generic (double)": { - "us": 10134.5, + "us": 9885.4, "level": "partial" }, - "generic (double, strict)": { - "us": 10396.5, - "level": "full" - }, "generic": { - "us": 19520.5, + "us": 18873.7, "level": "partial" }, "generic (strict)": { - "us": 19829.4, + "us": 18922.0, "level": "full" } } @@ -1036,47 +1036,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 1717.9, + "us": 1637.2, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 1717.9, + "us": 1637.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5508.4, + "us": 5248.7, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5508.4, + "us": 5248.7, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 1717.9, + "us": 1637.2, "level": "full" }, "parse (numbers: none)": { - "us": 2958.7, + "us": 2827.8, "level": "full" }, "SAX": { - "us": 5462.1, + "us": 5242.8, "level": "full" }, "SAX (reused)": { - "us": 5508.4, - "level": "full" - }, - "parser (reused)": { - "us": 7315.4, + "us": 5248.7, "level": "full" }, "parse": { - "us": 7324.4, + "us": 6957.2, + "level": "full" + }, + "parser (reused)": { + "us": 6991.2, "level": "full" } } @@ -1084,95 +1084,95 @@ "RapidJSON": { "best": { "variant": "SAX (string stream, default precision)", - "us": 4104.1, + "us": 4113.6, "level": "full" }, "best_any": { - "variant": "SAX (string stream, default precision)", - "us": 4104.1, - "level": "full" + "variant": "SAX (string stream, default precision) (no encoding check)", + "us": 3965.7, + "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12066.1, + "us": 11583.8, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator) (no encoding check)", - "us": 11773.4, - "level": "no UTF-8" + "variant": "Document (reused allocator)", + "us": 11583.8, + "level": "full" }, "variants": { + "SAX (string stream, default precision) (no encoding check)": { + "us": 3965.7, + "level": "no UTF-8" + }, "SAX (string stream, default precision)": { - "us": 4104.1, + "us": 4113.6, "level": "full" }, "SAX (default precision)": { - "us": 4222.7, + "us": 4163.5, "level": "full" }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 4363.6, - "level": "no UTF-8" - }, "SAX (default precision) (no encoding check)": { - "us": 4755.9, + "us": 4576.6, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 10579.3, + "us": 10331.0, "level": "no UTF-8" }, "SAX (raw numbers)": { - "us": 10969.3, - "level": "full" - }, - "SAX (string stream) (no encoding check)": { - "us": 11047.5, - "level": "no UTF-8" - }, - "SAX": { - "us": 11206.5, + "us": 10358.8, "level": "full" }, "SAX (string stream)": { - "us": 11404.7, + "us": 11189.4, "level": "full" }, + "SAX": { + "us": 11207.3, + "level": "full" + }, + "SAX (string stream) (no encoding check)": { + "us": 11298.5, + "level": "no UTF-8" + }, "SAX (no encoding check)": { - "us": 11434.2, - "level": "no UTF-8" - }, - "insitu (copy untimed)": { - "us": 11461.5, - "level": "full" - }, - "Document": { - "us": 11730.2, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 11766.2, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 11773.4, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 11817.2, - "level": "no UTF-8" - }, - "insitu (copy)": { - "us": 11901.4, - "level": "full" - }, - "Document (no encoding check)": { - "us": 12056.3, + "us": 11469.3, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 12066.1, + "us": 11583.8, + "level": "full" + }, + "Document (reused allocator) (no encoding check)": { + "us": 11658.7, + "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 11714.2, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 11718.2, + "level": "no UTF-8" + }, + "insitu (copy untimed)": { + "us": 11786.4, + "level": "full" + }, + "insitu (copy) (no encoding check)": { + "us": 11928.4, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 12050.6, + "level": "full" + }, + "Document": { + "us": 12179.7, "level": "full" } } @@ -1270,35 +1270,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 34722.1, + "us": 34873.6, "level": "full" }, "best_any": { "variant": "accept", - "us": 34722.1, + "us": 34873.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 42164.4, + "us": 41107.2, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 42164.4, + "us": 41107.2, "level": "full" }, "variants": { "accept": { - "us": 34722.1, + "us": 34873.6, "level": "full" }, "read (reused)": { - "us": 42164.4, + "us": 41107.2, "level": "full" }, "parse": { - "us": 76936.0, + "us": 76807.7, "level": "full" } } @@ -1306,23 +1306,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 73561.0, + "us": 38947.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 73561.0, + "us": 38947.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 73561.0, + "us": 38947.7, "level": "full" }, "parse": { - "us": 382491.1, + "us": 341826.4, "level": "full" } } @@ -1330,43 +1330,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 128490.1, + "us": 128527.5, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 128490.1, + "us": 128527.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 65056.4, + "us": 62804.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 65056.4, + "us": 62804.0, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 65056.4, + "us": 62804.0, "level": "full" }, "insitu (copy untimed)": { - "us": 90958.6, + "us": 86512.4, "level": "full" }, "insitu (copy)": { - "us": 128490.1, - "level": "full" - }, - "read (raw numbers)": { - "us": 128990.8, + "us": 128527.5, "level": "full" }, "read": { - "us": 131323.7, + "us": 129469.9, + "level": "full" + }, + "read (raw numbers)": { + "us": 131687.9, "level": "full" } } @@ -1374,31 +1374,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 116703.6, + "us": 115296.4, "level": "full" }, "best_any": { "variant": "DOM", - "us": 116703.6, + "us": 115296.4, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 48271.1, + "us": 52296.2, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 48271.1, + "us": 52296.2, "level": "full" }, "variants": { "DOM (reused)": { - "us": 48271.1, + "us": 52296.2, "level": "full" }, "DOM": { - "us": 116703.6, + "us": 115296.4, "level": "full" } } @@ -1407,14 +1407,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 96080.3, + "us": 96606.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 96080.3, + "us": 96606.7, "level": "no UTF-8" } } @@ -1422,83 +1422,83 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 76009.4, + "us": 71381.7, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 76009.4, + "us": 71381.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 76009.4, + "us": 71381.7, "level": "full" }, "generic (double, strict)": { - "us": 231870.6, + "us": 228211.6, "level": "full" }, "generic (double)": { - "us": 233240.2, + "us": 229849.8, "level": "partial" }, "generic (strict)": { - "us": 329832.4, + "us": 320451.3, "level": "full" }, "generic": { - "us": 331531.4, + "us": 334059.3, "level": "partial" } } }, "Boost.JSON": { "best": { - "variant": "SAX (numbers: none)", - "us": 61476.5, + "variant": "SAX", + "us": 60744.9, "level": "full" }, "best_any": { - "variant": "SAX (numbers: none)", - "us": 61476.5, + "variant": "SAX", + "us": 60744.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 62717.1, + "us": 61078.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 62717.1, + "us": 61078.8, "level": "full" }, "variants": { - "SAX (numbers: none)": { - "us": 61476.5, + "SAX": { + "us": 60744.9, "level": "full" }, - "SAX": { - "us": 61948.9, + "SAX (numbers: none)": { + "us": 61025.4, "level": "full" }, "SAX (reused)": { - "us": 62717.1, + "us": 61078.8, "level": "full" }, "parser (reused)": { - "us": 134695.0, + "us": 133201.5, "level": "full" }, "parse": { - "us": 188572.0, + "us": 185277.7, "level": "full" }, "parse (numbers: none)": { - "us": 190538.8, + "us": 188742.1, "level": "full" } } @@ -1506,95 +1506,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 214648.7, + "us": 145136.8, "level": "full" }, "best_any": { - "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 130900.6, + "variant": "SAX (string stream) (no encoding check)", + "us": 127587.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 191448.2, + "us": 189729.7, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 186590.7, + "us": 188742.5, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 110856.4, - "level": "no UTF-8" - }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 130900.6, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 134485.1, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 154657.3, + "us": 95130.0, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 168746.8, + "us": 105523.0, "level": "full" }, - "SAX (raw numbers) (no encoding check)": { - "us": 171293.7, + "SAX (string stream) (no encoding check)": { + "us": 127587.3, + "level": "no UTF-8" + }, + "SAX (string stream, default precision) (no encoding check)": { + "us": 128983.6, + "level": "no UTF-8" + }, + "insitu (copy) (no encoding check)": { + "us": 140901.5, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 145136.8, + "level": "full" + }, + "SAX (no encoding check)": { + "us": 164777.9, "level": "no UTF-8" }, "SAX (default precision) (no encoding check)": { - "us": 171936.5, + "us": 169524.7, "level": "no UTF-8" }, - "SAX (no encoding check)": { - "us": 177498.7, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 186590.7, + "SAX (raw numbers) (no encoding check)": { + "us": 172688.8, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 188878.8, + "us": 187171.8, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 188742.5, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 191448.2, - "level": "full" - }, - "insitu (copy)": { - "us": 214648.7, + "us": 189729.7, "level": "full" }, "SAX (string stream)": { - "us": 250121.1, + "us": 242007.6, "level": "full" }, "SAX (string stream, default precision)": { - "us": 251293.4, + "us": 251596.7, "level": "full" }, "SAX (default precision)": { - "us": 289135.3, - "level": "full" - }, - "SAX": { - "us": 290081.1, + "us": 279258.6, "level": "full" }, "SAX (raw numbers)": { - "us": 301799.9, + "us": 284587.4, + "level": "full" + }, + "SAX": { + "us": 285477.1, "level": "full" }, "Document": { - "us": 305476.3, + "us": 297246.6, "level": "full" } } @@ -1728,23 +1728,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 3.3, + "us": 1.3, "level": "full" }, "best_any": { "variant": "accept", - "us": 3.3, + "us": 1.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 3.3, + "us": 1.3, "level": "full" }, "parse": { - "us": 18.6, + "us": 15.0, "level": "full" } } @@ -1762,31 +1762,31 @@ }, "best_reused": { "variant": "read (reused allocator)", - "us": 1.6, + "us": 1.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1.6, + "us": 1.5, "level": "full" }, "variants": { + "read (reused allocator)": { + "us": 1.5, + "level": "full" + }, "read": { "us": 1.6, "level": "full" }, + "insitu (copy)": { + "us": 1.6, + "level": "full" + }, "insitu (copy untimed)": { "us": 1.6, "level": "full" }, - "read (reused allocator)": { - "us": 1.6, - "level": "full" - }, - "insitu (copy)": { - "us": 1.7, - "level": "full" - }, "read (raw numbers)": { "us": 1.7, "level": "full" @@ -1829,14 +1829,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1.6, + "us": 1.5, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1.6, + "us": 1.5, "level": "no UTF-8" } } @@ -1860,20 +1860,20 @@ "level": "full" }, "generic (double, strict)": { - "us": 8.4, + "us": 8.1, "level": "full" }, "generic (double)": { - "us": 8.6, - "level": "partial" - }, - "generic": { - "us": 13.1, + "us": 8.2, "level": "partial" }, "generic (strict)": { - "us": 13.2, + "us": 12.1, "level": "full" + }, + "generic": { + "us": 12.2, + "level": "partial" } } }, @@ -1911,15 +1911,15 @@ "us": 3.2, "level": "full" }, - "parse": { - "us": 6.6, + "parser (reused)": { + "us": 6.4, "level": "full" }, "parse (numbers: none)": { - "us": 6.6, + "us": 6.5, "level": "full" }, - "parser (reused)": { + "parse": { "us": 6.6, "level": "full" } @@ -1928,31 +1928,31 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 7.0, + "us": 4.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 3.7, + "us": 3.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 8.3, + "us": 8.0, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 7.8, + "us": 7.5, "level": "no UTF-8" }, "variants": { - "insitu (copy) (no encoding check)": { - "us": 3.7, + "insitu (copy untimed) (no encoding check)": { + "us": 3.1, "level": "no UTF-8" }, - "insitu (copy untimed) (no encoding check)": { - "us": 3.8, + "insitu (copy) (no encoding check)": { + "us": 3.2, "level": "no UTF-8" }, "SAX (string stream, default precision) (no encoding check)": { @@ -1960,63 +1960,63 @@ "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 4.4, + "us": 4.3, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 6.9, + "insitu (copy)": { + "us": 4.8, "level": "full" }, - "insitu (copy)": { - "us": 7.0, + "insitu (copy untimed)": { + "us": 4.8, "level": "full" }, "SAX (default precision) (no encoding check)": { - "us": 7.2, + "us": 6.9, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 7.4, + "us": 7.0, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 7.6, + "us": 7.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 7.8, + "us": 7.5, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 8.3, + "us": 8.0, "level": "full" }, "Document (no encoding check)": { - "us": 8.4, + "us": 8.1, "level": "no UTF-8" }, + "SAX (string stream, default precision)": { + "us": 10.3, + "level": "full" + }, "SAX (string stream)": { "us": 10.5, "level": "full" }, - "SAX (string stream, default precision)": { - "us": 10.8, - "level": "full" - }, "SAX": { - "us": 12.2, + "us": 11.8, "level": "full" }, "SAX (default precision)": { - "us": 12.4, + "us": 11.8, "level": "full" }, "SAX (raw numbers)": { - "us": 12.4, + "us": 11.9, "level": "full" }, "Document": { - "us": 13.3, + "us": 12.7, "level": "full" } } @@ -2114,35 +2114,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 219.0, + "us": 215.1, "level": "full" }, "best_any": { "variant": "accept", - "us": 219.0, + "us": 215.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 260.5, + "us": 258.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 260.5, + "us": 258.6, "level": "full" }, "variants": { "accept": { - "us": 219.0, + "us": 215.1, "level": "full" }, "read (reused)": { - "us": 260.5, + "us": 258.6, "level": "full" }, "parse": { - "us": 268.5, + "us": 265.7, "level": "full" } } @@ -2150,23 +2150,23 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 551.1, + "us": 239.8, "level": "full" }, "best_any": { "variant": "accept", - "us": 551.1, + "us": 239.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 551.1, + "us": 239.8, "level": "full" }, "parse": { - "us": 3133.4, + "us": 2996.3, "level": "full" } } @@ -2174,43 +2174,43 @@ "yyjson": { "best": { "variant": "read", - "us": 331.1, + "us": 331.9, "level": "full" }, "best_any": { "variant": "read", - "us": 331.1, + "us": 331.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 330.1, + "us": 329.8, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 330.1, + "us": 329.8, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 296.8, + "us": 295.9, "level": "full" }, "read (reused allocator)": { - "us": 330.1, + "us": 329.8, "level": "full" }, "read": { - "us": 331.1, + "us": 331.9, "level": "full" }, "insitu (copy)": { - "us": 334.0, + "us": 334.3, "level": "full" }, "read (raw numbers)": { - "us": 334.3, + "us": 335.0, "level": "full" } } @@ -2218,31 +2218,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 288.9, + "us": 292.3, "level": "full" }, "best_any": { "variant": "DOM", - "us": 288.9, + "us": 292.3, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 287.8, + "us": 293.8, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 287.8, + "us": 293.8, "level": "full" }, "variants": { - "DOM (reused)": { - "us": 287.8, + "DOM": { + "us": 292.3, "level": "full" }, - "DOM": { - "us": 288.9, + "DOM (reused)": { + "us": 293.8, "level": "full" } } @@ -2251,14 +2251,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 288.1, + "us": 290.9, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 288.1, + "us": 290.9, "level": "no UTF-8" } } @@ -2266,35 +2266,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 450.8, + "us": 448.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 450.8, + "us": 448.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 450.8, + "us": 448.2, + "level": "full" + }, + "generic (double, strict)": { + "us": 2145.2, "level": "full" }, "generic (double)": { - "us": 2051.4, + "us": 2155.4, "level": "partial" }, - "generic (double, strict)": { - "us": 2062.3, - "level": "full" - }, "generic (strict)": { - "us": 2769.7, + "us": 2819.5, "level": "full" }, "generic": { - "us": 2775.2, + "us": 2938.7, "level": "partial" } } @@ -2302,47 +2302,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 587.8, + "us": 598.2, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 587.8, + "us": 598.2, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 600.6, + "us": 616.0, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 600.6, + "us": 616.0, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 587.8, + "us": 598.2, "level": "full" }, "SAX (reused)": { - "us": 600.6, + "us": 616.0, "level": "full" }, "SAX": { - "us": 601.3, - "level": "full" - }, - "parse (numbers: none)": { - "us": 1284.4, + "us": 630.9, "level": "full" }, "parser (reused)": { - "us": 1289.6, + "us": 1287.0, + "level": "full" + }, + "parse (numbers: none)": { + "us": 1293.9, "level": "full" }, "parse": { - "us": 1298.4, + "us": 1334.3, "level": "full" } } @@ -2350,95 +2350,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1259.7, + "us": 880.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 844.1, + "us": 749.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1501.7, + "us": 1604.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1401.4, + "us": 1419.3, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 804.9, + "us": 715.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 844.1, - "level": "no UTF-8" - }, - "SAX (string stream, default precision) (no encoding check)": { - "us": 960.4, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 978.6, + "us": 749.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1226.0, + "us": 820.5, "level": "full" }, "insitu (copy)": { - "us": 1259.7, + "us": 880.8, "level": "full" }, + "SAX (string stream, default precision) (no encoding check)": { + "us": 965.4, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 1005.2, + "level": "no UTF-8" + }, "SAX (default precision) (no encoding check)": { - "us": 1279.9, + "us": 1315.5, "level": "no UTF-8" }, "SAX (no encoding check)": { - "us": 1288.3, + "us": 1325.8, "level": "no UTF-8" }, "SAX (raw numbers) (no encoding check)": { - "us": 1324.1, + "us": 1355.0, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1401.4, + "us": 1419.3, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1434.4, + "us": 1475.9, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1501.7, + "us": 1604.5, "level": "full" }, "SAX (string stream, default precision)": { - "us": 1867.0, + "us": 1915.4, "level": "full" }, "SAX (string stream)": { - "us": 1886.3, + "us": 1938.5, "level": "full" }, "SAX (default precision)": { - "us": 2145.8, - "level": "full" - }, - "SAX": { - "us": 2154.2, + "us": 2215.5, "level": "full" }, "SAX (raw numbers)": { - "us": 2179.2, + "us": 2253.6, + "level": "full" + }, + "SAX": { + "us": 2289.5, "level": "full" }, "Document": { - "us": 2271.1, + "us": 2376.6, "level": "full" } } @@ -2536,35 +2536,35 @@ "nlohmann json_document": { "best": { "variant": "accept", - "us": 327.9, + "us": 330.7, "level": "full" }, "best_any": { "variant": "accept", - "us": 327.9, + "us": 330.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 523.6, + "us": 510.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 523.6, + "us": 510.5, "level": "full" }, "variants": { "accept": { - "us": 327.9, + "us": 330.7, "level": "full" }, "read (reused)": { - "us": 523.6, + "us": 510.5, "level": "full" }, "parse": { - "us": 523.7, + "us": 512.3, "level": "full" } } @@ -2572,51 +2572,55 @@ "nlohmann json": { "best": { "variant": "accept", - "us": 1030.3, + "us": 407.5, "level": "full" }, "best_any": { "variant": "accept", - "us": 1030.3, + "us": 407.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "accept": { - "us": 1030.3, + "us": 407.5, "level": "full" }, "parse": { - "us": 4688.2, + "us": 4030.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "insitu (copy)", - "us": 507.7, + "variant": "read", + "us": 506.6, "level": "full" }, "best_any": { - "variant": "insitu (copy)", - "us": 507.7, + "variant": "read", + "us": 506.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 507.8, + "us": 507.7, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 507.8, + "us": 507.7, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 472.2, + "us": 472.3, + "level": "full" + }, + "read": { + "us": 506.6, "level": "full" }, "insitu (copy)": { @@ -2624,15 +2628,11 @@ "level": "full" }, "read (reused allocator)": { - "us": 507.8, - "level": "full" - }, - "read": { - "us": 508.7, + "us": 507.7, "level": "full" }, "read (raw numbers)": { - "us": 520.4, + "us": 527.0, "level": "full" } } @@ -2640,31 +2640,31 @@ "simdjson": { "best": { "variant": "DOM", - "us": 573.6, + "us": 573.7, "level": "full" }, "best_any": { "variant": "DOM", - "us": 573.6, + "us": 573.7, "level": "full" }, "best_reused": { "variant": "DOM (reused)", - "us": 574.7, + "us": 572.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused)", - "us": 574.7, + "us": 572.6, "level": "full" }, "variants": { - "DOM": { - "us": 573.6, + "DOM (reused)": { + "us": 572.6, "level": "full" }, - "DOM (reused)": { - "us": 574.7, + "DOM": { + "us": 573.7, "level": "full" } } @@ -2673,14 +2673,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 692.5, + "us": 706.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 692.5, + "us": 706.6, "level": "no UTF-8" } } @@ -2688,35 +2688,35 @@ "Glaze": { "best": { "variant": "validate_json", - "us": 623.9, + "us": 617.2, "level": "full" }, "best_any": { "variant": "validate_json", - "us": 623.9, + "us": 617.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "validate_json": { - "us": 623.9, + "us": 617.2, "level": "full" }, "generic (double, strict)": { - "us": 3101.1, + "us": 3108.1, "level": "full" }, "generic (double)": { - "us": 3143.7, + "us": 3323.9, "level": "partial" }, "generic": { - "us": 4862.1, + "us": 4839.7, "level": "partial" }, "generic (strict)": { - "us": 4884.8, + "us": 4887.3, "level": "full" } } @@ -2724,47 +2724,47 @@ "Boost.JSON": { "best": { "variant": "SAX (numbers: none)", - "us": 574.7, + "us": 577.1, "level": "full" }, "best_any": { "variant": "SAX (numbers: none)", - "us": 574.7, + "us": 577.1, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 652.2, + "us": 658.0, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 652.2, + "us": 658.0, "level": "full" }, "variants": { "SAX (numbers: none)": { - "us": 574.7, - "level": "full" - }, - "SAX": { - "us": 651.6, + "us": 577.1, "level": "full" }, "SAX (reused)": { - "us": 652.2, + "us": 658.0, + "level": "full" + }, + "SAX": { + "us": 667.6, "level": "full" }, "parse (numbers: none)": { - "us": 1425.2, + "us": 1404.3, "level": "full" }, "parser (reused)": { - "us": 1532.7, + "us": 1519.6, "level": "full" }, "parse": { - "us": 1533.0, + "us": 1533.7, "level": "full" } } @@ -2772,95 +2772,95 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1633.2, + "us": 1301.9, "level": "full" }, "best_any": { - "variant": "SAX (string stream, default precision) (no encoding check)", - "us": 1182.1, + "variant": "SAX (default precision) (no encoding check)", + "us": 1213.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1761.6, + "us": 1774.7, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 1761.6, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 1729.6, + "level": "no UTF-8" }, "variants": { - "SAX (string stream, default precision) (no encoding check)": { - "us": 1182.1, - "level": "no UTF-8" - }, "SAX (default precision) (no encoding check)": { - "us": 1202.5, + "us": 1213.4, "level": "no UTF-8" }, - "SAX (string stream) (no encoding check)": { - "us": 1391.7, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 1397.0, - "level": "no UTF-8" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 1404.1, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 1437.9, + "SAX (string stream, default precision) (no encoding check)": { + "us": 1218.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1606.0, + "us": 1272.9, "level": "full" }, - "SAX (raw numbers) (no encoding check)": { - "us": 1616.8, + "insitu (copy untimed) (no encoding check)": { + "us": 1273.3, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1633.2, + "us": 1301.9, "level": "full" }, + "insitu (copy) (no encoding check)": { + "us": 1310.7, + "level": "no UTF-8" + }, + "SAX (no encoding check)": { + "us": 1405.8, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 1457.8, + "level": "no UTF-8" + }, + "SAX (raw numbers) (no encoding check)": { + "us": 1618.6, + "level": "no UTF-8" + }, "SAX (string stream, default precision)": { - "us": 1669.1, + "us": 1678.2, "level": "full" }, - "Document (reused allocator)": { - "us": 1761.6, - "level": "full" - }, - "Document (no encoding check)": { - "us": 1770.4, - "level": "no UTF-8" - }, "Document (reused allocator) (no encoding check)": { - "us": 1772.7, + "us": 1729.6, "level": "no UTF-8" }, + "Document (no encoding check)": { + "us": 1757.7, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 1774.7, + "level": "full" + }, "SAX (default precision)": { - "us": 1795.8, + "us": 1809.9, "level": "full" }, "SAX (string stream)": { - "us": 1918.0, + "us": 1920.4, "level": "full" }, "SAX": { - "us": 1945.9, + "us": 1937.5, "level": "full" }, "SAX (raw numbers)": { - "us": 2178.1, + "us": 2206.2, "level": "full" }, "Document": { - "us": 2338.1, + "us": 2322.9, "level": "full" } } @@ -2960,35 +2960,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 391.8, + "us": 386.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 391.8, + "us": 386.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 384.8, + "us": 384.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 384.8, + "us": 384.6, "level": "full" }, "variants": { "read (reused)": { - "us": 384.8, + "us": 384.6, "level": "full" }, "parse": { - "us": 391.8, + "us": 386.6, "level": "full" }, "parse_copy": { - "us": 430.3, + "us": 427.1, "level": "full" } } @@ -2996,23 +2996,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 796.6, + "us": 451.1, "level": "full" }, "best_any": { "variant": "sax", - "us": 796.6, + "us": 451.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 796.6, + "us": 451.1, "level": "full" }, "parse": { - "us": 3537.0, + "us": 3116.3, "level": "full" } } @@ -3020,39 +3020,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 443.8, + "us": 443.2, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 443.8, + "us": 443.2, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 449.5, + "us": 446.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 449.5, + "us": 446.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 407.0, + "us": 406.9, "level": "full" }, "insitu (copy)": { - "us": 443.8, + "us": 443.2, "level": "full" }, "read": { - "us": 446.5, + "us": 445.5, "level": "full" }, "read (reused allocator)": { - "us": 449.5, + "us": 446.5, "level": "full" } } @@ -3060,39 +3060,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 356.1, + "us": 355.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 356.1, + "us": 355.7, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 355.8, + "us": 354.6, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 355.8, + "us": 354.6, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 355.8, + "us": 354.6, "level": "full" }, "On-Demand": { - "us": 356.1, + "us": 355.7, "level": "full" }, "DOM (reused)": { - "us": 428.7, + "us": 412.8, "level": "full" }, "DOM": { - "us": 429.9, + "us": 415.3, "level": "full" } } @@ -3101,14 +3101,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 460.5, + "us": 459.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 460.5, + "us": 459.4, "level": "no UTF-8" } } @@ -3116,36 +3116,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2344.7, + "us": 2341.0, "level": "full" }, "best_any": { - "variant": "generic (double)", - "us": 2338.9, - "level": "partial" + "variant": "generic (double, strict)", + "us": 2341.0, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double)": { - "us": 2338.9, - "level": "partial" - }, "generic (double, strict)": { - "us": 2344.7, + "us": 2341.0, "level": "full" }, - "lazy_json": { - "us": 2953.9, + "generic (double)": { + "us": 2362.5, "level": "partial" }, - "generic": { - "us": 3048.3, + "lazy_json": { + "us": 2928.1, "level": "partial" }, "generic (strict)": { - "us": 3065.0, + "us": 3043.3, "level": "full" + }, + "generic": { + "us": 3058.8, + "level": "partial" } }, "excluded": { @@ -3155,39 +3155,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 733.7, + "us": 745.8, "level": "full" }, "best_any": { "variant": "SAX", - "us": 733.7, + "us": 745.8, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 733.7, + "us": 744.5, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 733.7, + "us": 744.5, "level": "full" }, "variants": { - "SAX": { - "us": 733.7, + "SAX (reused)": { + "us": 744.5, "level": "full" }, - "SAX (reused)": { - "us": 733.7, + "SAX": { + "us": 745.8, "level": "full" }, "parser (reused)": { - "us": 1494.8, + "us": 1459.1, "level": "full" }, "parse": { - "us": 1509.9, + "us": 1466.2, "level": "full" } } @@ -3195,71 +3195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1656.5, + "us": 1256.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1170.4, + "us": 1085.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1637.2, + "us": 1630.1, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1554.3, + "us": 1542.1, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1129.7, + "us": 1046.1, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1170.4, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 1254.3, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 1369.4, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 1548.2, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1554.3, + "us": 1085.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1615.8, + "us": 1216.2, "level": "full" }, - "Document (reused allocator)": { - "us": 1637.2, - "level": "full" + "SAX (string stream) (no encoding check)": { + "us": 1252.3, + "level": "no UTF-8" }, "insitu (copy)": { - "us": 1656.5, + "us": 1256.1, + "level": "full" + }, + "SAX (no encoding check)": { + "us": 1367.1, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1542.1, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1554.8, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 1630.1, "level": "full" }, "SAX (string stream)": { - "us": 2195.3, + "us": 2198.3, "level": "full" }, "SAX": { - "us": 2276.2, + "us": 2242.0, "level": "full" }, "Document": { - "us": 2410.6, + "us": 2405.0, "level": "full" } } @@ -3353,35 +3353,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 946.2, + "us": 1036.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 946.2, + "us": 1036.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 947.2, + "us": 1039.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 947.2, + "us": 1039.9, "level": "full" }, "variants": { "parse": { - "us": 946.2, + "us": 1036.3, "level": "full" }, "read (reused)": { - "us": 947.2, + "us": 1039.9, "level": "full" }, "parse_copy": { - "us": 1060.1, + "us": 1150.8, "level": "full" } } @@ -3389,23 +3389,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1547.8, + "us": 940.8, "level": "full" }, "best_any": { "variant": "sax", - "us": 1547.8, + "us": 940.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1547.8, + "us": 940.8, "level": "full" }, "parse": { - "us": 5365.9, + "us": 4676.2, "level": "full" } } @@ -3413,39 +3413,39 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 1155.1, + "us": 1146.0, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 1155.1, + "us": 1146.0, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1191.6, + "us": 1153.8, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1191.6, + "us": 1153.8, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 1045.4, + "us": 1039.2, "level": "full" }, "insitu (copy)": { - "us": 1155.1, + "us": 1146.0, "level": "full" }, "read": { - "us": 1156.2, + "us": 1147.7, "level": "full" }, "read (reused allocator)": { - "us": 1191.6, + "us": 1153.8, "level": "full" } } @@ -3453,39 +3453,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 812.0, + "us": 819.1, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 812.0, + "us": 819.1, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 811.7, + "us": 812.5, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 811.7, + "us": 812.5, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 811.7, + "us": 812.5, "level": "full" }, "On-Demand": { - "us": 812.0, - "level": "full" - }, - "DOM": { - "us": 1217.1, + "us": 819.1, "level": "full" }, "DOM (reused)": { - "us": 1222.5, + "us": 1037.8, + "level": "full" + }, + "DOM": { + "us": 1039.7, "level": "full" } } @@ -3494,14 +3494,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1209.8, + "us": 1209.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1209.8, + "us": 1209.1, "level": "no UTF-8" } } @@ -3509,35 +3509,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 4079.9, + "us": 4036.6, "level": "full" }, "best_any": { - "variant": "generic (double)", - "us": 4041.2, - "level": "partial" + "variant": "generic (double, strict)", + "us": 4036.6, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (double)": { - "us": 4041.2, - "level": "partial" - }, "generic (double, strict)": { - "us": 4079.9, + "us": 4036.6, "level": "full" }, + "generic (double)": { + "us": 4046.7, + "level": "partial" + }, "generic": { - "us": 5798.0, + "us": 5687.4, "level": "partial" }, "generic (strict)": { - "us": 5979.2, + "us": 5755.1, "level": "full" }, "lazy_json": { - "us": 13446.0, + "us": 13238.7, "level": "partial" } }, @@ -3548,111 +3548,111 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 1030.4, + "us": 1025.3, "level": "full" }, "best_any": { "variant": "SAX", - "us": 1030.4, + "us": 1025.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 1028.8, + "us": 1024.0, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 1028.8, + "us": 1024.0, "level": "full" }, "variants": { "SAX (reused)": { - "us": 1028.8, + "us": 1024.0, "level": "full" }, "SAX": { - "us": 1030.4, + "us": 1025.3, "level": "full" }, "parser (reused)": { - "us": 2055.5, + "us": 2020.3, "level": "full" }, "parse": { - "us": 2059.4, + "us": 2024.9, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX", - "us": 2340.1, + "variant": "insitu (copy)", + "us": 2114.2, "level": "full" }, "best_any": { "variant": "SAX (no encoding check)", - "us": 1743.1, + "us": 1749.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 2169.4, + "us": 2158.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 2148.8, + "us": 2093.6, "level": "no UTF-8" }, "variants": { "SAX (no encoding check)": { - "us": 1743.1, + "us": 1749.8, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { - "us": 1879.1, + "us": 1857.6, "level": "no UTF-8" }, "insitu (copy untimed) (no encoding check)": { - "us": 1979.5, + "us": 1887.0, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2084.8, + "us": 1998.1, + "level": "no UTF-8" + }, + "insitu (copy untimed)": { + "us": 2006.2, + "level": "full" + }, + "Document (reused allocator) (no encoding check)": { + "us": 2093.6, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 2114.5, + "us": 2095.3, "level": "no UTF-8" }, - "Document (reused allocator) (no encoding check)": { - "us": 2148.8, - "level": "no UTF-8" - }, - "Document (reused allocator)": { - "us": 2169.4, + "insitu (copy)": { + "us": 2114.2, "level": "full" }, - "insitu (copy untimed)": { - "us": 2290.0, + "Document (reused allocator)": { + "us": 2158.5, "level": "full" }, "SAX": { - "us": 2340.1, - "level": "full" - }, - "insitu (copy)": { - "us": 2396.5, + "us": 2303.8, "level": "full" }, "SAX (string stream)": { - "us": 2466.4, + "us": 2411.1, "level": "full" }, "Document": { - "us": 2683.7, + "us": 2667.5, "level": "full" } } @@ -3746,35 +3746,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 3887.9, + "us": 3704.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 3887.9, + "us": 3704.4, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 3880.6, + "us": 3684.6, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 3880.6, + "us": 3684.6, "level": "full" }, "variants": { "read (reused)": { - "us": 3880.6, + "us": 3684.6, "level": "full" }, "parse": { - "us": 3887.9, + "us": 3704.4, "level": "full" }, "parse_copy": { - "us": 4041.7, + "us": 3886.3, "level": "full" } } @@ -3782,23 +3782,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 6003.5, + "us": 3816.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 6003.5, + "us": 3816.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 6003.5, + "us": 3816.3, "level": "full" }, "parse": { - "us": 12388.5, + "us": 9664.6, "level": "full" } } @@ -3806,39 +3806,39 @@ "yyjson": { "best": { "variant": "read", - "us": 6101.7, + "us": 5973.6, "level": "full" }, "best_any": { "variant": "read", - "us": 6101.7, + "us": 5973.6, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 6126.8, + "us": 5970.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 6126.8, + "us": 5970.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 6021.1, - "level": "full" - }, - "read": { - "us": 6101.7, + "us": 5819.4, "level": "full" }, "read (reused allocator)": { - "us": 6126.8, + "us": 5970.3, + "level": "full" + }, + "read": { + "us": 5973.6, "level": "full" }, "insitu (copy)": { - "us": 6174.3, + "us": 6030.0, "level": "full" } } @@ -3846,39 +3846,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 3435.3, + "us": 3290.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 3435.3, + "us": 3290.7, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 3358.3, + "us": 3298.3, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 3358.3, + "us": 3298.3, "level": "full" }, "variants": { - "On-Demand (reused)": { - "us": 3358.3, + "On-Demand": { + "us": 3290.7, "level": "full" }, - "On-Demand": { - "us": 3435.3, + "On-Demand (reused)": { + "us": 3298.3, "level": "full" }, "DOM": { - "us": 4793.8, + "us": 4256.0, "level": "full" }, "DOM (reused)": { - "us": 4838.5, + "us": 4292.9, "level": "full" } } @@ -3887,14 +3887,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 4295.1, + "us": 4247.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 4295.1, + "us": 4247.0, "level": "no UTF-8" } } @@ -3902,35 +3902,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 10575.7, + "us": 10434.0, "level": "full" }, "best_any": { "variant": "generic (double, strict)", - "us": 10575.7, + "us": 10434.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double, strict)": { - "us": 10575.7, + "us": 10434.0, "level": "full" }, "generic (double)": { - "us": 10910.0, - "level": "partial" - }, - "generic": { - "us": 20137.8, + "us": 10607.1, "level": "partial" }, "lazy_json": { - "us": 20195.3, + "us": 19054.7, + "level": "partial" + }, + "generic": { + "us": 19350.7, "level": "partial" }, "generic (strict)": { - "us": 20606.8, + "us": 19696.8, "level": "full" } }, @@ -3941,39 +3941,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 6102.7, + "us": 5370.3, "level": "full" }, "best_any": { "variant": "SAX", - "us": 6102.7, + "us": 5370.3, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 5992.8, + "us": 5379.0, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 5992.8, + "us": 5379.0, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 5992.8, + "SAX": { + "us": 5370.3, "level": "full" }, - "SAX": { - "us": 6102.7, + "SAX (reused)": { + "us": 5379.0, "level": "full" }, "parse": { - "us": 7598.8, + "us": 7545.0, "level": "full" }, "parser (reused)": { - "us": 7637.0, + "us": 7573.0, "level": "full" } } @@ -3981,72 +3981,72 @@ "RapidJSON": { "best": { "variant": "SAX (string stream)", - "us": 11182.8, + "us": 11058.6, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 11109.0, + "us": 11008.1, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 12160.8, + "us": 12082.2, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator)", - "us": 12160.8, + "us": 12082.2, "level": "full" }, "variants": { "SAX (string stream) (no encoding check)": { - "us": 11109.0, + "us": 11008.1, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 11182.8, + "us": 11058.6, + "level": "full" + }, + "SAX": { + "us": 11182.9, "level": "full" }, "SAX (no encoding check)": { - "us": 11228.8, - "level": "no UTF-8" - }, - "SAX": { - "us": 11324.8, - "level": "full" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 11818.9, - "level": "no UTF-8" - }, - "insitu (copy untimed)": { - "us": 11895.4, - "level": "full" - }, - "insitu (copy)": { - "us": 12054.3, - "level": "full" - }, - "insitu (copy) (no encoding check)": { - "us": 12112.7, + "us": 11272.3, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 12160.8, + "us": 12082.2, "level": "full" }, "Document (reused allocator) (no encoding check)": { - "us": 12175.0, + "us": 12187.3, "level": "no UTF-8" }, - "Document": { + "Document (no encoding check)": { + "us": 12257.5, + "level": "no UTF-8" + }, + "insitu (copy untimed)": { "us": 12286.6, "level": "full" }, - "Document (no encoding check)": { - "us": 12496.0, + "insitu (copy)": { + "us": 12539.6, + "level": "full" + }, + "insitu (copy) (no encoding check)": { + "us": 12542.6, "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 12558.3, + "level": "no UTF-8" + }, + "Document": { + "us": 12950.9, + "level": "full" } } }, @@ -4139,35 +4139,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 89043.5, + "us": 89476.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 89043.5, + "us": 89476.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 53108.4, + "us": 51075.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 53108.4, + "us": 51075.9, "level": "full" }, "variants": { "read (reused)": { - "us": 53108.4, + "us": 51075.9, "level": "full" }, "parse": { - "us": 89043.5, + "us": 89476.6, "level": "full" }, "parse_copy": { - "us": 135380.5, + "us": 125128.7, "level": "full" } } @@ -4175,23 +4175,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 101516.2, + "us": 64405.9, "level": "full" }, "best_any": { "variant": "sax", - "us": 101516.2, + "us": 64405.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 101516.2, + "us": 64405.9, "level": "full" }, "parse": { - "us": 413745.8, + "us": 376561.5, "level": "full" } } @@ -4199,39 +4199,39 @@ "yyjson": { "best": { "variant": "read", - "us": 142879.7, + "us": 129054.4, "level": "full" }, "best_any": { "variant": "read", - "us": 142879.7, + "us": 129054.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 74378.1, + "us": 72262.0, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 74378.1, + "us": 72262.0, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 74378.1, + "us": 72262.0, "level": "full" }, "insitu (copy untimed)": { - "us": 99764.3, + "us": 94826.7, "level": "full" }, "read": { - "us": 142879.7, + "us": 129054.4, "level": "full" }, "insitu (copy)": { - "us": 144535.8, + "us": 135417.7, "level": "full" } } @@ -4239,39 +4239,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 96250.5, + "us": 94266.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 96250.5, + "us": 94266.7, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 49746.2, + "us": 50814.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 49746.2, + "us": 50814.7, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 49746.2, + "us": 50814.7, "level": "full" }, "DOM (reused)": { - "us": 62790.8, + "us": 62625.5, "level": "full" }, "On-Demand": { - "us": 96250.5, + "us": 94266.7, "level": "full" }, "DOM": { - "us": 135192.2, + "us": 129837.4, "level": "full" } } @@ -4280,14 +4280,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 107092.4, + "us": 103731.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 107092.4, + "us": 103731.2, "level": "no UTF-8" } } @@ -4295,35 +4295,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 250685.1, + "us": 249827.6, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 231181.0, + "us": 219119.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 231181.0, + "us": 219119.4, "level": "partial" }, "generic (double)": { - "us": 247067.6, + "us": 243138.2, "level": "partial" }, "generic (double, strict)": { - "us": 250685.1, + "us": 249827.6, "level": "full" }, "generic (strict)": { - "us": 347977.1, + "us": 336968.5, "level": "full" }, "generic": { - "us": 348741.8, + "us": 354331.2, "level": "partial" } }, @@ -4334,39 +4334,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 64381.8, + "us": 63332.9, "level": "full" }, "best_any": { "variant": "SAX", - "us": 64381.8, + "us": 63332.9, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 65835.9, + "us": 63505.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 65835.9, + "us": 63505.8, "level": "full" }, "variants": { "SAX": { - "us": 64381.8, + "us": 63332.9, "level": "full" }, "SAX (reused)": { - "us": 65835.9, + "us": 63505.8, "level": "full" }, "parser (reused)": { - "us": 150275.9, + "us": 144186.2, "level": "full" }, "parse": { - "us": 209907.9, + "us": 199425.2, "level": "full" } } @@ -4374,71 +4374,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 225716.3, + "us": 155532.2, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 134512.4, + "us": 128734.2, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 210147.4, + "us": 197189.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 199382.8, + "us": 193349.8, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 119705.8, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 134512.4, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 166643.2, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 173115.6, + "us": 100439.3, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 181500.1, + "us": 111624.6, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 199382.8, + "SAX (string stream) (no encoding check)": { + "us": 128734.2, "level": "no UTF-8" }, - "Document (no encoding check)": { - "us": 208113.1, + "insitu (copy) (no encoding check)": { + "us": 147439.7, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 155532.2, + "level": "full" + }, + "SAX (no encoding check)": { + "us": 166236.3, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 193349.8, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 210147.4, + "us": 197189.6, "level": "full" }, - "insitu (copy)": { - "us": 225716.3, - "level": "full" + "Document (no encoding check)": { + "us": 199542.0, + "level": "no UTF-8" }, "SAX (string stream)": { - "us": 259850.8, + "us": 248393.1, "level": "full" }, "SAX": { - "us": 290353.3, + "us": 271501.0, "level": "full" }, "Document": { - "us": 323477.4, + "us": 309554.0, "level": "full" } } @@ -4532,12 +4532,12 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_any": { "variant": "parse", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_reused": { @@ -4551,16 +4551,16 @@ "level": "full" }, "variants": { + "parse": { + "us": 1.9, + "level": "full" + }, "read (reused)": { "us": 1.9, "level": "full" }, - "parse": { - "us": 2.0, - "level": "full" - }, "parse_copy": { - "us": 2.1, + "us": 2.0, "level": "full" } } @@ -4568,23 +4568,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 4.0, + "us": 2.3, "level": "full" }, "best_any": { "variant": "sax", - "us": 4.0, + "us": 2.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 4.0, + "us": 2.3, "level": "full" }, "parse": { - "us": 17.9, + "us": 15.2, "level": "full" } } @@ -4602,16 +4602,20 @@ }, "best_reused": { "variant": "read (reused allocator)", - "us": 1.9, + "us": 1.8, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1.9, + "us": 1.8, "level": "full" }, "variants": { "read (reused allocator)": { + "us": 1.8, + "level": "full" + }, + "insitu (copy untimed)": { "us": 1.9, "level": "full" }, @@ -4622,22 +4626,18 @@ "insitu (copy)": { "us": 2.0, "level": "full" - }, - "insitu (copy untimed)": { - "us": 2.0, - "level": "full" } } }, "simdjson": { "best": { "variant": "On-Demand", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_reused": { @@ -4656,15 +4656,15 @@ "level": "full" }, "On-Demand": { - "us": 2.0, + "us": 1.9, "level": "full" }, "DOM (reused)": { - "us": 2.3, + "us": 2.2, "level": "full" }, "DOM": { - "us": 2.4, + "us": 2.3, "level": "full" } } @@ -4688,35 +4688,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 9.0, + "us": 8.5, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 6.4, + "us": 5.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 6.4, - "level": "partial" - }, - "generic (double)": { - "us": 9.0, + "us": 5.9, "level": "partial" }, "generic (double, strict)": { - "us": 9.0, + "us": 8.5, "level": "full" }, + "generic (double)": { + "us": 8.6, + "level": "partial" + }, "generic": { - "us": 13.4, + "us": 12.5, "level": "partial" }, "generic (strict)": { - "us": 13.4, + "us": 12.5, "level": "full" } }, @@ -4759,7 +4759,7 @@ "level": "full" }, "parse": { - "us": 7.2, + "us": 6.9, "level": "full" } } @@ -4767,17 +4767,17 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 7.6, + "us": 5.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 4.0, + "us": 3.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 9.0, + "us": 8.3, "level": "full" }, "best_reused_any": { @@ -4786,52 +4786,52 @@ "level": "no UTF-8" }, "variants": { - "insitu (copy untimed) (no encoding check)": { - "us": 3.9, + "insitu (copy) (no encoding check)": { + "us": 3.5, "level": "no UTF-8" }, - "insitu (copy) (no encoding check)": { - "us": 4.0, + "insitu (copy untimed) (no encoding check)": { + "us": 3.5, "level": "no UTF-8" }, "SAX (string stream) (no encoding check)": { "us": 4.4, "level": "no UTF-8" }, - "SAX (no encoding check)": { - "us": 7.0, - "level": "no UTF-8" - }, "insitu (copy untimed)": { - "us": 7.5, + "us": 5.1, "level": "full" }, "insitu (copy)": { - "us": 7.6, + "us": 5.2, "level": "full" }, + "SAX (no encoding check)": { + "us": 6.9, + "level": "no UTF-8" + }, "Document (reused allocator) (no encoding check)": { "us": 7.9, "level": "no UTF-8" }, - "Document (no encoding check)": { - "us": 8.7, - "level": "no UTF-8" - }, "Document (reused allocator)": { - "us": 9.0, + "us": 8.3, "level": "full" }, + "Document (no encoding check)": { + "us": 8.4, + "level": "no UTF-8" + }, "SAX (string stream)": { - "us": 11.3, + "us": 10.8, "level": "full" }, "SAX": { - "us": 12.4, + "us": 11.9, "level": "full" }, "Document": { - "us": 13.8, + "us": 13.1, "level": "full" } } @@ -4925,35 +4925,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 337.4, + "us": 337.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 337.4, + "us": 337.6, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 331.3, + "us": 332.8, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 331.3, + "us": 332.8, "level": "full" }, "variants": { "read (reused)": { - "us": 331.3, + "us": 332.8, "level": "full" }, "parse": { - "us": 337.4, + "us": 337.6, "level": "full" }, "parse_copy": { - "us": 369.3, + "us": 367.1, "level": "full" } } @@ -4961,63 +4961,63 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 692.8, + "us": 386.6, "level": "full" }, "best_any": { "variant": "sax", - "us": 692.8, + "us": 386.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 692.8, + "us": 386.6, "level": "full" }, "parse": { - "us": 3302.2, + "us": 3066.2, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 383.9, + "variant": "insitu (copy)", + "us": 383.4, "level": "full" }, "best_any": { - "variant": "read", - "us": 383.9, + "variant": "insitu (copy)", + "us": 383.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 383.7, + "us": 386.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 383.7, + "us": 386.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 358.2, - "level": "full" - }, - "read (reused allocator)": { - "us": 383.7, - "level": "full" - }, - "read": { - "us": 383.9, + "us": 359.0, "level": "full" }, "insitu (copy)": { - "us": 384.3, + "us": 383.4, + "level": "full" + }, + "read (reused allocator)": { + "us": 386.5, + "level": "full" + }, + "read": { + "us": 386.9, "level": "full" } } @@ -5025,39 +5025,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 336.2, + "us": 338.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 336.2, + "us": 338.7, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 335.0, + "us": 338.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 335.0, + "us": 338.1, "level": "full" }, "variants": { "On-Demand (reused)": { - "us": 335.0, + "us": 338.1, "level": "full" }, "On-Demand": { - "us": 336.2, - "level": "full" - }, - "DOM": { - "us": 405.6, + "us": 338.7, "level": "full" }, "DOM (reused)": { - "us": 405.8, + "us": 425.6, + "level": "full" + }, + "DOM": { + "us": 426.0, "level": "full" } } @@ -5066,14 +5066,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 341.9, + "us": 343.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 341.9, + "us": 343.7, "level": "no UTF-8" } } @@ -5081,36 +5081,36 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 2143.7, + "us": 2157.3, "level": "full" }, "best_any": { "variant": "lazy_json", - "us": 1722.6, + "us": 1700.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "lazy_json": { - "us": 1722.6, + "us": 1700.7, "level": "partial" }, "generic (double, strict)": { - "us": 2143.7, + "us": 2157.3, "level": "full" }, "generic (double)": { - "us": 2148.0, + "us": 2230.9, + "level": "partial" + }, + "generic": { + "us": 2936.7, "level": "partial" }, "generic (strict)": { - "us": 2854.8, + "us": 2937.9, "level": "full" - }, - "generic": { - "us": 2857.6, - "level": "partial" } }, "excluded": { @@ -5120,39 +5120,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 616.8, + "us": 638.8, "level": "full" }, "best_any": { "variant": "SAX", - "us": 616.8, + "us": 638.8, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 616.1, + "us": 638.8, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 616.1, + "us": 638.8, "level": "full" }, "variants": { - "SAX (reused)": { - "us": 616.1, - "level": "full" - }, "SAX": { - "us": 616.8, + "us": 638.8, "level": "full" }, - "parser (reused)": { - "us": 1354.4, + "SAX (reused)": { + "us": 638.8, "level": "full" }, "parse": { - "us": 1366.1, + "us": 1349.4, + "level": "full" + }, + "parser (reused)": { + "us": 1407.7, "level": "full" } } @@ -5160,71 +5160,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1316.4, + "us": 936.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 902.5, + "us": 809.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1566.2, + "us": 1584.3, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1466.4, + "us": 1477.6, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 865.9, + "us": 769.9, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 902.5, - "level": "no UTF-8" - }, - "SAX (string stream) (no encoding check)": { - "us": 1009.4, + "us": 809.5, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1286.1, + "us": 887.9, "level": "full" }, - "SAX (no encoding check)": { - "us": 1292.3, - "level": "no UTF-8" - }, "insitu (copy)": { - "us": 1316.4, + "us": 936.2, "level": "full" }, + "SAX (string stream) (no encoding check)": { + "us": 1007.8, + "level": "no UTF-8" + }, + "SAX (no encoding check)": { + "us": 1284.0, + "level": "no UTF-8" + }, "Document (reused allocator) (no encoding check)": { - "us": 1466.4, + "us": 1477.6, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1498.4, + "us": 1519.6, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1566.2, + "us": 1584.3, "level": "full" }, "SAX (string stream)": { - "us": 1924.9, + "us": 1969.8, "level": "full" }, "SAX": { - "us": 2147.3, + "us": 2204.2, "level": "full" }, "Document": { - "us": 2336.9, + "us": 2341.7, "level": "full" } } @@ -5318,35 +5318,35 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 718.2, + "us": 701.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 718.2, + "us": 701.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 712.6, + "us": 702.3, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 712.6, + "us": 702.3, "level": "full" }, "variants": { - "read (reused)": { - "us": 712.6, + "parse": { + "us": 701.1, "level": "full" }, - "parse": { - "us": 718.2, + "read (reused)": { + "us": 702.3, "level": "full" }, "parse_copy": { - "us": 745.3, + "us": 734.1, "level": "full" } } @@ -5354,23 +5354,23 @@ "nlohmann json": { "best": { "variant": "sax", - "us": 1244.1, + "us": 656.0, "level": "full" }, "best_any": { "variant": "sax", - "us": 1244.1, + "us": 656.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "sax": { - "us": 1244.1, + "us": 656.0, "level": "full" }, "parse": { - "us": 4976.4, + "us": 4293.2, "level": "full" } } @@ -5378,39 +5378,39 @@ "yyjson": { "best": { "variant": "read", - "us": 672.6, + "us": 664.5, "level": "full" }, "best_any": { "variant": "read", - "us": 672.6, + "us": 664.5, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 673.4, + "us": 664.3, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 673.4, + "us": 664.3, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 642.3, - "level": "full" - }, - "read": { - "us": 672.6, - "level": "full" - }, - "insitu (copy)": { - "us": 673.3, + "us": 633.0, "level": "full" }, "read (reused allocator)": { - "us": 673.4, + "us": 664.3, + "level": "full" + }, + "read": { + "us": 664.5, + "level": "full" + }, + "insitu (copy)": { + "us": 664.8, "level": "full" } } @@ -5418,39 +5418,39 @@ "simdjson": { "best": { "variant": "On-Demand", - "us": 651.3, + "us": 650.7, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 651.3, + "us": 650.7, "level": "full" }, "best_reused": { "variant": "On-Demand (reused)", - "us": 649.7, + "us": 650.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 649.7, + "us": 650.7, "level": "full" }, "variants": { - "On-Demand (reused)": { - "us": 649.7, - "level": "full" - }, "On-Demand": { - "us": 651.3, + "us": 650.7, "level": "full" }, - "DOM (reused)": { - "us": 1050.9, + "On-Demand (reused)": { + "us": 650.7, "level": "full" }, "DOM": { - "us": 1051.6, + "us": 869.4, + "level": "full" + }, + "DOM (reused)": { + "us": 871.1, "level": "full" } } @@ -5474,35 +5474,35 @@ "Glaze": { "best": { "variant": "generic (double, strict)", - "us": 3296.5, + "us": 3305.0, "level": "full" }, "best_any": { "variant": "generic (double, strict)", - "us": 3296.5, + "us": 3305.0, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "generic (double, strict)": { - "us": 3296.5, + "us": 3305.0, "level": "full" }, "generic (double)": { - "us": 3325.1, + "us": 3338.0, "level": "partial" }, "lazy_json": { - "us": 3484.3, + "us": 3381.8, "level": "partial" }, "generic (strict)": { - "us": 5084.3, + "us": 5035.1, "level": "full" }, "generic": { - "us": 5087.1, + "us": 5072.3, "level": "partial" } }, @@ -5513,39 +5513,39 @@ "Boost.JSON": { "best": { "variant": "SAX", - "us": 697.7, + "us": 714.5, "level": "full" }, "best_any": { "variant": "SAX", - "us": 697.7, + "us": 714.5, "level": "full" }, "best_reused": { "variant": "SAX (reused)", - "us": 696.8, + "us": 713.9, "level": "full" }, "best_reused_any": { "variant": "SAX (reused)", - "us": 696.8, + "us": 713.9, "level": "full" }, "variants": { "SAX (reused)": { - "us": 696.8, + "us": 713.9, "level": "full" }, "SAX": { - "us": 697.7, + "us": 714.5, "level": "full" }, "parser (reused)": { - "us": 1687.4, + "us": 1677.1, "level": "full" }, "parse": { - "us": 1697.9, + "us": 1683.7, "level": "full" } } @@ -5553,71 +5553,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1799.0, + "us": 1471.8, "level": "full" }, "best_any": { "variant": "SAX (string stream) (no encoding check)", - "us": 1451.9, + "us": 1444.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1943.5, + "us": 1962.7, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 1943.5, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 1916.0, + "level": "no UTF-8" }, "variants": { - "SAX (string stream) (no encoding check)": { - "us": 1451.9, - "level": "no UTF-8" - }, - "SAX (no encoding check)": { - "us": 1480.3, - "level": "no UTF-8" + "insitu (copy untimed)": { + "us": 1429.5, + "level": "full" }, "insitu (copy untimed) (no encoding check)": { - "us": 1574.3, + "us": 1439.7, + "level": "no UTF-8" + }, + "SAX (string stream) (no encoding check)": { + "us": 1444.5, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 1471.8, + "level": "full" + }, + "SAX (no encoding check)": { + "us": 1473.6, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1604.6, + "us": 1473.6, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 1777.5, - "level": "full" - }, - "insitu (copy)": { - "us": 1799.0, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1943.5, - "level": "full" - }, "Document (no encoding check)": { - "us": 1943.9, + "us": 1913.2, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1916.0, "level": "no UTF-8" }, "SAX (string stream)": { - "us": 1955.5, + "us": 1948.5, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 1956.5, - "level": "no UTF-8" + "Document (reused allocator)": { + "us": 1962.7, + "level": "full" }, "SAX": { - "us": 2070.0, + "us": 2019.5, "level": "full" }, "Document": { - "us": 2514.2, + "us": 2467.2, "level": "full" } } @@ -5712,64 +5712,64 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "parse", - "us": 332.3, + "variant": "structs (from_json)", + "us": 329.1, "level": "full" }, "best_any": { - "variant": "parse", - "us": 332.3, + "variant": "structs (from_json)", + "us": 329.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 325.2, + "us": 320.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 325.2, + "us": 320.1, "level": "full" }, "variants": { "read (reused)": { - "us": 325.2, - "level": "full" - }, - "parse": { - "us": 332.3, + "us": 320.1, "level": "full" }, "structs (from_json)": { - "us": 334.2, + "us": 329.1, + "level": "full" + }, + "parse": { + "us": 330.4, "level": "full" }, "parse_copy": { - "us": 370.6, + "us": 368.7, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 3325.0, + "variant": "parse", + "us": 3032.2, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 3325.0, + "variant": "parse", + "us": 3032.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 3325.0, + "parse": { + "us": 3032.2, "level": "full" }, - "parse": { - "us": 3353.0, + "structs (from_json)": { + "us": 3062.7, "level": "full" } } @@ -5777,43 +5777,43 @@ "yyjson": { "best": { "variant": "read", - "us": 397.9, + "us": 396.7, "level": "full" }, "best_any": { "variant": "read", - "us": 397.9, + "us": 396.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 403.6, + "us": 401.9, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 403.6, + "us": 401.9, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 361.4, + "us": 358.3, "level": "full" }, "read": { - "us": 397.9, + "us": 396.7, "level": "full" }, "insitu (copy)": { - "us": 401.7, + "us": 397.6, "level": "full" }, "read (raw numbers)": { - "us": 402.4, + "us": 401.9, "level": "full" }, "read (reused allocator)": { - "us": 403.6, + "us": 401.9, "level": "full" } } @@ -5821,47 +5821,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 323.5, + "us": 323.2, "level": "full" }, "best_any": { - "variant": "On-Demand (key selectors)", - "us": 183.6, + "variant": "On-Demand", + "us": 185.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 320.2, + "us": 325.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 183.7, + "us": 182.8, "level": "partial" }, "variants": { - "On-Demand (key selectors)": { - "us": 183.6, - "level": "partial" - }, "On-Demand (reused)": { - "us": 183.7, + "us": 182.8, "level": "partial" }, "On-Demand": { - "us": 187.7, + "us": 185.7, + "level": "partial" + }, + "On-Demand (key selectors)": { + "us": 185.7, "level": "partial" }, "On-Demand structs": { - "us": 193.6, + "us": 189.1, "level": "partial" }, - "DOM (reused)": { - "us": 320.2, + "DOM": { + "us": 323.2, "level": "full" }, - "DOM": { - "us": 323.5, + "DOM (reused)": { + "us": 325.7, "level": "full" } } @@ -5870,14 +5870,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 413.0, + "us": 412.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 413.0, + "us": 412.4, "level": "no UTF-8" } } @@ -5885,44 +5885,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 529.4, + "us": 523.3, "level": "full" }, "best_any": { "variant": "structs", - "us": 342.0, + "us": 337.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 342.0, + "us": 337.9, "level": "partial" }, "structs (validate_skipped)": { - "us": 529.4, + "us": 523.3, "level": "full" }, "lazy_json": { - "us": 981.9, + "us": 970.1, + "level": "partial" + }, + "generic (double)": { + "us": 2416.0, "level": "partial" }, "generic (double, strict)": { - "us": 2411.8, - "level": "full" - }, - "generic (double)": { - "us": 2429.0, - "level": "partial" - }, - "generic (strict)": { - "us": 3106.7, + "us": 2418.7, "level": "full" }, "generic": { - "us": 3112.1, + "us": 3112.2, "level": "partial" + }, + "generic (strict)": { + "us": 3118.8, + "level": "full" } }, "excluded": { @@ -5932,35 +5932,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 883.6, + "us": 899.3, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 883.6, + "us": 899.3, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1462.3, + "us": 1419.0, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1462.3, + "us": 1419.0, "level": "full" }, "variants": { "parse_into structs": { - "us": 883.6, + "us": 899.3, "level": "full" }, "parser (reused)": { - "us": 1462.3, + "us": 1419.0, "level": "full" }, "parse": { - "us": 1476.7, + "us": 1425.6, "level": "full" } }, @@ -5971,71 +5971,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1600.7, + "us": 1206.8, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1121.3, + "us": 1036.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1576.1, + "us": 1569.5, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1486.4, + "us": 1480.9, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1078.7, + "us": 998.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1121.3, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 1400.4, - "level": "no UTF-8" - }, - "Document (reused allocator) (no encoding check)": { - "us": 1486.4, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 1498.9, - "level": "no UTF-8" - }, - "Document (raw numbers) (no encoding check)": { - "us": 1536.7, + "us": 1036.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1560.4, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1576.1, + "us": 1166.7, "level": "full" }, "insitu (copy)": { - "us": 1600.7, + "us": 1206.8, + "level": "full" + }, + "Document (string stream) (no encoding check)": { + "us": 1402.6, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1480.9, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1496.2, + "level": "no UTF-8" + }, + "Document (raw numbers) (no encoding check)": { + "us": 1517.2, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 1569.5, "level": "full" }, "Document (string stream)": { - "us": 2357.1, + "us": 2323.1, "level": "full" }, "Document": { - "us": 2358.8, + "us": 2367.4, "level": "full" }, "Document (raw numbers)": { - "us": 2394.5, + "us": 2396.2, "level": "full" } } @@ -6121,63 +6121,63 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 765.3, + "us": 855.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 765.3, + "us": 855.1, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 760.3, + "us": 856.7, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 760.3, + "us": 856.7, "level": "full" }, "variants": { - "read (reused)": { - "us": 760.3, + "parse": { + "us": 855.1, "level": "full" }, - "parse": { - "us": 765.3, + "read (reused)": { + "us": 856.7, "level": "full" }, "structs (from_json)": { - "us": 796.0, + "us": 885.4, "level": "full" }, "parse_copy": { - "us": 886.0, + "us": 967.7, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 5125.6, + "variant": "parse", + "us": 4466.1, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 5125.6, + "variant": "parse", + "us": 4466.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 5125.6, + "parse": { + "us": 4466.1, "level": "full" }, - "parse": { - "us": 5171.2, + "structs (from_json)": { + "us": 4477.8, "level": "full" } } @@ -6185,43 +6185,43 @@ "yyjson": { "best": { "variant": "insitu (copy)", - "us": 999.2, + "us": 994.1, "level": "full" }, "best_any": { "variant": "insitu (copy)", - "us": 999.2, + "us": 994.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 1012.9, + "us": 1000.5, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 1012.9, + "us": 1000.5, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 880.4, + "us": 877.6, "level": "full" }, "insitu (copy)": { - "us": 999.2, + "us": 994.1, "level": "full" }, "read": { - "us": 999.4, - "level": "full" - }, - "read (raw numbers)": { - "us": 1008.9, + "us": 996.1, "level": "full" }, "read (reused allocator)": { - "us": 1012.9, + "us": 1000.5, + "level": "full" + }, + "read (raw numbers)": { + "us": 1006.0, "level": "full" } } @@ -6229,47 +6229,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 756.1, + "us": 748.0, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 509.4, + "us": 508.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 751.9, + "us": 744.5, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 509.0, + "us": 506.5, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 509.0, + "us": 506.5, "level": "partial" }, "On-Demand": { - "us": 509.4, + "us": 508.3, "level": "partial" }, "On-Demand (key selectors)": { - "us": 510.5, + "us": 509.7, "level": "partial" }, "On-Demand structs": { - "us": 548.8, + "us": 549.1, "level": "partial" }, "DOM (reused)": { - "us": 751.9, + "us": 744.5, "level": "full" }, "DOM": { - "us": 756.1, + "us": 748.0, "level": "full" } } @@ -6278,14 +6278,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1042.6, + "us": 1044.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1042.6, + "us": 1044.2, "level": "no UTF-8" } } @@ -6293,43 +6293,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 1434.9, + "us": 1472.8, "level": "full" }, "best_any": { "variant": "structs", - "us": 409.5, + "us": 406.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 409.5, + "us": 406.4, "level": "partial" }, "structs (validate_skipped)": { - "us": 1434.9, + "us": 1472.8, "level": "full" }, "generic (double, strict)": { - "us": 3911.3, + "us": 3897.9, "level": "full" }, "generic (double)": { - "us": 4056.8, + "us": 3922.5, "level": "partial" }, "generic": { - "us": 5729.0, + "us": 5554.6, "level": "partial" }, "generic (strict)": { - "us": 5799.8, + "us": 5694.8, "level": "full" }, "lazy_json": { - "us": 9001.1, + "us": 9081.6, "level": "partial" } }, @@ -6340,35 +6340,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1379.9, + "us": 1352.9, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1379.9, + "us": 1352.9, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1908.9, + "us": 1868.2, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1908.9, + "us": 1868.2, "level": "full" }, "variants": { "parse_into structs": { - "us": 1379.9, - "level": "full" - }, - "parse": { - "us": 1907.9, + "us": 1352.9, "level": "full" }, "parser (reused)": { - "us": 1908.9, + "us": 1868.2, + "level": "full" + }, + "parse": { + "us": 1875.8, "level": "full" } }, @@ -6379,71 +6379,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2245.1, + "us": 1947.1, "level": "full" }, "best_any": { - "variant": "Document (no encoding check)", - "us": 1939.6, + "variant": "insitu (copy) (no encoding check)", + "us": 1846.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1985.5, + "us": 1988.4, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 1985.5, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 1927.6, + "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1817.0, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 1939.6, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 1968.9, - "level": "no UTF-8" - }, - "Document (reused allocator)": { - "us": 1985.5, - "level": "full" - }, - "Document (reused allocator) (no encoding check)": { - "us": 2018.4, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 2079.1, + "us": 1725.9, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2127.0, + "us": 1833.4, "level": "full" }, - "Document (raw numbers) (no encoding check)": { - "us": 2233.3, + "insitu (copy) (no encoding check)": { + "us": 1846.7, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 1927.6, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 1929.5, "level": "no UTF-8" }, "insitu (copy)": { - "us": 2245.1, + "us": 1947.1, "level": "full" }, + "Document (reused allocator)": { + "us": 1988.4, + "level": "full" + }, + "Document (string stream) (no encoding check)": { + "us": 2068.3, + "level": "no UTF-8" + }, + "Document (raw numbers) (no encoding check)": { + "us": 2181.4, + "level": "no UTF-8" + }, "Document": { - "us": 2568.2, + "us": 2504.5, "level": "full" }, "Document (string stream)": { - "us": 2616.9, + "us": 2600.7, "level": "full" }, "Document (raw numbers)": { - "us": 2848.5, + "us": 2748.6, "level": "full" } } @@ -6528,64 +6528,64 @@ "canada": { "nlohmann json_document": { "best": { - "variant": "parse", - "us": 1390.5, + "variant": "structs (from_json)", + "us": 1359.7, "level": "full" }, "best_any": { - "variant": "parse", - "us": 1390.5, + "variant": "structs (from_json)", + "us": 1359.7, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 1465.9, + "us": 1366.5, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 1465.9, + "us": 1366.5, "level": "full" }, "variants": { - "parse": { - "us": 1390.5, + "structs (from_json)": { + "us": 1359.7, "level": "full" }, - "structs (from_json)": { - "us": 1416.3, + "parse": { + "us": 1366.4, "level": "full" }, "read (reused)": { - "us": 1465.9, + "us": 1366.5, "level": "full" }, "parse_copy": { - "us": 1603.4, + "us": 1513.7, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 11908.0, + "variant": "parse", + "us": 9084.8, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 11908.0, + "variant": "parse", + "us": 9084.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 11908.0, + "parse": { + "us": 9084.8, "level": "full" }, - "parse": { - "us": 12035.9, + "structs (from_json)": { + "us": 9207.1, "level": "full" } } @@ -6593,43 +6593,43 @@ "yyjson": { "best": { "variant": "read (raw numbers)", - "us": 2236.0, + "us": 2227.9, "level": "full" }, "best_any": { "variant": "read (raw numbers)", - "us": 2236.0, + "us": 2227.9, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 5554.3, + "us": 5327.2, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 5554.3, + "us": 5327.2, "level": "full" }, "variants": { "read (raw numbers)": { - "us": 2236.0, + "us": 2227.9, "level": "full" }, "insitu (copy untimed)": { - "us": 5480.1, - "level": "full" - }, - "read": { - "us": 5525.7, + "us": 5184.5, "level": "full" }, "read (reused allocator)": { - "us": 5554.3, + "us": 5327.2, "level": "full" }, "insitu (copy)": { - "us": 5597.7, + "us": 5336.3, + "level": "full" + }, + "read": { + "us": 5339.1, "level": "full" } } @@ -6637,47 +6637,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 3409.0, + "us": 3189.3, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 700.0, + "us": 706.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 3229.9, + "us": 3194.0, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 698.1, + "us": 698.7, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 698.1, + "us": 698.7, "level": "partial" }, "On-Demand": { - "us": 700.0, + "us": 706.7, "level": "partial" }, "On-Demand (key selectors)": { - "us": 747.1, + "us": 737.9, "level": "partial" }, "On-Demand structs": { - "us": 921.4, + "us": 917.6, "level": "partial" }, - "DOM (reused)": { - "us": 3229.9, + "DOM": { + "us": 3189.3, "level": "full" }, - "DOM": { - "us": 3409.0, + "DOM (reused)": { + "us": 3194.0, "level": "full" } } @@ -6686,14 +6686,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3694.8, + "us": 3631.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3694.8, + "us": 3631.6, "level": "no UTF-8" } } @@ -6701,43 +6701,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 1913.3, + "us": 1852.9, "level": "full" }, "best_any": { "variant": "structs", - "us": 431.3, + "us": 434.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 431.3, + "us": 434.0, "level": "partial" }, "structs (validate_skipped)": { - "us": 1913.3, + "us": 1852.9, "level": "full" }, "lazy_json": { - "us": 3043.2, + "us": 3642.8, "level": "partial" }, "generic (double)": { - "us": 10291.5, + "us": 9923.7, "level": "partial" }, "generic (double, strict)": { - "us": 10403.4, + "us": 9959.2, "level": "full" }, "generic": { - "us": 19729.3, + "us": 18760.9, "level": "partial" }, "generic (strict)": { - "us": 20097.5, + "us": 18886.4, "level": "full" } }, @@ -6748,35 +6748,35 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 7216.6, + "us": 7010.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 7216.6, + "us": 7010.6, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 7211.5, + "us": 7045.7, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 7211.5, + "us": 7045.7, "level": "full" }, "variants": { - "parser (reused)": { - "us": 7211.5, + "parse": { + "us": 7010.6, "level": "full" }, - "parse": { - "us": 7216.6, + "parser (reused)": { + "us": 7045.7, "level": "full" }, "parse_into structs": { - "us": 7453.0, + "us": 7233.9, "level": "full" } }, @@ -6787,71 +6787,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 11762.3, + "us": 11910.4, "level": "full" }, "best_any": { - "variant": "Document (string stream) (no encoding check)", - "us": 11435.5, + "variant": "Document (no encoding check)", + "us": 11691.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 11421.3, + "us": 11583.4, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 11421.3, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 11559.2, + "level": "no UTF-8" }, "variants": { - "Document (reused allocator)": { - "us": 11421.3, - "level": "full" - }, - "Document (string stream) (no encoding check)": { - "us": 11435.5, - "level": "no UTF-8" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 11462.8, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 11520.4, - "level": "no UTF-8" - }, - "insitu (copy untimed)": { - "us": 11547.2, - "level": "full" - }, "Document (reused allocator) (no encoding check)": { - "us": 11592.0, + "us": 11559.2, "level": "no UTF-8" }, - "insitu (copy)": { - "us": 11762.3, - "level": "full" - }, - "Document": { - "us": 11791.5, + "Document (reused allocator)": { + "us": 11583.4, "level": "full" }, "Document (no encoding check)": { - "us": 11945.4, + "us": 11691.9, "level": "no UTF-8" }, + "insitu (copy untimed) (no encoding check)": { + "us": 11762.0, + "level": "no UTF-8" + }, + "insitu (copy untimed)": { + "us": 11881.4, + "level": "full" + }, + "insitu (copy) (no encoding check)": { + "us": 11899.0, + "level": "no UTF-8" + }, + "insitu (copy)": { + "us": 11910.4, + "level": "full" + }, "Document (string stream)": { - "us": 12137.6, + "us": 11916.0, + "level": "full" + }, + "Document (string stream) (no encoding check)": { + "us": 12040.3, + "level": "no UTF-8" + }, + "Document": { + "us": 12262.9, "level": "full" }, "Document (raw numbers) (no encoding check)": { - "us": 13702.4, + "us": 12511.0, "level": "no UTF-8" }, "Document (raw numbers)": { - "us": 13880.3, + "us": 12644.2, "level": "full" } } @@ -6937,107 +6937,107 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 88201.8, + "us": 90597.3, "level": "full" }, "best_any": { "variant": "parse", - "us": 88201.8, + "us": 90597.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 54267.2, + "us": 52905.4, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 54267.2, + "us": 52905.4, "level": "full" }, "variants": { "read (reused)": { - "us": 54267.2, + "us": 52905.4, "level": "full" }, "parse": { - "us": 88201.8, + "us": 90597.3, "level": "full" }, "structs (from_json)": { - "us": 101996.9, + "us": 107916.7, "level": "full" }, "parse_copy": { - "us": 127312.7, + "us": 129530.3, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "structs (from_json)", - "us": 423361.7, + "variant": "parse", + "us": 376812.2, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 423361.7, + "variant": "parse", + "us": 376812.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "structs (from_json)": { - "us": 423361.7, + "parse": { + "us": 376812.2, "level": "full" }, - "parse": { - "us": 430906.6, + "structs (from_json)": { + "us": 382365.8, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 137442.8, + "variant": "read (raw numbers)", + "us": 140073.1, "level": "full" }, "best_any": { - "variant": "read", - "us": 137442.8, + "variant": "read (raw numbers)", + "us": 140073.1, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 70365.8, + "us": 72547.9, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 70365.8, + "us": 72547.9, "level": "full" }, "variants": { "read (reused allocator)": { - "us": 70365.8, + "us": 72547.9, "level": "full" }, "insitu (copy untimed)": { - "us": 98636.9, - "level": "full" - }, - "read": { - "us": 137442.8, + "us": 100704.8, "level": "full" }, "read (raw numbers)": { - "us": 138127.7, + "us": 140073.1, "level": "full" }, "insitu (copy)": { - "us": 142337.4, + "us": 142151.7, + "level": "full" + }, + "read": { + "us": 143358.8, "level": "full" } } @@ -7045,47 +7045,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 123214.2, + "us": 126288.3, "level": "full" }, "best_any": { - "variant": "On-Demand", - "us": 48614.2, + "variant": "On-Demand (key selectors)", + "us": 50215.3, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 57246.2, + "us": 58786.1, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 29249.2, + "us": 31108.5, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 29249.2, - "level": "partial" - }, - "On-Demand": { - "us": 48614.2, + "us": 31108.5, "level": "partial" }, "On-Demand (key selectors)": { - "us": 49110.1, + "us": 50215.3, + "level": "partial" + }, + "On-Demand": { + "us": 50947.7, "level": "partial" }, "DOM (reused)": { - "us": 57246.2, + "us": 58786.1, "level": "full" }, "On-Demand structs": { - "us": 72096.7, + "us": 70861.9, "level": "partial" }, "DOM": { - "us": 123214.2, + "us": 126288.3, "level": "full" } } @@ -7094,14 +7094,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 108296.7, + "us": 106188.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 108296.7, + "us": 106188.2, "level": "no UTF-8" } } @@ -7109,43 +7109,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 91253.1, + "us": 89506.3, "level": "full" }, "best_any": { "variant": "structs", - "us": 66068.8, + "us": 66028.9, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 66068.8, + "us": 66028.9, "level": "partial" }, "structs (validate_skipped)": { - "us": 91253.1, + "us": 89506.3, "level": "full" }, "lazy_json": { - "us": 119018.0, + "us": 110829.3, + "level": "partial" + }, + "generic (double)": { + "us": 253419.2, "level": "partial" }, "generic (double, strict)": { - "us": 247084.3, + "us": 254361.8, "level": "full" }, - "generic (double)": { - "us": 251551.1, - "level": "partial" - }, "generic (strict)": { - "us": 342271.8, + "us": 351643.3, "level": "full" }, "generic": { - "us": 346828.2, + "us": 365040.8, "level": "partial" } }, @@ -7156,35 +7156,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 99077.5, + "us": 100039.3, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 99077.5, + "us": 100039.3, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 144837.3, + "us": 147786.3, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 144837.3, + "us": 147786.3, "level": "full" }, "variants": { "parse_into structs": { - "us": 99077.5, + "us": 100039.3, "level": "full" }, "parser (reused)": { - "us": 144837.3, + "us": 147786.3, "level": "full" }, "parse": { - "us": 205149.1, + "us": 205694.9, "level": "full" } }, @@ -7195,71 +7195,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 222625.3, + "us": 164386.2, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 163654.2, + "us": 147489.3, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 197438.0, + "us": 197086.6, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 194537.4, + "us": 193917.7, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 122353.6, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 163654.2, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 166650.0, + "us": 107268.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 176066.1, + "us": 119067.5, "level": "full" }, - "Document (reused allocator) (no encoding check)": { - "us": 194537.4, - "level": "no UTF-8" - }, - "Document (reused allocator)": { - "us": 197438.0, - "level": "full" - }, - "Document (raw numbers) (no encoding check)": { - "us": 198332.6, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 200011.2, + "insitu (copy) (no encoding check)": { + "us": 147489.3, "level": "no UTF-8" }, "insitu (copy)": { - "us": 222625.3, + "us": 164386.2, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 164907.9, + "level": "no UTF-8" + }, + "Document (reused allocator) (no encoding check)": { + "us": 193917.7, + "level": "no UTF-8" + }, + "Document (reused allocator)": { + "us": 197086.6, + "level": "full" + }, + "Document (raw numbers) (no encoding check)": { + "us": 211186.8, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 213386.7, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 279094.5, - "level": "full" - }, - "Document": { - "us": 306019.9, + "us": 275335.8, "level": "full" }, "Document (raw numbers)": { - "us": 316505.9, + "us": 312323.6, + "level": "full" + }, + "Document": { + "us": 318647.0, "level": "full" } } @@ -7385,23 +7385,23 @@ "nlohmann json": { "best": { "variant": "structs (from_json)", - "us": 17.0, + "us": 15.7, "level": "full" }, "best_any": { "variant": "structs (from_json)", - "us": 17.0, + "us": 15.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "structs (from_json)": { - "us": 17.0, + "us": 15.7, "level": "full" }, "parse": { - "us": 17.1, + "us": 16.1, "level": "full" } } @@ -7517,43 +7517,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 2.0, + "us": 1.9, "level": "full" }, "best_any": { "variant": "structs", - "us": 1.5, + "us": 1.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 1.5, + "us": 1.4, "level": "partial" }, "structs (validate_skipped)": { - "us": 2.0, + "us": 1.9, "level": "full" }, "lazy_json": { - "us": 2.3, - "level": "partial" - }, - "generic (double)": { - "us": 9.4, + "us": 2.1, "level": "partial" }, "generic (double, strict)": { "us": 9.4, "level": "full" }, + "generic (double)": { + "us": 9.6, + "level": "partial" + }, "generic (strict)": { - "us": 13.5, + "us": 13.7, "level": "full" }, "generic": { - "us": 13.6, + "us": 13.9, "level": "partial" } }, @@ -7574,12 +7574,12 @@ }, "best_reused": { "variant": "parser (reused)", - "us": 6.5, + "us": 6.6, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 6.5, + "us": 6.6, "level": "full" }, "variants": { @@ -7588,7 +7588,7 @@ "level": "full" }, "parser (reused)": { - "us": 6.5, + "us": 6.6, "level": "full" }, "parse": { @@ -7603,72 +7603,72 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 7.2, + "us": 5.0, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 3.8, + "us": 3.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 8.1, + "us": 8.2, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 7.6, + "us": 7.9, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 3.7, + "us": 3.3, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 3.8, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 5.3, + "us": 3.4, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 7.1, + "us": 4.9, "level": "full" }, "insitu (copy)": { - "us": 7.2, + "us": 5.0, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 5.5, + "level": "no UTF-8" + }, "Document (reused allocator) (no encoding check)": { - "us": 7.6, + "us": 7.9, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 8.1, + "us": 8.2, "level": "full" }, - "Document (no encoding check)": { - "us": 8.2, + "Document (raw numbers) (no encoding check)": { + "us": 8.3, "level": "no UTF-8" }, - "Document (raw numbers) (no encoding check)": { + "Document (no encoding check)": { "us": 8.4, "level": "no UTF-8" }, "Document (string stream)": { - "us": 11.5, - "level": "full" - }, - "Document": { - "us": 12.9, + "us": 11.8, "level": "full" }, "Document (raw numbers)": { "us": 13.1, "level": "full" + }, + "Document": { + "us": 13.2, + "level": "full" } } }, @@ -7752,64 +7752,64 @@ "twitter_min": { "nlohmann json_document": { "best": { - "variant": "structs (from_json)", - "us": 282.2, + "variant": "parse", + "us": 277.3, "level": "full" }, "best_any": { - "variant": "structs (from_json)", - "us": 282.2, + "variant": "parse", + "us": 277.3, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 274.7, + "us": 268.9, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 274.7, + "us": 268.9, "level": "full" }, "variants": { "read (reused)": { - "us": 274.7, - "level": "full" - }, - "structs (from_json)": { - "us": 282.2, + "us": 268.9, "level": "full" }, "parse": { - "us": 283.0, + "us": 277.3, + "level": "full" + }, + "structs (from_json)": { + "us": 280.2, "level": "full" }, "parse_copy": { - "us": 310.2, + "us": 307.4, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "parse", - "us": 3197.9, + "variant": "structs (from_json)", + "us": 2925.4, "level": "full" }, "best_any": { - "variant": "parse", - "us": 3197.9, + "variant": "structs (from_json)", + "us": 2925.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "parse": { - "us": 3197.9, + "structs (from_json)": { + "us": 2925.4, "level": "full" }, - "structs (from_json)": { - "us": 3219.2, + "parse": { + "us": 2926.9, "level": "full" } } @@ -7817,43 +7817,43 @@ "yyjson": { "best": { "variant": "read", - "us": 340.4, + "us": 338.4, "level": "full" }, "best_any": { "variant": "read", - "us": 340.4, + "us": 338.4, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 342.4, + "us": 337.6, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 342.4, + "us": 337.6, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 311.6, - "level": "full" - }, - "read": { - "us": 340.4, - "level": "full" - }, - "insitu (copy)": { - "us": 341.5, + "us": 307.1, "level": "full" }, "read (reused allocator)": { - "us": 342.4, + "us": 337.6, + "level": "full" + }, + "read": { + "us": 338.4, + "level": "full" + }, + "insitu (copy)": { + "us": 338.5, "level": "full" }, "read (raw numbers)": { - "us": 346.2, + "us": 344.5, "level": "full" } } @@ -7861,47 +7861,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 302.7, + "us": 304.2, "level": "full" }, "best_any": { - "variant": "On-Demand (key selectors)", - "us": 163.0, + "variant": "On-Demand", + "us": 166.7, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 301.6, + "us": 307.2, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 161.1, + "us": 163.5, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 161.1, - "level": "partial" - }, - "On-Demand (key selectors)": { - "us": 163.0, + "us": 163.5, "level": "partial" }, "On-Demand": { - "us": 165.0, - "level": "partial" - }, - "On-Demand structs": { "us": 166.7, "level": "partial" }, - "DOM (reused)": { - "us": 301.6, - "level": "full" + "On-Demand (key selectors)": { + "us": 169.7, + "level": "partial" + }, + "On-Demand structs": { + "us": 170.0, + "level": "partial" }, "DOM": { - "us": 302.7, + "us": 304.2, + "level": "full" + }, + "DOM (reused)": { + "us": 307.2, "level": "full" } } @@ -7925,43 +7925,43 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 419.5, + "us": 416.9, "level": "full" }, "best_any": { "variant": "structs", - "us": 295.1, + "us": 292.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 295.1, + "us": 292.5, "level": "partial" }, "structs (validate_skipped)": { - "us": 419.5, + "us": 416.9, "level": "full" }, "lazy_json": { - "us": 444.4, + "us": 436.3, "level": "partial" }, "generic (double, strict)": { - "us": 2205.2, + "us": 2229.0, "level": "full" }, "generic (double)": { - "us": 2222.0, + "us": 2238.7, "level": "partial" }, "generic (strict)": { - "us": 2927.1, + "us": 2917.4, "level": "full" }, "generic": { - "us": 2964.5, + "us": 2947.4, "level": "partial" } }, @@ -7972,35 +7972,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 767.6, + "us": 764.3, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 767.6, + "us": 764.3, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1316.5, + "us": 1326.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1316.5, + "us": 1326.8, "level": "full" }, "variants": { "parse_into structs": { - "us": 767.6, - "level": "full" - }, - "parser (reused)": { - "us": 1316.5, + "us": 764.3, "level": "full" }, "parse": { - "us": 1325.8, + "us": 1309.3, + "level": "full" + }, + "parser (reused)": { + "us": 1326.8, "level": "full" } }, @@ -8011,71 +8011,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1270.5, + "us": 868.7, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 845.1, + "us": 748.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1507.4, + "us": 1515.4, "level": "full" }, "best_reused_any": { "variant": "Document (reused allocator) (no encoding check)", - "us": 1412.9, + "us": 1422.4, "level": "no UTF-8" }, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 818.1, + "us": 719.3, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 845.1, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 1171.1, + "us": 748.8, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1237.8, + "us": 829.8, "level": "full" }, "insitu (copy)": { - "us": 1270.5, + "us": 868.7, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 1172.8, + "level": "no UTF-8" + }, "Document (reused allocator) (no encoding check)": { - "us": 1412.9, + "us": 1422.4, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1446.7, + "us": 1440.6, "level": "no UTF-8" }, "Document (raw numbers) (no encoding check)": { - "us": 1501.0, + "us": 1463.7, "level": "no UTF-8" }, "Document (reused allocator)": { - "us": 1507.4, + "us": 1515.4, "level": "full" }, "Document (string stream)": { - "us": 2027.8, + "us": 2042.8, "level": "full" }, "Document": { - "us": 2281.8, + "us": 2281.1, "level": "full" }, "Document (raw numbers)": { - "us": 2357.6, + "us": 2314.7, "level": "full" } } @@ -8161,39 +8161,39 @@ "nlohmann json_document": { "best": { "variant": "parse", - "us": 547.7, + "us": 526.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 547.7, + "us": 526.2, "level": "full" }, "best_reused": { "variant": "read (reused)", - "us": 546.2, + "us": 525.1, "level": "full" }, "best_reused_any": { "variant": "read (reused)", - "us": 546.2, + "us": 525.1, "level": "full" }, "variants": { "read (reused)": { - "us": 546.2, + "us": 525.1, "level": "full" }, "parse": { - "us": 547.7, - "level": "full" - }, - "parse_copy": { - "us": 570.6, + "us": 526.2, "level": "full" }, "structs (from_json)": { - "us": 571.1, + "us": 557.0, + "level": "full" + }, + "parse_copy": { + "us": 558.2, "level": "full" } } @@ -8201,67 +8201,67 @@ "nlohmann json": { "best": { "variant": "parse", - "us": 4968.0, + "us": 4073.8, "level": "full" }, "best_any": { "variant": "parse", - "us": 4968.0, + "us": 4073.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 4968.0, + "us": 4073.8, "level": "full" }, "structs (from_json)": { - "us": 5127.0, + "us": 4133.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "read", - "us": 514.9, + "variant": "insitu (copy)", + "us": 512.7, "level": "full" }, "best_any": { - "variant": "read", - "us": 514.9, + "variant": "insitu (copy)", + "us": 512.7, "level": "full" }, "best_reused": { "variant": "read (reused allocator)", - "us": 515.1, + "us": 513.4, "level": "full" }, "best_reused_any": { "variant": "read (reused allocator)", - "us": 515.1, + "us": 513.4, "level": "full" }, "variants": { "insitu (copy untimed)": { - "us": 482.3, - "level": "full" - }, - "read": { - "us": 514.9, - "level": "full" - }, - "read (reused allocator)": { - "us": 515.1, - "level": "full" - }, - "read (raw numbers)": { - "us": 532.4, + "us": 480.6, "level": "full" }, "insitu (copy)": { - "us": 541.5, + "us": 512.7, + "level": "full" + }, + "read": { + "us": 513.1, + "level": "full" + }, + "read (reused allocator)": { + "us": 513.4, + "level": "full" + }, + "read (raw numbers)": { + "us": 532.5, "level": "full" } } @@ -8269,47 +8269,47 @@ "simdjson": { "best": { "variant": "DOM", - "us": 591.1, + "us": 584.1, "level": "full" }, "best_any": { "variant": "On-Demand", - "us": 330.6, + "us": 329.6, "level": "partial" }, "best_reused": { "variant": "DOM (reused)", - "us": 593.5, + "us": 583.7, "level": "full" }, "best_reused_any": { "variant": "On-Demand (reused)", - "us": 329.2, + "us": 328.3, "level": "partial" }, "variants": { "On-Demand (reused)": { - "us": 329.2, + "us": 328.3, "level": "partial" }, "On-Demand": { - "us": 330.6, + "us": 329.6, "level": "partial" }, "On-Demand (key selectors)": { - "us": 331.2, + "us": 332.1, "level": "partial" }, "On-Demand structs": { - "us": 381.5, + "us": 371.1, "level": "partial" }, - "DOM": { - "us": 591.1, + "DOM (reused)": { + "us": 583.7, "level": "full" }, - "DOM (reused)": { - "us": 593.5, + "DOM": { + "us": 584.1, "level": "full" } } @@ -8318,14 +8318,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 704.0, + "us": 707.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 704.0, + "us": 707.1, "level": "no UTF-8" } } @@ -8333,44 +8333,44 @@ "Glaze": { "best": { "variant": "structs (validate_skipped)", - "us": 712.3, + "us": 684.3, "level": "full" }, "best_any": { "variant": "structs", - "us": 208.3, + "us": 206.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "structs": { - "us": 208.3, + "us": 206.6, "level": "partial" }, "structs (validate_skipped)": { - "us": 712.3, + "us": 684.3, "level": "full" }, "lazy_json": { - "us": 1545.7, + "us": 1453.2, "level": "partial" }, "generic (double, strict)": { - "us": 3344.9, + "us": 3193.1, "level": "full" }, "generic (double)": { - "us": 3474.6, - "level": "partial" - }, - "generic": { - "us": 5185.9, + "us": 3222.7, "level": "partial" }, "generic (strict)": { - "us": 5524.8, + "us": 4911.6, "level": "full" + }, + "generic": { + "us": 5077.4, + "level": "partial" } }, "excluded": { @@ -8380,35 +8380,35 @@ "Boost.JSON": { "best": { "variant": "parse_into structs", - "us": 1140.5, + "us": 1045.8, "level": "full" }, "best_any": { "variant": "parse_into structs", - "us": 1140.5, + "us": 1045.8, "level": "full" }, "best_reused": { "variant": "parser (reused)", - "us": 1617.2, + "us": 1531.8, "level": "full" }, "best_reused_any": { "variant": "parser (reused)", - "us": 1617.2, + "us": 1531.8, "level": "full" }, "variants": { "parse_into structs": { - "us": 1140.5, - "level": "full" - }, - "parse": { - "us": 1609.5, + "us": 1045.8, "level": "full" }, "parser (reused)": { - "us": 1617.2, + "us": 1531.8, + "level": "full" + }, + "parse": { + "us": 1538.9, "level": "full" } }, @@ -8419,71 +8419,71 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1662.8, + "us": 1303.5, "level": "full" }, "best_any": { - "variant": "insitu (copy) (no encoding check)", - "us": 1569.5, - "level": "no UTF-8" + "variant": "insitu (copy)", + "us": 1303.5, + "level": "full" }, "best_reused": { "variant": "Document (reused allocator)", - "us": 1812.1, + "us": 1779.9, "level": "full" }, "best_reused_any": { - "variant": "Document (reused allocator)", - "us": 1812.1, - "level": "full" + "variant": "Document (reused allocator) (no encoding check)", + "us": 1729.4, + "level": "no UTF-8" }, "variants": { - "insitu (copy untimed) (no encoding check)": { - "us": 1412.0, - "level": "no UTF-8" + "insitu (copy untimed)": { + "us": 1270.9, + "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 1569.5, + "insitu (copy untimed) (no encoding check)": { + "us": 1283.1, "level": "no UTF-8" }, "insitu (copy)": { - "us": 1662.8, + "us": 1303.5, "level": "full" }, - "insitu (copy untimed)": { - "us": 1665.6, - "level": "full" - }, - "Document (reused allocator)": { - "us": 1812.1, - "level": "full" - }, - "Document (string stream) (no encoding check)": { - "us": 1853.1, + "insitu (copy) (no encoding check)": { + "us": 1318.1, "level": "no UTF-8" }, "Document (reused allocator) (no encoding check)": { - "us": 1854.2, + "us": 1729.4, + "level": "no UTF-8" + }, + "Document (string stream) (no encoding check)": { + "us": 1751.2, "level": "no UTF-8" }, "Document (no encoding check)": { - "us": 1914.7, + "us": 1751.3, "level": "no UTF-8" }, + "Document (reused allocator)": { + "us": 1779.9, + "level": "full" + }, "Document (raw numbers) (no encoding check)": { - "us": 2121.9, + "us": 2011.0, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2257.7, + "us": 2213.8, "level": "full" }, "Document": { - "us": 2502.0, + "us": 2297.4, "level": "full" }, "Document (raw numbers)": { - "us": 2912.4, + "us": 2582.9, "level": "full" } } @@ -8571,23 +8571,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 531.8, + "us": 530.3, "level": "full" }, "best_any": { "variant": "editable", - "us": 531.8, + "us": 530.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 531.8, + "us": 530.3, "level": "full" }, "editable (source numbers)": { - "us": 569.2, + "us": 553.9, "level": "full" } } @@ -8595,51 +8595,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2911.8, + "us": 2502.6, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2911.8, + "us": 2502.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2911.8, + "us": 2502.6, "level": "full" }, "parse": { - "us": 3912.8, + "us": 3472.0, "level": "full" } } }, "yyjson": { "best": { - "variant": "mut copy", - "us": 803.9, + "variant": "insitu (copy) + mut copy", + "us": 841.3, "level": "full" }, "best_any": { - "variant": "mut copy", - "us": 803.9, + "variant": "insitu (copy) + mut copy", + "us": 841.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 761.1, - "level": "full" - }, - "mut copy": { - "us": 803.9, + "us": 815.3, "level": "full" }, "insitu (copy) + mut copy": { - "us": 804.0, + "us": 841.3, + "level": "full" + }, + "mut copy": { + "us": 847.4, "level": "full" } } @@ -8648,14 +8648,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 636.7, + "us": 632.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 636.7, + "us": 632.0, "level": "no UTF-8" } } @@ -8663,23 +8663,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3524.7, + "us": 3473.7, "level": "full" }, "best_any": { "variant": "generic", - "us": 3487.4, + "us": 3444.2, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 3487.4, + "us": 3444.2, "level": "partial" }, "generic (strict)": { - "us": 3524.7, + "us": 3473.7, "level": "full" } }, @@ -8691,19 +8691,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1962.7, + "us": 1888.7, "level": "full" }, "best_any": { "variant": "parse", - "us": 1962.7, + "us": 1888.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1962.7, + "us": 1888.7, "level": "full" } } @@ -8711,47 +8711,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2341.6, + "us": 1920.1, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1864.1, + "us": 1747.1, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1837.8, + "us": 1710.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1864.1, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 2046.0, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 2114.7, + "us": 1747.1, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 2333.0, + "us": 1880.7, "level": "full" }, "insitu (copy)": { - "us": 2341.6, + "us": 1920.1, + "level": "full" + }, + "Document (string stream) (no encoding check)": { + "us": 2003.6, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 2095.9, + "level": "no UTF-8" + }, + "Document (string stream)": { + "us": 2908.7, "level": "full" }, "Document": { - "us": 2970.0, - "level": "full" - }, - "Document (string stream)": { - "us": 3017.3, + "us": 2943.6, "level": "full" } } @@ -8825,23 +8825,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 1116.2, + "us": 1209.2, "level": "full" }, "best_any": { "variant": "editable", - "us": 1116.2, + "us": 1209.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 1116.2, + "us": 1209.2, "level": "full" }, "editable (source numbers)": { - "us": 1140.7, + "us": 1232.6, "level": "full" } } @@ -8849,23 +8849,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4999.1, + "us": 4414.2, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4999.1, + "us": 4414.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4999.1, + "us": 4414.2, "level": "full" }, "parse": { - "us": 5737.2, + "us": 5192.6, "level": "full" } } @@ -8873,27 +8873,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 1697.2, + "us": 1718.6, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 1697.2, + "us": 1718.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1590.3, + "us": 1596.9, "level": "full" }, "mut copy": { - "us": 1697.2, + "us": 1718.6, "level": "full" }, "insitu (copy) + mut copy": { - "us": 1708.2, + "us": 1719.5, "level": "full" } } @@ -8902,14 +8902,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1559.1, + "us": 1583.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1559.1, + "us": 1583.3, "level": "no UTF-8" } } @@ -8917,23 +8917,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 6551.1, + "us": 6531.1, "level": "full" }, "best_any": { "variant": "generic", - "us": 6451.0, + "us": 6302.4, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 6451.0, + "us": 6302.4, "level": "partial" }, "generic (strict)": { - "us": 6551.1, + "us": 6531.1, "level": "full" } }, @@ -8945,19 +8945,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2936.1, + "us": 2951.5, "level": "full" }, "best_any": { "variant": "parse", - "us": 2936.1, + "us": 2951.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2936.1, + "us": 2951.5, "level": "full" } } @@ -8965,47 +8965,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 3242.4, + "us": 2976.7, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2924.6, + "us": 2822.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2836.4, + "us": 2747.3, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2924.6, - "level": "no UTF-8" - }, - "Document (no encoding check)": { - "us": 2925.1, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 3066.4, + "us": 2822.8, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 3133.4, + "us": 2853.8, "level": "full" }, + "Document (no encoding check)": { + "us": 2894.9, + "level": "no UTF-8" + }, "insitu (copy)": { - "us": 3242.4, + "us": 2976.7, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 3016.1, + "level": "no UTF-8" + }, "Document": { - "us": 3522.6, + "us": 3442.9, "level": "full" }, "Document (string stream)": { - "us": 3593.8, + "us": 3583.2, "level": "full" } } @@ -9079,47 +9079,47 @@ "nlohmann json_document": { "best": { "variant": "editable (source numbers)", - "us": 2702.4, + "us": 2620.9, "level": "full" }, "best_any": { "variant": "editable (source numbers)", - "us": 2702.4, + "us": 2620.9, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable (source numbers)": { - "us": 2702.4, + "us": 2620.9, "level": "full" }, "editable": { - "us": 5713.5, + "us": 5791.8, "level": "full" } } }, "nlohmann json": { "best": { - "variant": "ordered_json", - "us": 15603.3, + "variant": "parse", + "us": 13479.2, "level": "full" }, "best_any": { - "variant": "ordered_json", - "us": 15603.3, + "variant": "parse", + "us": 13479.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "ordered_json": { - "us": 15603.3, + "parse": { + "us": 13479.2, "level": "full" }, - "parse": { - "us": 16014.3, + "ordered_json": { + "us": 13772.6, "level": "full" } } @@ -9127,27 +9127,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 10020.0, + "us": 9803.2, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 10020.0, + "us": 9803.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy untimed) + mut copy": { - "us": 9860.1, + "insitu (copy) + mut copy": { + "us": 9803.2, "level": "full" }, - "insitu (copy) + mut copy": { - "us": 10020.0, + "insitu (copy untimed) + mut copy": { + "us": 9886.5, "level": "full" }, "mut copy": { - "us": 10092.3, + "us": 9917.2, "level": "full" } } @@ -9156,14 +9156,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 8936.1, + "us": 8734.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 8936.1, + "us": 8734.3, "level": "no UTF-8" } } @@ -9171,24 +9171,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 23644.2, + "us": 23192.8, "level": "full" }, "best_any": { - "variant": "generic", - "us": 23383.4, - "level": "partial" + "variant": "generic (strict)", + "us": 23192.8, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 23383.4, - "level": "partial" - }, "generic (strict)": { - "us": 23644.2, + "us": 23192.8, "level": "full" + }, + "generic": { + "us": 23604.3, + "level": "partial" } }, "excluded": { @@ -9199,19 +9199,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 13413.8, + "us": 13537.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 13413.8, + "us": 13537.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 13413.8, + "us": 13537.4, "level": "full" } } @@ -9219,48 +9219,48 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 20517.7, + "us": 21151.5, "level": "full" }, "best_any": { - "variant": "Document (string stream) (no encoding check)", - "us": 20320.1, + "variant": "Document (no encoding check)", + "us": 20997.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { - "Document (string stream) (no encoding check)": { - "us": 20320.1, - "level": "no UTF-8" - }, - "insitu (copy untimed) (no encoding check)": { - "us": 20404.6, + "Document (no encoding check)": { + "us": 20997.7, "level": "no UTF-8" }, "insitu (copy)": { - "us": 20517.7, + "us": 21151.5, "level": "full" }, "insitu (copy untimed)": { - "us": 20565.1, + "us": 21315.3, "level": "full" }, - "insitu (copy) (no encoding check)": { - "us": 20868.2, + "Document (string stream) (no encoding check)": { + "us": 21389.7, "level": "no UTF-8" }, "Document": { - "us": 21148.6, + "us": 21501.3, "level": "full" }, + "insitu (copy) (no encoding check)": { + "us": 21606.3, + "level": "no UTF-8" + }, + "insitu (copy untimed) (no encoding check)": { + "us": 21635.4, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 21167.3, + "us": 21770.7, "level": "full" - }, - "Document (no encoding check)": { - "us": 21213.5, - "level": "no UTF-8" } } }, @@ -9333,23 +9333,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 192363.1, + "us": 193924.6, "level": "full" }, "best_any": { "variant": "editable", - "us": 192363.1, + "us": 193924.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 192363.1, + "us": 193924.6, "level": "full" }, "editable (source numbers)": { - "us": 192901.1, + "us": 196807.8, "level": "full" } } @@ -9357,51 +9357,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 604744.5, + "us": 622815.8, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 604744.5, + "us": 622815.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 604744.5, + "us": 622815.8, "level": "full" }, "parse": { - "us": 797374.8, + "us": 837815.7, "level": "full" } } }, "yyjson": { "best": { - "variant": "mut copy", - "us": 318307.9, + "variant": "insitu (copy) + mut copy", + "us": 309934.8, "level": "full" }, "best_any": { - "variant": "mut copy", - "us": 318307.9, + "variant": "insitu (copy) + mut copy", + "us": 309934.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 271226.6, - "level": "full" - }, - "mut copy": { - "us": 318307.9, + "us": 276774.3, "level": "full" }, "insitu (copy) + mut copy": { - "us": 318834.1, + "us": 309934.8, + "level": "full" + }, + "mut copy": { + "us": 312477.0, "level": "full" } } @@ -9410,14 +9410,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 186232.4, + "us": 184592.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 186232.4, + "us": 184592.4, "level": "no UTF-8" } } @@ -9425,24 +9425,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 661940.8, + "us": 673526.5, "level": "full" }, "best_any": { - "variant": "generic", - "us": 632543.1, - "level": "partial" + "variant": "generic (strict)", + "us": 673526.5, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 632543.1, - "level": "partial" - }, "generic (strict)": { - "us": 661940.8, + "us": 673526.5, "level": "full" + }, + "generic": { + "us": 697997.1, + "level": "partial" } }, "excluded": { @@ -9453,19 +9453,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 356243.6, + "us": 346542.1, "level": "full" }, "best_any": { "variant": "parse", - "us": 356243.6, + "us": 346542.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 356243.6, + "us": 346542.1, "level": "full" } } @@ -9473,47 +9473,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 362000.7, + "us": 293850.7, "level": "full" }, "best_any": { - "variant": "Document (string stream) (no encoding check)", - "us": 296360.9, + "variant": "insitu (copy) (no encoding check)", + "us": 280165.3, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 271888.2, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 296360.9, - "level": "no UTF-8" - }, - "insitu (copy) (no encoding check)": { - "us": 302575.6, + "us": 235547.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 315892.3, + "us": 251930.5, "level": "full" }, - "Document (no encoding check)": { - "us": 332533.5, + "insitu (copy) (no encoding check)": { + "us": 280165.3, "level": "no UTF-8" }, "insitu (copy)": { - "us": 362000.7, + "us": 293850.7, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 298879.0, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 333712.3, + "level": "no UTF-8" + }, "Document (string stream)": { - "us": 407503.6, + "us": 404977.4, "level": "full" }, "Document": { - "us": 452671.2, + "us": 442004.5, "level": "full" } } @@ -9611,51 +9611,51 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 13.5, + "us": 12.7, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 13.5, + "us": 12.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 13.5, + "us": 12.7, "level": "full" }, "parse": { - "us": 19.2, + "us": 18.3, "level": "full" } } }, "yyjson": { "best": { - "variant": "mut copy", - "us": 3.7, + "variant": "insitu (copy) + mut copy", + "us": 3.8, "level": "full" }, "best_any": { - "variant": "mut copy", - "us": 3.7, + "variant": "insitu (copy) + mut copy", + "us": 3.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "mut copy": { + "insitu (copy untimed) + mut copy": { "us": 3.7, "level": "full" }, "insitu (copy) + mut copy": { - "us": 3.7, + "us": 3.8, "level": "full" }, - "insitu (copy untimed) + mut copy": { - "us": 3.7, + "mut copy": { + "us": 3.9, "level": "full" } } @@ -9664,14 +9664,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 3.3, + "us": 3.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 3.3, + "us": 3.4, "level": "no UTF-8" } } @@ -9679,23 +9679,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 15.6, + "us": 16.5, "level": "full" }, "best_any": { "variant": "generic", - "us": 15.3, + "us": 16.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 15.3, + "us": 16.0, "level": "partial" }, "generic (strict)": { - "us": 15.6, + "us": 16.5, "level": "full" } }, @@ -9707,19 +9707,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 9.1, + "us": 9.6, "level": "full" }, "best_any": { "variant": "parse", - "us": 9.1, + "us": 9.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 9.1, + "us": 9.6, "level": "full" } } @@ -9727,47 +9727,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 11.1, + "us": 9.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 7.8, + "us": 7.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { - "insitu (copy untimed) (no encoding check)": { - "us": 7.7, - "level": "no UTF-8" - }, "insitu (copy) (no encoding check)": { - "us": 7.8, + "us": 7.6, "level": "no UTF-8" }, - "Document (string stream) (no encoding check)": { - "us": 9.2, + "insitu (copy untimed) (no encoding check)": { + "us": 7.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 11.0, + "us": 9.0, "level": "full" }, "insitu (copy)": { - "us": 11.1, + "us": 9.3, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 9.7, + "level": "no UTF-8" + }, "Document (no encoding check)": { - "us": 12.1, + "us": 12.8, "level": "no UTF-8" }, "Document (string stream)": { - "us": 15.4, + "us": 16.2, "level": "full" }, "Document": { - "us": 17.0, + "us": 17.5, "level": "full" } } @@ -9841,23 +9841,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 480.1, + "us": 477.8, "level": "full" }, "best_any": { "variant": "editable", - "us": 480.1, + "us": 477.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 480.1, + "us": 477.8, "level": "full" }, "editable (source numbers)": { - "us": 512.0, + "us": 499.1, "level": "full" } } @@ -9865,23 +9865,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 2702.2, + "us": 2417.5, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 2702.2, + "us": 2417.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 2702.2, + "us": 2417.5, "level": "full" }, "parse": { - "us": 3686.1, + "us": 3336.5, "level": "full" } } @@ -9889,27 +9889,27 @@ "yyjson": { "best": { "variant": "insitu (copy) + mut copy", - "us": 726.3, + "us": 771.6, "level": "full" }, "best_any": { "variant": "insitu (copy) + mut copy", - "us": 726.3, + "us": 771.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 699.7, + "us": 752.8, "level": "full" }, "insitu (copy) + mut copy": { - "us": 726.3, + "us": 771.6, "level": "full" }, "mut copy": { - "us": 731.1, + "us": 814.7, "level": "full" } } @@ -9918,14 +9918,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 509.1, + "us": 520.0, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 509.1, + "us": 520.0, "level": "no UTF-8" } } @@ -9933,23 +9933,23 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3289.0, + "us": 3284.1, "level": "full" }, "best_any": { "variant": "generic", - "us": 3262.0, + "us": 3276.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 3262.0, + "us": 3276.0, "level": "partial" }, "generic (strict)": { - "us": 3289.0, + "us": 3284.1, "level": "full" } }, @@ -9961,19 +9961,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 1787.8, + "us": 1779.2, "level": "full" }, "best_any": { "variant": "parse", - "us": 1787.8, + "us": 1779.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 1787.8, + "us": 1779.2, "level": "full" } } @@ -9981,47 +9981,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 1992.5, + "us": 1566.4, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 1576.0, + "us": 1458.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 1547.9, + "us": 1434.5, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 1576.0, - "level": "no UTF-8" - }, - "Document (string stream) (no encoding check)": { - "us": 1799.3, + "us": 1458.6, "level": "no UTF-8" }, "insitu (copy untimed)": { - "us": 1950.2, + "us": 1531.7, "level": "full" }, "insitu (copy)": { - "us": 1992.5, + "us": 1566.4, "level": "full" }, + "Document (string stream) (no encoding check)": { + "us": 1776.8, + "level": "no UTF-8" + }, "Document (no encoding check)": { - "us": 2055.3, + "us": 2036.5, "level": "no UTF-8" }, "Document (string stream)": { - "us": 2652.6, + "us": 2632.0, "level": "full" }, "Document": { - "us": 2904.4, + "us": 2878.2, "level": "full" } } @@ -10095,23 +10095,23 @@ "nlohmann json_document": { "best": { "variant": "editable", - "us": 879.7, + "us": 865.3, "level": "full" }, "best_any": { "variant": "editable", - "us": 879.7, + "us": 865.3, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "editable": { - "us": 879.7, + "us": 865.3, "level": "full" }, "editable (source numbers)": { - "us": 905.9, + "us": 895.2, "level": "full" } } @@ -10119,23 +10119,23 @@ "nlohmann json": { "best": { "variant": "ordered_json", - "us": 4806.3, + "us": 4199.5, "level": "full" }, "best_any": { "variant": "ordered_json", - "us": 4806.3, + "us": 4199.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "ordered_json": { - "us": 4806.3, + "us": 4199.5, "level": "full" }, "parse": { - "us": 5720.2, + "us": 4818.0, "level": "full" } } @@ -10143,27 +10143,27 @@ "yyjson": { "best": { "variant": "mut copy", - "us": 1218.5, + "us": 1261.7, "level": "full" }, "best_any": { "variant": "mut copy", - "us": 1218.5, + "us": 1261.7, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) + mut copy": { - "us": 1183.3, + "us": 1243.4, "level": "full" }, "mut copy": { - "us": 1218.5, + "us": 1261.7, "level": "full" }, "insitu (copy) + mut copy": { - "us": 1218.7, + "us": 1308.4, "level": "full" } } @@ -10172,14 +10172,14 @@ "best": null, "best_any": { "variant": "Document", - "us": 1212.8, + "us": 1241.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document": { - "us": 1212.8, + "us": 1241.2, "level": "no UTF-8" } } @@ -10187,24 +10187,24 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 5896.5, + "us": 5599.6, "level": "full" }, "best_any": { - "variant": "generic", - "us": 5779.2, - "level": "partial" + "variant": "generic (strict)", + "us": 5599.6, + "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic": { - "us": 5779.2, - "level": "partial" - }, "generic (strict)": { - "us": 5896.5, + "us": 5599.6, "level": "full" + }, + "generic": { + "us": 5741.6, + "level": "partial" } }, "excluded": { @@ -10215,19 +10215,19 @@ "Boost.JSON": { "best": { "variant": "parse", - "us": 2632.9, + "us": 2655.4, "level": "full" }, "best_any": { "variant": "parse", - "us": 2632.9, + "us": 2655.4, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse": { - "us": 2632.9, + "us": 2655.4, "level": "full" } } @@ -10235,47 +10235,47 @@ "RapidJSON": { "best": { "variant": "insitu (copy)", - "us": 2703.7, + "us": 2348.3, "level": "full" }, "best_any": { "variant": "insitu (copy) (no encoding check)", - "us": 2514.7, + "us": 2289.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "insitu (copy untimed) (no encoding check)": { - "us": 2453.3, + "us": 2248.7, "level": "no UTF-8" }, "insitu (copy) (no encoding check)": { - "us": 2514.7, + "us": 2289.2, "level": "no UTF-8" }, - "insitu (copy untimed)": { - "us": 2616.7, - "level": "full" - }, "insitu (copy)": { - "us": 2703.7, + "us": 2348.3, "level": "full" }, - "Document (no encoding check)": { - "us": 2759.3, - "level": "no UTF-8" + "insitu (copy untimed)": { + "us": 2464.4, + "level": "full" }, "Document (string stream) (no encoding check)": { - "us": 2848.0, + "us": 2734.7, + "level": "no UTF-8" + }, + "Document (no encoding check)": { + "us": 2836.1, "level": "no UTF-8" }, "Document (string stream)": { - "us": 3273.4, + "us": 3180.1, "level": "full" }, "Document": { - "us": 3433.3, + "us": 3295.1, "level": "full" } } @@ -10350,40 +10350,40 @@ "twitter": { "nlohmann json_document": { "best": { - "variant": "parse + dump", - "us": 482.7, + "variant": "parse + dump (source numbers)", + "us": 470.7, "level": "full" }, "best_any": { - "variant": "parse + dump", - "us": 482.7, + "variant": "parse + dump (source numbers)", + "us": 470.7, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 505.9, + "us": 474.8, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 505.9, + "us": 474.8, "level": "full" }, "variants": { - "parse + dump": { - "us": 482.7, + "parse + dump (source numbers)": { + "us": 470.7, "level": "full" }, "read + dump (reused)": { - "us": 505.9, + "us": 474.8, "level": "full" }, - "parse + dump (source numbers)": { - "us": 522.4, + "parse + dump": { + "us": 475.2, "level": "full" }, "parse_copy + dump": { - "us": 564.1, + "us": 520.9, "level": "full" } } @@ -10391,63 +10391,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 4143.3, + "us": 3416.6, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 4143.3, + "us": 3416.6, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 4143.3, + "us": 3416.6, "level": "full" } } }, "yyjson": { "best": { - "variant": "read + write", - "us": 660.6, + "variant": "read (raw numbers) + write", + "us": 599.8, "level": "full" }, "best_any": { - "variant": "read + write", - "us": 660.6, + "variant": "read (raw numbers) + write", + "us": 599.8, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 644.0, + "us": 604.1, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 644.0, + "us": 604.1, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 591.7, - "level": "full" - }, - "read + write (reused allocator)": { - "us": 644.0, - "level": "full" - }, - "read + write": { - "us": 660.6, + "us": 559.5, "level": "full" }, "read (raw numbers) + write": { - "us": 683.8, + "us": 599.8, "level": "full" }, "insitu (copy) + write": { - "us": 687.8, + "us": 600.0, + "level": "full" + }, + "read + write": { + "us": 602.1, + "level": "full" + }, + "read + write (reused allocator)": { + "us": 604.1, "level": "full" } } @@ -10455,35 +10455,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 742.5, + "us": 689.3, "level": "full" }, "best_any": { "variant": "minify", - "us": 123.3, + "us": 121.8, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 733.5, + "us": 687.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 733.5, + "us": 687.6, "level": "full" }, "variants": { "minify": { - "us": 123.3, + "us": 121.8, "level": "partial" }, "DOM (reused) + to_string": { - "us": 733.5, + "us": 687.6, "level": "full" }, "DOM + to_string": { - "us": 742.5, + "us": 689.3, "level": "full" } } @@ -10492,14 +10492,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 695.4, + "us": 646.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 695.4, + "us": 646.8, "level": "no UTF-8" } } @@ -10507,27 +10507,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3779.5, + "us": 3358.7, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 422.3, + "us": 416.7, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 422.3, + "us": 416.7, "level": "partial" }, "generic": { - "us": 3665.8, + "us": 3331.5, "level": "partial" }, "generic (strict)": { - "us": 3779.5, + "us": 3358.7, "level": "full" } }, @@ -10539,95 +10539,95 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2085.6, + "us": 1906.6, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2085.6, + "us": 1906.6, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2129.4, + "us": 1902.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2129.4, + "us": 1902.9, "level": "full" }, "variants": { - "parse + serialize": { - "us": 2085.6, + "parser (reused) + serialize": { + "us": 1902.9, "level": "full" }, - "parser (reused) + serialize": { - "us": 2129.4, + "parse + serialize": { + "us": 1906.6, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX to Writer", - "us": 3014.9, + "variant": "SAX to Writer (string stream)", + "us": 2746.2, "level": "full" }, "best_any": { - "variant": "SAX to Writer (no encoding check)", - "us": 1978.1, + "variant": "SAX to Writer (string stream) (no encoding check)", + "us": 1823.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2396.2, + "us": 2242.5, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2382.6, + "us": 2161.9, "level": "no UTF-8" }, "variants": { - "SAX to Writer (no encoding check)": { - "us": 1978.1, - "level": "no UTF-8" - }, "SAX to Writer (string stream) (no encoding check)": { - "us": 2000.4, + "us": 1823.5, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2052.2, + "us": 1879.1, + "level": "no UTF-8" + }, + "SAX to Writer (no encoding check)": { + "us": 1882.9, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 2257.7, + "us": 2121.2, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2382.6, + "us": 2161.9, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2396.2, - "level": "full" - }, - "SAX to Writer": { - "us": 3014.9, + "us": 2242.5, "level": "full" }, "SAX to Writer (string stream)": { - "us": 3034.3, + "us": 2746.2, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 3095.6, + "us": 2763.5, + "level": "full" + }, + "SAX to Writer": { + "us": 2764.4, "level": "full" }, "Document + Writer": { - "us": 3262.6, + "us": 2975.8, "level": "full" } } @@ -10697,39 +10697,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 1014.3, + "us": 1102.4, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 1014.3, + "us": 1102.4, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 1015.4, + "us": 1106.3, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 1015.4, + "us": 1106.3, "level": "full" }, "variants": { "parse + dump": { - "us": 1014.3, + "us": 1102.4, "level": "full" }, "read + dump (reused)": { - "us": 1015.4, + "us": 1106.3, "level": "full" }, "parse + dump (source numbers)": { - "us": 1021.2, + "us": 1113.8, "level": "full" }, "parse_copy + dump": { - "us": 1126.3, + "us": 1246.9, "level": "full" } } @@ -10737,19 +10737,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5702.5, + "us": 5152.8, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5702.5, + "us": 5152.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5702.5, + "us": 5152.8, "level": "full" } } @@ -10757,43 +10757,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 1261.8, + "us": 1264.4, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 1261.8, + "us": 1264.4, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 1351.3, + "us": 1351.9, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 1351.3, + "us": 1351.9, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 1205.1, + "us": 1202.8, "level": "full" }, "read (raw numbers) + write": { - "us": 1261.8, + "us": 1264.4, "level": "full" }, "insitu (copy) + write": { - "us": 1310.3, + "us": 1316.3, "level": "full" }, "read + write": { - "us": 1314.9, + "us": 1319.6, "level": "full" }, "read + write (reused allocator)": { - "us": 1351.3, + "us": 1351.9, "level": "full" } } @@ -10801,35 +10801,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1392.7, + "us": 1394.1, "level": "full" }, "best_any": { "variant": "minify", - "us": 336.8, + "us": 336.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1377.4, + "us": 1404.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1377.4, + "us": 1404.7, "level": "full" }, "variants": { "minify": { - "us": 336.8, + "us": 336.5, "level": "partial" }, - "DOM (reused) + to_string": { - "us": 1377.4, + "DOM + to_string": { + "us": 1394.1, "level": "full" }, - "DOM + to_string": { - "us": 1392.7, + "DOM (reused) + to_string": { + "us": 1404.7, "level": "full" } } @@ -10838,14 +10838,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1540.7, + "us": 1563.2, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1540.7, + "us": 1563.2, "level": "no UTF-8" } } @@ -10853,27 +10853,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 6416.4, + "us": 6437.2, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 1144.4, + "us": 1115.5, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 1144.4, + "us": 1115.5, "level": "partial" }, "generic": { - "us": 6261.5, + "us": 6312.1, "level": "partial" }, "generic (strict)": { - "us": 6416.4, + "us": 6437.2, "level": "full" } }, @@ -10885,95 +10885,95 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2919.0, + "us": 2950.3, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2919.0, + "us": 2950.3, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2931.1, + "us": 2901.1, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2931.1, + "us": 2901.1, "level": "full" }, "variants": { - "parse + serialize": { - "us": 2919.0, + "parser (reused) + serialize": { + "us": 2901.1, "level": "full" }, - "parser (reused) + serialize": { - "us": 2931.1, + "parse + serialize": { + "us": 2950.3, "level": "full" } } }, "RapidJSON": { "best": { - "variant": "SAX to Writer", - "us": 3012.3, + "variant": "SAX to Writer (string stream)", + "us": 3161.5, "level": "full" }, "best_any": { - "variant": "SAX to Writer (no encoding check)", - "us": 2492.7, + "variant": "SAX to Writer (string stream) (no encoding check)", + "us": 2672.4, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2994.2, + "us": 3002.8, "level": "full" }, "best_reused_any": { - "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2981.0, - "level": "no UTF-8" + "variant": "Document + Writer (reused allocator)", + "us": 3002.8, + "level": "full" }, "variants": { - "SAX to Writer (no encoding check)": { - "us": 2492.7, + "SAX to Writer (string stream) (no encoding check)": { + "us": 2672.4, "level": "no UTF-8" }, - "SAX to Writer (string stream) (no encoding check)": { - "us": 2550.9, + "SAX to Writer (no encoding check)": { + "us": 2739.1, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2795.1, + "us": 2936.1, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 2933.5, - "level": "no UTF-8" - }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 2981.0, + "us": 2974.1, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2994.2, + "us": 3002.8, + "level": "full" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 3014.7, + "level": "no UTF-8" + }, + "SAX to Writer (string stream)": { + "us": 3161.5, "level": "full" }, "SAX to Writer": { - "us": 3012.3, - "level": "full" - }, - "SAX to Writer (string stream)": { - "us": 3197.5, + "us": 3414.7, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 3321.1, + "us": 3423.7, "level": "full" }, "Document + Writer": { - "us": 3479.6, + "us": 3446.9, "level": "full" } } @@ -11043,39 +11043,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 2620.4, + "us": 2371.8, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 2620.4, + "us": 2371.8, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 5327.5, + "us": 5434.6, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 5327.5, + "us": 5434.6, "level": "full" }, "variants": { "parse + dump (source numbers)": { - "us": 2620.4, - "level": "full" - }, - "read + dump (reused)": { - "us": 5327.5, - "level": "full" - }, - "parse_copy + dump": { - "us": 5459.1, + "us": 2371.8, "level": "full" }, "parse + dump": { - "us": 5559.5, + "us": 5413.8, + "level": "full" + }, + "read + dump (reused)": { + "us": 5434.6, + "level": "full" + }, + "parse_copy + dump": { + "us": 5563.1, "level": "full" } } @@ -11083,19 +11083,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 16463.2, + "us": 13425.2, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 16463.2, + "us": 13425.2, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 16463.2, + "us": 13425.2, "level": "full" } } @@ -11103,43 +11103,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 3106.3, + "us": 2993.5, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 3106.3, + "us": 2993.5, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 9285.9, + "us": 9371.8, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 9285.9, + "us": 9371.8, "level": "full" }, "variants": { "read (raw numbers) + write": { - "us": 3106.3, - "level": "full" - }, - "read + write": { - "us": 9008.1, + "us": 2993.5, "level": "full" }, "insitu (copy untimed) + write": { - "us": 9225.8, + "us": 9148.2, + "level": "full" + }, + "read + write": { + "us": 9151.2, "level": "full" }, "insitu (copy) + write": { - "us": 9276.4, + "us": 9245.2, "level": "full" }, "read + write (reused allocator)": { - "us": 9285.9, + "us": 9371.8, "level": "full" } } @@ -11147,35 +11147,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 8808.4, + "us": 8457.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 433.3, + "us": 426.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 8886.2, + "us": 9201.6, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 8886.2, + "us": 9201.6, "level": "full" }, "variants": { "minify": { - "us": 433.3, + "us": 426.5, "level": "partial" }, "DOM + to_string": { - "us": 8808.4, + "us": 8457.0, "level": "full" }, "DOM (reused) + to_string": { - "us": 8886.2, + "us": 9201.6, "level": "full" } } @@ -11184,14 +11184,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 8837.7, + "us": 8917.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 8837.7, + "us": 8917.4, "level": "no UTF-8" } } @@ -11199,27 +11199,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 23764.9, + "us": 23895.8, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 2349.8, + "us": 2112.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 2349.8, + "us": 2112.8, "level": "partial" }, "generic": { - "us": 23104.6, + "us": 23617.9, "level": "partial" }, "generic (strict)": { - "us": 23764.9, + "us": 23895.8, "level": "full" } }, @@ -11231,31 +11231,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 13973.5, + "us": 13661.6, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 13973.5, + "us": 13661.6, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 13462.6, + "us": 13379.4, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 13462.6, + "us": 13379.4, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 13462.6, + "us": 13379.4, "level": "full" }, "parse + serialize": { - "us": 13973.5, + "us": 13661.6, "level": "full" } } @@ -11263,64 +11263,64 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (raw numbers)", - "us": 15523.3, + "us": 15365.9, "level": "full" }, "best_any": { "variant": "SAX to Writer (raw numbers) (no encoding check)", - "us": 15512.0, + "us": 15165.7, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 20813.2, + "us": 21109.1, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator)", - "us": 20813.2, + "us": 21109.1, "level": "full" }, "variants": { "SAX to Writer (raw numbers) (no encoding check)": { - "us": 15512.0, + "us": 15165.7, "level": "no UTF-8" }, "SAX to Writer (raw numbers)": { - "us": 15523.3, - "level": "full" - }, - "Document + Writer (reused allocator)": { - "us": 20813.2, + "us": 15365.9, "level": "full" }, "SAX to Writer (string stream) (no encoding check)": { - "us": 21036.2, + "us": 20808.6, "level": "no UTF-8" }, - "Document + Writer": { - "us": 21177.2, + "Document + Writer (reused allocator)": { + "us": 21109.1, "level": "full" }, - "Document + Writer (no encoding check)": { - "us": 21184.8, - "level": "no UTF-8" - }, - "SAX to Writer (string stream)": { - "us": 21318.4, + "SAX to Writer": { + "us": 21674.1, "level": "full" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 21359.3, + "us": 21703.5, "level": "no UTF-8" }, + "Document + Writer (no encoding check)": { + "us": 21768.8, + "level": "no UTF-8" + }, + "SAX to Writer (string stream)": { + "us": 21906.8, + "level": "full" + }, + "Document + Writer": { + "us": 22256.9, + "level": "full" + }, "SAX to Writer (no encoding check)": { - "us": 21367.2, + "us": 22289.1, "level": "no UTF-8" - }, - "SAX to Writer": { - "us": 21562.2, - "level": "full" } } }, @@ -11389,39 +11389,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 146320.2, + "us": 144876.9, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 146320.2, + "us": 144876.9, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 109060.0, + "us": 110904.2, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 109060.0, + "us": 110904.2, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 109060.0, + "us": 110904.2, "level": "full" }, "parse + dump": { - "us": 146320.2, + "us": 144876.9, "level": "full" }, "parse + dump (source numbers)": { - "us": 146609.8, + "us": 145497.5, "level": "full" }, "parse_copy + dump": { - "us": 184753.0, + "us": 192930.9, "level": "full" } } @@ -11429,63 +11429,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 528092.1, + "us": 504510.8, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 528092.1, + "us": 504510.8, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 528092.1, + "us": 504510.8, "level": "full" } } }, "yyjson": { "best": { - "variant": "read (raw numbers) + write", - "us": 193396.6, + "variant": "read + write", + "us": 201645.1, "level": "full" }, "best_any": { - "variant": "read (raw numbers) + write", - "us": 193396.6, + "variant": "read + write", + "us": 201645.1, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 96788.4, + "us": 100921.3, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 96788.4, + "us": 100921.3, "level": "full" }, "variants": { "read + write (reused allocator)": { - "us": 96788.4, + "us": 100921.3, "level": "full" }, "insitu (copy untimed) + write": { - "us": 158577.0, - "level": "full" - }, - "read (raw numbers) + write": { - "us": 193396.6, + "us": 163035.6, "level": "full" }, "read + write": { - "us": 195008.0, + "us": 201645.1, + "level": "full" + }, + "read (raw numbers) + write": { + "us": 202365.5, "level": "full" }, "insitu (copy) + write": { - "us": 198721.1, + "us": 209983.7, "level": "full" } } @@ -11493,35 +11493,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 266718.5, + "us": 292575.9, "level": "full" }, "best_any": { "variant": "minify", - "us": 47040.3, + "us": 49731.4, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 207560.8, + "us": 216311.1, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 207560.8, + "us": 216311.1, "level": "full" }, "variants": { "minify": { - "us": 47040.3, + "us": 49731.4, "level": "partial" }, "DOM (reused) + to_string": { - "us": 207560.8, + "us": 216311.1, "level": "full" }, "DOM + to_string": { - "us": 266718.5, + "us": 292575.9, "level": "full" } } @@ -11530,14 +11530,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 168901.0, + "us": 176624.6, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 168901.0, + "us": 176624.6, "level": "no UTF-8" } } @@ -11545,28 +11545,28 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 458311.3, + "us": 480814.5, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 96405.0, + "us": 97811.6, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 96405.0, - "level": "partial" - }, - "generic": { - "us": 455056.6, + "us": 97811.6, "level": "partial" }, "generic (strict)": { - "us": 458311.3, + "us": 480814.5, "level": "full" + }, + "generic": { + "us": 491509.3, + "level": "partial" } }, "excluded": { @@ -11577,31 +11577,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 334468.1, + "us": 342182.7, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 334468.1, + "us": 342182.7, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 275271.4, + "us": 283912.3, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 275271.4, + "us": 283912.3, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 275271.4, + "us": 283912.3, "level": "full" }, "parse + serialize": { - "us": 334468.1, + "us": 342182.7, "level": "full" } } @@ -11609,63 +11609,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 355727.0, + "us": 381831.7, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 249234.8, + "us": 259099.6, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 323395.6, + "us": 333088.3, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 321331.9, + "us": 328802.3, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 249234.8, - "level": "no UTF-8" - }, - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 276686.1, + "us": 259099.6, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 278843.9, + "us": 281642.0, + "level": "no UTF-8" + }, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 283965.4, + "level": "no UTF-8" + }, + "Document + Writer (no encoding check)": { + "us": 325527.5, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 321331.9, + "us": 328802.3, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 323395.6, + "us": 333088.3, "level": "full" }, - "Document + Writer (no encoding check)": { - "us": 327139.4, - "level": "no UTF-8" - }, "SAX to Writer (string stream)": { - "us": 355727.0, - "level": "full" - }, - "SAX to Writer": { - "us": 394249.3, + "us": 381831.7, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 398133.8, + "us": 393027.9, + "level": "full" + }, + "SAX to Writer": { + "us": 394705.2, "level": "full" }, "Document + Writer": { - "us": 428999.8, + "us": 433346.8, "level": "full" } } @@ -11735,59 +11735,59 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 2.4, + "us": 2.5, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 2.3, + "us": 2.4, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 2.3, + "us": 2.4, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 2.3, - "level": "full" - }, - "parse + dump": { "us": 2.4, "level": "full" }, - "parse + dump (source numbers)": { + "parse + dump": { "us": 2.5, "level": "full" }, "parse_copy + dump": { "us": 2.6, "level": "full" + }, + "parse + dump (source numbers)": { + "us": 2.6, + "level": "full" } } }, "nlohmann json": { "best": { "variant": "parse + dump", - "us": 19.5, + "us": 18.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 19.5, + "us": 18.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 19.5, + "us": 18.5, "level": "full" } } @@ -11795,43 +11795,43 @@ "yyjson": { "best": { "variant": "read + write", - "us": 3.0, + "us": 3.1, "level": "full" }, "best_any": { "variant": "read + write", - "us": 3.0, + "us": 3.1, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 2.7, + "us": 2.9, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 2.7, + "us": 2.9, "level": "full" }, "variants": { - "read + write (reused allocator)": { - "us": 2.7, - "level": "full" - }, "insitu (copy untimed) + write": { "us": 2.9, "level": "full" }, + "read + write (reused allocator)": { + "us": 2.9, + "level": "full" + }, "read + write": { - "us": 3.0, + "us": 3.1, "level": "full" }, "insitu (copy) + write": { - "us": 3.0, + "us": 3.2, "level": "full" }, "read (raw numbers) + write": { - "us": 3.0, + "us": 3.3, "level": "full" } } @@ -11839,7 +11839,7 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 3.8, + "us": 4.1, "level": "full" }, "best_any": { @@ -11849,12 +11849,12 @@ }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 3.4, + "us": 3.7, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 3.4, + "us": 3.7, "level": "full" }, "variants": { @@ -11863,11 +11863,11 @@ "level": "partial" }, "DOM (reused) + to_string": { - "us": 3.4, + "us": 3.7, "level": "full" }, "DOM + to_string": { - "us": 3.8, + "us": 4.1, "level": "full" } } @@ -11876,14 +11876,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 3.3, + "us": 3.4, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 3.3, + "us": 3.4, "level": "no UTF-8" } } @@ -11891,7 +11891,7 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 14.7, + "us": 15.9, "level": "full" }, "best_any": { @@ -11907,11 +11907,11 @@ "level": "partial" }, "generic": { - "us": 14.3, + "us": 15.0, "level": "partial" }, "generic (strict)": { - "us": 14.7, + "us": 15.9, "level": "full" } }, @@ -11923,31 +11923,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 9.2, + "us": 10.2, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 9.2, + "us": 10.2, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 9.1, + "us": 9.9, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 9.1, + "us": 9.9, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 9.1, + "us": 9.9, "level": "full" }, "parse + serialize": { - "us": 9.2, + "us": 10.2, "level": "full" } } @@ -11955,63 +11955,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 13.9, + "us": 15.6, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 7.5, + "us": 8.5, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 12.2, + "us": 13.2, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 11.6, + "us": 12.4, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 7.5, + "us": 8.5, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 10.3, - "level": "no UTF-8" - }, - "SAX to Writer (raw numbers) (no encoding check)": { - "us": 10.3, - "level": "no UTF-8" - }, - "Document + Writer (reused allocator) (no encoding check)": { "us": 11.6, "level": "no UTF-8" }, + "SAX to Writer (raw numbers) (no encoding check)": { + "us": 11.6, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 12.4, + "level": "no UTF-8" + }, "Document + Writer (reused allocator)": { - "us": 12.2, + "us": 13.2, "level": "full" }, "Document + Writer (no encoding check)": { - "us": 12.2, + "us": 13.2, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 13.9, - "level": "full" - }, - "SAX to Writer": { - "us": 15.5, - "level": "full" - }, - "SAX to Writer (raw numbers)": { "us": 15.6, "level": "full" }, + "SAX to Writer (raw numbers)": { + "us": 16.3, + "level": "full" + }, + "SAX to Writer": { + "us": 16.7, + "level": "full" + }, "Document + Writer": { - "us": 17.2, + "us": 18.6, "level": "full" } } @@ -12081,39 +12081,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump (source numbers)", - "us": 418.5, + "us": 415.4, "level": "full" }, "best_any": { "variant": "parse + dump (source numbers)", - "us": 418.5, + "us": 415.4, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 416.9, + "us": 414.7, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 416.9, + "us": 414.7, "level": "full" }, "variants": { "read + dump (reused)": { - "us": 416.9, + "us": 414.7, "level": "full" }, "parse + dump (source numbers)": { - "us": 418.5, + "us": 415.4, "level": "full" }, "parse + dump": { - "us": 425.5, + "us": 421.6, "level": "full" }, "parse_copy + dump": { - "us": 455.2, + "us": 454.8, "level": "full" } } @@ -12121,63 +12121,63 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 3625.5, + "us": 3282.5, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 3625.5, + "us": 3282.5, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 3625.5, + "us": 3282.5, "level": "full" } } }, "yyjson": { "best": { - "variant": "read (raw numbers) + write", - "us": 564.0, + "variant": "insitu (copy) + write", + "us": 542.3, "level": "full" }, "best_any": { - "variant": "read (raw numbers) + write", - "us": 564.0, + "variant": "insitu (copy) + write", + "us": 542.3, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 555.5, + "us": 536.2, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 555.5, + "us": 536.2, "level": "full" }, "variants": { "insitu (copy untimed) + write": { - "us": 541.8, + "us": 510.4, "level": "full" }, "read + write (reused allocator)": { - "us": 555.5, - "level": "full" - }, - "read (raw numbers) + write": { - "us": 564.0, - "level": "full" - }, - "read + write": { - "us": 573.5, + "us": 536.2, "level": "full" }, "insitu (copy) + write": { - "us": 576.2, + "us": 542.3, + "level": "full" + }, + "read + write": { + "us": 542.7, + "level": "full" + }, + "read (raw numbers) + write": { + "us": 546.4, "level": "full" } } @@ -12185,35 +12185,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 669.8, + "us": 673.2, "level": "full" }, "best_any": { "variant": "minify", - "us": 90.3, + "us": 93.5, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 669.6, + "us": 675.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 669.6, + "us": 675.0, "level": "full" }, "variants": { "minify": { - "us": 90.3, + "us": 93.5, "level": "partial" }, - "DOM (reused) + to_string": { - "us": 669.6, + "DOM + to_string": { + "us": 673.2, "level": "full" }, - "DOM + to_string": { - "us": 669.8, + "DOM (reused) + to_string": { + "us": 675.0, "level": "full" } } @@ -12222,14 +12222,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 527.6, + "us": 527.7, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 527.6, + "us": 527.7, "level": "no UTF-8" } } @@ -12237,27 +12237,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 3180.4, + "us": 3172.7, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 354.9, + "us": 354.0, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 354.9, + "us": 354.0, "level": "partial" }, "generic": { - "us": 3168.5, + "us": 3152.7, "level": "partial" }, "generic (strict)": { - "us": 3180.4, + "us": 3172.7, "level": "full" } }, @@ -12269,31 +12269,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 1798.7, + "us": 1783.2, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 1798.7, + "us": 1783.2, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 1807.0, + "us": 1784.4, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 1807.0, + "us": 1784.4, "level": "full" }, "variants": { "parse + serialize": { - "us": 1798.7, + "us": 1783.2, "level": "full" }, "parser (reused) + serialize": { - "us": 1807.0, + "us": 1784.4, "level": "full" } } @@ -12301,63 +12301,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 2431.4, + "us": 2437.7, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 1572.4, + "us": 1553.8, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2188.7, + "us": 2176.6, "level": "full" }, "best_reused_any": { "variant": "Document + Writer (reused allocator) (no encoding check)", - "us": 2094.2, + "us": 2084.4, "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 1572.4, + "us": 1553.8, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 1790.9, + "us": 1812.0, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 1820.9, + "us": 1823.3, "level": "no UTF-8" }, "Document + Writer (no encoding check)": { - "us": 2087.8, + "us": 2065.3, "level": "no UTF-8" }, "Document + Writer (reused allocator) (no encoding check)": { - "us": 2094.2, + "us": 2084.4, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2188.7, + "us": 2176.6, "level": "full" }, "SAX to Writer (string stream)": { - "us": 2431.4, + "us": 2437.7, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 2706.3, + "us": 2653.9, "level": "full" }, "SAX to Writer": { - "us": 2711.8, + "us": 2657.6, "level": "full" }, "Document + Writer": { - "us": 2932.9, + "us": 2909.0, "level": "full" } } @@ -12427,39 +12427,39 @@ "nlohmann json_document": { "best": { "variant": "parse + dump", - "us": 779.0, + "us": 766.3, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 779.0, + "us": 766.3, "level": "full" }, "best_reused": { "variant": "read + dump (reused)", - "us": 786.3, + "us": 765.0, "level": "full" }, "best_reused_any": { "variant": "read + dump (reused)", - "us": 786.3, + "us": 765.0, "level": "full" }, "variants": { - "parse + dump": { - "us": 779.0, + "read + dump (reused)": { + "us": 765.0, "level": "full" }, - "read + dump (reused)": { - "us": 786.3, + "parse + dump": { + "us": 766.3, "level": "full" }, "parse + dump (source numbers)": { - "us": 792.5, + "us": 772.4, "level": "full" }, "parse_copy + dump": { - "us": 812.1, + "us": 798.5, "level": "full" } } @@ -12467,19 +12467,19 @@ "nlohmann json": { "best": { "variant": "parse + dump", - "us": 5352.0, + "us": 4651.1, "level": "full" }, "best_any": { "variant": "parse + dump", - "us": 5352.0, + "us": 4651.1, "level": "full" }, "best_reused": null, "best_reused_any": null, "variants": { "parse + dump": { - "us": 5352.0, + "us": 4651.1, "level": "full" } } @@ -12487,43 +12487,43 @@ "yyjson": { "best": { "variant": "read (raw numbers) + write", - "us": 797.0, + "us": 784.4, "level": "full" }, "best_any": { "variant": "read (raw numbers) + write", - "us": 797.0, + "us": 784.4, "level": "full" }, "best_reused": { "variant": "read + write (reused allocator)", - "us": 830.6, + "us": 831.4, "level": "full" }, "best_reused_any": { "variant": "read + write (reused allocator)", - "us": 830.6, + "us": 831.4, "level": "full" }, "variants": { - "insitu (copy untimed) + write": { - "us": 794.5, + "read (raw numbers) + write": { + "us": 784.4, "level": "full" }, - "read (raw numbers) + write": { - "us": 797.0, + "insitu (copy untimed) + write": { + "us": 798.2, "level": "full" }, "read + write": { - "us": 829.5, + "us": 830.2, "level": "full" }, "insitu (copy) + write": { - "us": 829.6, + "us": 830.4, "level": "full" }, "read + write (reused allocator)": { - "us": 830.6, + "us": 831.4, "level": "full" } } @@ -12531,35 +12531,35 @@ "simdjson": { "best": { "variant": "DOM + to_string", - "us": 1211.1, + "us": 1226.0, "level": "full" }, "best_any": { "variant": "minify", - "us": 92.4, + "us": 92.9, "level": "partial" }, "best_reused": { "variant": "DOM (reused) + to_string", - "us": 1212.6, + "us": 1223.0, "level": "full" }, "best_reused_any": { "variant": "DOM (reused) + to_string", - "us": 1212.6, + "us": 1223.0, "level": "full" }, "variants": { "minify": { - "us": 92.4, + "us": 92.9, "level": "partial" }, - "DOM + to_string": { - "us": 1211.1, + "DOM (reused) + to_string": { + "us": 1223.0, "level": "full" }, - "DOM (reused) + to_string": { - "us": 1212.6, + "DOM + to_string": { + "us": 1226.0, "level": "full" } } @@ -12568,14 +12568,14 @@ "best": null, "best_any": { "variant": "Document + Serialize", - "us": 1214.4, + "us": 1222.8, "level": "no UTF-8" }, "best_reused": null, "best_reused_any": null, "variants": { "Document + Serialize": { - "us": 1214.4, + "us": 1222.8, "level": "no UTF-8" } } @@ -12583,27 +12583,27 @@ "Glaze": { "best": { "variant": "generic (strict)", - "us": 5550.6, + "us": 5558.7, "level": "full" }, "best_any": { "variant": "minify_json", - "us": 638.5, + "us": 621.8, "level": "partial" }, "best_reused": null, "best_reused_any": null, "variants": { "minify_json": { - "us": 638.5, + "us": 621.8, "level": "partial" }, "generic": { - "us": 5531.0, + "us": 5507.2, "level": "partial" }, "generic (strict)": { - "us": 5550.6, + "us": 5558.7, "level": "full" } }, @@ -12615,31 +12615,31 @@ "Boost.JSON": { "best": { "variant": "parse + serialize", - "us": 2569.6, + "us": 2534.1, "level": "full" }, "best_any": { "variant": "parse + serialize", - "us": 2569.6, + "us": 2534.1, "level": "full" }, "best_reused": { "variant": "parser (reused) + serialize", - "us": 2545.2, + "us": 2531.0, "level": "full" }, "best_reused_any": { "variant": "parser (reused) + serialize", - "us": 2545.2, + "us": 2531.0, "level": "full" }, "variants": { "parser (reused) + serialize": { - "us": 2545.2, + "us": 2531.0, "level": "full" }, "parse + serialize": { - "us": 2569.6, + "us": 2534.1, "level": "full" } } @@ -12647,63 +12647,63 @@ "RapidJSON": { "best": { "variant": "SAX to Writer (string stream)", - "us": 2640.3, + "us": 2605.0, "level": "full" }, "best_any": { "variant": "SAX to Writer (string stream) (no encoding check)", - "us": 2139.6, + "us": 2185.9, "level": "no UTF-8" }, "best_reused": { "variant": "Document + Writer (reused allocator)", - "us": 2804.7, + "us": 2762.3, "level": "full" }, "best_reused_any": { - "variant": "Document + Writer (reused allocator)", - "us": 2804.7, - "level": "full" + "variant": "Document + Writer (reused allocator) (no encoding check)", + "us": 2722.9, + "level": "no UTF-8" }, "variants": { "SAX to Writer (string stream) (no encoding check)": { - "us": 2139.6, + "us": 2185.9, "level": "no UTF-8" }, "SAX to Writer (no encoding check)": { - "us": 2291.3, + "us": 2438.1, "level": "no UTF-8" }, "SAX to Writer (raw numbers) (no encoding check)": { - "us": 2566.0, + "us": 2559.5, "level": "no UTF-8" }, "SAX to Writer (string stream)": { - "us": 2640.3, + "us": 2605.0, "level": "full" }, "Document + Writer (no encoding check)": { - "us": 2801.3, + "us": 2683.2, + "level": "no UTF-8" + }, + "Document + Writer (reused allocator) (no encoding check)": { + "us": 2722.9, "level": "no UTF-8" }, "Document + Writer (reused allocator)": { - "us": 2804.7, + "us": 2762.3, "level": "full" }, - "Document + Writer (reused allocator) (no encoding check)": { - "us": 2840.1, - "level": "no UTF-8" - }, "SAX to Writer": { - "us": 2930.6, + "us": 2955.9, "level": "full" }, "SAX to Writer (raw numbers)": { - "us": 3114.9, + "us": 3100.9, "level": "full" }, "Document + Writer": { - "us": 3338.1, + "us": 3225.7, "level": "full" } } @@ -12775,23 +12775,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 147.8, + "us": 146.8, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 147.8, + "us": 146.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 147.8, + "us": 146.8, "level": "n/a" }, "dump": { - "us": 149.9, + "us": 152.3, "level": "n/a" } } @@ -12799,19 +12799,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 470.6, + "us": 413.0, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 470.6, + "us": 413.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 470.6, + "us": 413.0, "level": "n/a" } } @@ -12819,19 +12819,19 @@ "yyjson": { "best": { "variant": "write", - "us": 204.2, + "us": 179.9, "level": "n/a" }, "best_any": { "variant": "write", - "us": 204.2, + "us": 179.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 204.2, + "us": 179.9, "level": "n/a" } } @@ -12839,19 +12839,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 358.6, + "us": 360.2, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 358.6, + "us": 360.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 358.6, + "us": 360.2, "level": "n/a" } } @@ -12859,19 +12859,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 717.1, + "us": 661.3, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 717.1, + "us": 661.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 717.1, + "us": 661.3, "level": "n/a" } } @@ -12879,19 +12879,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 255.6, + "us": 267.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 255.6, + "us": 267.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 255.6, + "us": 267.6, "level": "n/a" } } @@ -12899,23 +12899,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 360.0, + "us": 336.4, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 360.0, + "us": 336.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 360.0, + "us": 336.4, "level": "n/a" }, "generic (strict)": { - "us": 365.6, + "us": 367.2, "level": "n/a" } }, @@ -12927,19 +12927,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 479.7, + "us": 473.7, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 479.7, + "us": 473.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 479.7, + "us": 473.7, "level": "n/a" } } @@ -13009,23 +13009,23 @@ "nlohmann json_document": { "best": { "variant": "dump", - "us": 260.4, + "us": 260.3, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 260.4, + "us": 260.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 260.4, + "us": 260.3, "level": "n/a" }, "dump (source numbers)": { - "us": 267.1, + "us": 265.6, "level": "n/a" } } @@ -13033,19 +13033,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 644.1, + "us": 617.1, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 644.1, + "us": 617.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 644.1, + "us": 617.1, "level": "n/a" } } @@ -13053,19 +13053,19 @@ "yyjson": { "best": { "variant": "write", - "us": 327.0, + "us": 325.2, "level": "n/a" }, "best_any": { "variant": "write", - "us": 327.0, + "us": 325.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 327.0, + "us": 325.2, "level": "n/a" } } @@ -13073,19 +13073,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 636.8, + "us": 636.5, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 636.8, + "us": 636.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 636.8, + "us": 636.5, "level": "n/a" } } @@ -13093,19 +13093,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 1033.1, + "us": 1014.8, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 1033.1, + "us": 1014.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 1033.1, + "us": 1014.8, "level": "n/a" } } @@ -13113,19 +13113,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 541.0, + "us": 543.2, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 541.0, + "us": 543.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 541.0, + "us": 543.2, "level": "n/a" } } @@ -13133,23 +13133,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 660.0, + "us": 682.0, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 660.0, + "us": 682.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 660.0, + "us": 682.0, "level": "n/a" }, "generic (strict)": { - "us": 699.0, + "us": 692.3, "level": "n/a" } }, @@ -13161,19 +13161,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 1015.9, + "us": 1003.3, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 1015.9, + "us": 1003.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 1015.9, + "us": 1003.3, "level": "n/a" } } @@ -13243,23 +13243,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 998.5, + "us": 997.0, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 998.5, + "us": 997.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 998.5, + "us": 997.0, "level": "n/a" }, "dump": { - "us": 3861.0, + "us": 3811.4, "level": "n/a" } } @@ -13267,19 +13267,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 4343.5, + "us": 4036.4, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 4343.5, + "us": 4036.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 4343.5, + "us": 4036.4, "level": "n/a" } } @@ -13287,19 +13287,19 @@ "yyjson": { "best": { "variant": "write", - "us": 3748.2, + "us": 3547.5, "level": "n/a" }, "best_any": { "variant": "write", - "us": 3748.2, + "us": 3547.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 3748.2, + "us": 3547.5, "level": "n/a" } } @@ -13307,19 +13307,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 4998.6, + "us": 5362.9, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 4998.6, + "us": 5362.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 4998.6, + "us": 5362.9, "level": "n/a" } } @@ -13327,19 +13327,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 9017.1, + "us": 8980.5, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 9017.1, + "us": 8980.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 9017.1, + "us": 8980.5, "level": "n/a" } } @@ -13347,43 +13347,43 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 5119.7, + "us": 5057.3, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 5119.7, + "us": 5057.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 5119.7, + "us": 5057.3, "level": "n/a" } } }, "Glaze": { "best": { - "variant": "generic (strict)", - "us": 3714.1, + "variant": "generic", + "us": 3750.2, "level": "n/a" }, "best_any": { - "variant": "generic (strict)", - "us": 3714.1, + "variant": "generic", + "us": 3750.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "generic (strict)": { - "us": 3714.1, + "generic": { + "us": 3750.2, "level": "n/a" }, - "generic": { - "us": 3736.5, + "generic (strict)": { + "us": 3766.6, "level": "n/a" } }, @@ -13395,19 +13395,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 6153.7, + "us": 6012.3, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 6153.7, + "us": 6012.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 6153.7, + "us": 6012.3, "level": "n/a" } } @@ -13476,24 +13476,24 @@ "jeopardy": { "nlohmann json_document": { "best": { - "variant": "dump", - "us": 63958.0, + "variant": "dump (source numbers)", + "us": 71821.9, "level": "n/a" }, "best_any": { - "variant": "dump", - "us": 63958.0, + "variant": "dump (source numbers)", + "us": 71821.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { - "dump": { - "us": 63958.0, + "dump (source numbers)": { + "us": 71821.9, "level": "n/a" }, - "dump (source numbers)": { - "us": 64736.5, + "dump": { + "us": 72196.4, "level": "n/a" } } @@ -13501,19 +13501,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 114096.0, + "us": 124864.8, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 114096.0, + "us": 124864.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 114096.0, + "us": 124864.8, "level": "n/a" } } @@ -13521,19 +13521,19 @@ "yyjson": { "best": { "variant": "write", - "us": 65989.4, + "us": 71044.1, "level": "n/a" }, "best_any": { "variant": "write", - "us": 65989.4, + "us": 71044.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 65989.4, + "us": 71044.1, "level": "n/a" } } @@ -13541,19 +13541,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 154364.5, + "us": 169031.8, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 154364.5, + "us": 169031.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 154364.5, + "us": 169031.8, "level": "n/a" } } @@ -13561,19 +13561,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 134259.5, + "us": 136956.8, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 134259.5, + "us": 136956.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 134259.5, + "us": 136956.8, "level": "n/a" } } @@ -13581,19 +13581,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 69546.0, + "us": 75733.6, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 69546.0, + "us": 75733.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 69546.0, + "us": 75733.6, "level": "n/a" } } @@ -13601,23 +13601,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 124598.1, + "us": 133729.6, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 124598.1, + "us": 133729.6, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 124598.1, + "us": 133729.6, "level": "n/a" }, "generic (strict)": { - "us": 132481.0, + "us": 140656.2, "level": "n/a" } }, @@ -13629,19 +13629,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 139022.5, + "us": 148120.2, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 139022.5, + "us": 148120.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 139022.5, + "us": 148120.2, "level": "n/a" } } @@ -13711,23 +13711,23 @@ "nlohmann json_document": { "best": { "variant": "dump", - "us": 0.8, + "us": 0.9, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 0.8, + "us": 0.9, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 0.8, + "us": 0.9, "level": "n/a" }, "dump (source numbers)": { - "us": 0.8, + "us": 0.9, "level": "n/a" } } @@ -13795,19 +13795,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 4.0, + "us": 4.1, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 4.0, + "us": 4.1, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 4.0, + "us": 4.1, "level": "n/a" } } @@ -13815,19 +13815,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 1.6, + "us": 1.7, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 1.6, + "us": 1.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 1.6, + "us": 1.7, "level": "n/a" } } @@ -13835,19 +13835,19 @@ "Glaze": { "best": { "variant": "generic", - "us": 1.7, + "us": 1.8, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 1.7, + "us": 1.8, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 1.7, + "us": 1.8, "level": "n/a" }, "generic (strict)": { @@ -13945,23 +13945,23 @@ "nlohmann json_document": { "best": { "variant": "dump (source numbers)", - "us": 142.8, + "us": 144.0, "level": "n/a" }, "best_any": { "variant": "dump (source numbers)", - "us": 142.8, + "us": 144.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump (source numbers)": { - "us": 142.8, + "us": 144.0, "level": "n/a" }, "dump": { - "us": 146.1, + "us": 147.4, "level": "n/a" } } @@ -13969,19 +13969,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 437.3, + "us": 416.4, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 437.3, + "us": 416.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 437.3, + "us": 416.4, "level": "n/a" } } @@ -13989,19 +13989,19 @@ "yyjson": { "best": { "variant": "write", - "us": 195.6, + "us": 180.0, "level": "n/a" }, "best_any": { "variant": "write", - "us": 195.6, + "us": 180.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 195.6, + "us": 180.0, "level": "n/a" } } @@ -14009,19 +14009,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 358.1, + "us": 360.5, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 358.1, + "us": 360.5, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 358.1, + "us": 360.5, "level": "n/a" } } @@ -14029,19 +14029,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 662.4, + "us": 654.2, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 662.4, + "us": 654.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 662.4, + "us": 654.2, "level": "n/a" } } @@ -14049,19 +14049,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 236.2, + "us": 246.4, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 236.2, + "us": 246.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 236.2, + "us": 246.4, "level": "n/a" } } @@ -14069,23 +14069,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 331.3, + "us": 341.2, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 331.3, + "us": 341.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 331.3, + "us": 341.2, "level": "n/a" }, "generic (strict)": { - "us": 366.6, + "us": 370.7, "level": "n/a" } }, @@ -14097,19 +14097,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 478.9, + "us": 478.0, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 478.9, + "us": 478.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 478.9, + "us": 478.0, "level": "n/a" } } @@ -14179,23 +14179,23 @@ "nlohmann json_document": { "best": { "variant": "dump", - "us": 269.5, + "us": 253.0, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 269.5, + "us": 253.0, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 269.5, + "us": 253.0, "level": "n/a" }, "dump (source numbers)": { - "us": 277.0, + "us": 260.9, "level": "n/a" } } @@ -14203,19 +14203,19 @@ "nlohmann json": { "best": { "variant": "dump", - "us": 666.2, + "us": 611.4, "level": "n/a" }, "best_any": { "variant": "dump", - "us": 666.2, + "us": 611.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "dump": { - "us": 666.2, + "us": 611.4, "level": "n/a" } } @@ -14223,19 +14223,19 @@ "yyjson": { "best": { "variant": "write", - "us": 343.8, + "us": 323.3, "level": "n/a" }, "best_any": { "variant": "write", - "us": 343.8, + "us": 323.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "write": { - "us": 343.8, + "us": 323.3, "level": "n/a" } } @@ -14243,19 +14243,19 @@ "simdjson": { "best": { "variant": "to_string", - "us": 670.5, + "us": 644.7, "level": "n/a" }, "best_any": { "variant": "to_string", - "us": 670.5, + "us": 644.7, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "to_string": { - "us": 670.5, + "us": 644.7, "level": "n/a" } } @@ -14263,19 +14263,19 @@ "RapidJSON": { "best": { "variant": "Writer", - "us": 1096.6, + "us": 1025.2, "level": "n/a" }, "best_any": { "variant": "Writer", - "us": 1096.6, + "us": 1025.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Writer": { - "us": 1096.6, + "us": 1025.2, "level": "n/a" } } @@ -14283,19 +14283,19 @@ "sonic-cpp": { "best": { "variant": "Serialize", - "us": 525.1, + "us": 532.3, "level": "n/a" }, "best_any": { "variant": "Serialize", - "us": 525.1, + "us": 532.3, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "Serialize": { - "us": 525.1, + "us": 532.3, "level": "n/a" } } @@ -14303,23 +14303,23 @@ "Glaze": { "best": { "variant": "generic", - "us": 680.1, + "us": 669.2, "level": "n/a" }, "best_any": { "variant": "generic", - "us": 680.1, + "us": 669.2, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "generic": { - "us": 680.1, + "us": 669.2, "level": "n/a" }, "generic (strict)": { - "us": 693.2, + "us": 697.0, "level": "n/a" } }, @@ -14331,19 +14331,19 @@ "Boost.JSON": { "best": { "variant": "serialize", - "us": 1070.7, + "us": 1038.4, "level": "n/a" }, "best_any": { "variant": "serialize", - "us": 1070.7, + "us": 1038.4, "level": "n/a" }, "best_reused": null, "best_reused_any": null, "variants": { "serialize": { - "us": 1070.7, + "us": 1038.4, "level": "n/a" } } diff --git a/docs/mkdocs/scripts/figures/perf_blog.py b/docs/mkdocs/scripts/figures/perf_blog.py index b4d54f69f..ad070d02d 100644 --- a/docs/mkdocs/scripts/figures/perf_blog.py +++ b/docs/mkdocs/scripts/figures/perf_blog.py @@ -201,24 +201,24 @@ def digits(): # ---------- overview: speedup per workload (Google Benchmark rows, 3.12.0 time / 3.13.0 time) ---------- # (group, label, speedup), copied from the table "The short version" OVERVIEW = [ - ("Parsing", "twitter.json", 3.14), - ("Parsing", "citm_catalog.json", 4.25), - ("Parsing", "canada.json", 3.35), - ("Parsing", "canada.json, indented", 6.51), - ("Parsing", "citm, ordered_json", 6.85), - ("Parsing", "twitter, std::ifstream", 2.50), - ("Parsing", "citm, FILE*", 4.74), - ("Parsing", "citm, accept()", 7.07), - ("Writing", "dump() twitter", 6.70), - ("Writing", "dump() canada", 2.98), - ("Writing", "dump(4) citm", 4.70), - ("Writing", "to_cbor() twitter", 4.59), - ("Reading CBOR", "twitter, memory", 3.39), - ("Reading CBOR", "twitter, FILE*", 6.59), - ("Values", "diff() canada", 10.46), - ("Values", "iterate canada", 2.73), - ("Values", "copy + destroy citm", 1.13), - ("Values", "== citm", 1.06), + ("Parsing", "twitter.json", 3.49), + ("Parsing", "citm_catalog.json", 5.11), + ("Parsing", "canada.json", 4.08), + ("Parsing", "canada.json, indented", 7.41), + ("Parsing", "citm, ordered_json", 8.18), + ("Parsing", "twitter, std::ifstream", 2.46), + ("Parsing", "citm, FILE*", 14.94), + ("Parsing", "citm, accept()", 13.66), + ("Writing", "dump() twitter", 6.60), + ("Writing", "dump() canada", 2.90), + ("Writing", "dump(4) citm", 4.62), + ("Writing", "to_cbor() twitter", 4.41), + ("Reading CBOR", "twitter, memory", 3.52), + ("Reading CBOR", "twitter, FILE*", 9.23), + ("Values", "diff() canada", 10.44), + ("Values", "iterate canada", 1.96), + ("Values", "copy + destroy citm", 1.11), + ("Values", "== citm", 1.01), ] @@ -304,16 +304,19 @@ def distribution(): # (column in perf_timeline.csv, panel title, [(PR, label)]): each labeled step shows the number of the theme that # explains it ("U" for the UTF-8 check of the binary readers that came and went); the appendix maps steps to PRs TIMELINE = [ - ("parse_citm", "parse() citm_catalog.json", [(5234, "4"), (5283, "1"), (5592, "4"), (5809, "4"), (5810, "2"), (5882, "4")]), - ("parse_canada", "parse() canada.json", [(5234, "4"), (5283, "1"), (5617, "3"), (5738, "3"), (5851, "3"), (5882, "4")]), - ("accept_twitter", "accept() twitter.json", [(5234, "4"), (5283, "1"), (5592, "4"), (5809, "4"), (5810, "2"), (5853, "2")]), + ("parse_citm", "parse() citm_catalog.json", [(5234, "4"), (5283, "1"), (5592, "4"), (5809, "4"), (5810, "2"), (5882, "4"), (6031, "1")]), + ("parse_canada", "parse() canada.json", [(5234, "4"), (5283, "1"), (5617, "3"), (5738, "3"), (5851, "3"), (5882, "4"), (6031, "1")]), + ("accept_twitter", "accept() twitter.json", [(5234, "4"), (5283, "1"), (5592, "4"), (5809, "4"), (5810, "2"), (5853, "2"), (6031, "1")]), ("parse_twitter_ifstream", "parse() twitter.json, std::ifstream", [(5828, "1"), (5884, "1")]), ("dump_twitter", "dump() twitter.json", [(5285, "6"), (5738, "2"), (5878, "2"), (5883, "2")]), ("dump_canada", "dump() canada.json", [(5285, "6"), (5634, "3")]), - ("from_cbor_twitter", "from_cbor() twitter", [(5233, "1"), (5501, "4"), (5185, "U"), (5746, "U")]), + ("from_cbor_twitter", "from_cbor() twitter", [(5233, "1"), (5501, "4"), (5185, "U"), (5746, "U"), (6028, "4")]), ("to_cbor_twitter", "to_cbor() twitter", [(5328, "4"), (5824, "6"), (5885, "6")]), ] -MONTHS = [("2025-04", "3.12.0"), ("2026-09", "Sep 2026"), ("2026-10", "Oct")] +# pull requests that were not merged yet when the timeline was measured: their step is the last point, the candidate +# (develop with the open pull requests merged); drop a number here once its pull request is on develop +PENDING = {6031} +MONTHS = [("2025-04", "3.12.0"), ("2026-09", "Sep 2026"), ("2026-10", "Oct"), ("2026-11", "Nov")] def timeline(): @@ -358,7 +361,10 @@ def timeline(): # label, and a label that would overlap one already placed moves up groups = [] for pr, lab in labels: - i = next(k for k, r in enumerate(rows) if r["pr"] == str(pr)) + i = next((k for k, r in enumerate(rows) if r["pr"] == str(pr)), None) + if i is None and pr in PENDING and rows[-1]["commit"] == "candidate": + i = n - 1 + assert i is not None, "no commit of #%d in the timeline" % pr if groups and X(i) - X(groups[-1][-1][1]) < 6: groups[-1].append((pr, i, lab)) else: @@ -454,7 +460,8 @@ def heldout(): for f in files: libs = data[plat][f] # the fastest other library: below 1 json_document is the fastest, and the distance shows by how much - best = min((l for l in libs if l != "nlohmann json_document"), key=lambda l: libs[l]["us"]) + # json::accept() is nlohmann/json too, not another library + best = min((l for l in libs if l not in ("nlohmann json_document", "nlohmann json")), key=lambda l: libs[l]["us"]) rel[plat, f] = libs["nlohmann json_document"]["us"] / libs[best]["us"] winner[plat, f] = UC_LIBS.get(best, best) files.sort(key=lambda f: (rel["x86-gcc", f], rel["mac", f])) @@ -498,10 +505,10 @@ def heldout(): # CPU time of the compiler in ms, median of 5 interleaved rounds, C++20, M1 Max (the post's appendix G) # (3.12.0, 3.13.0, 3.13.0 with a precompiled header, 3.13.0 as a module) PRICE = [ - ("Apple clang 21, -O0 (debug)", [("count_numbers", 955.0, 1320.5, 688.5, 917.5), ("server_config", 1113.2, 1496.4, 862.6, 1135.5)]), - ("Apple clang 21, -O2", [("count_numbers", 1393.2, 2081.0, 1458.4, 1684.6), ("server_config", 1753.5, 2545.6, 1925.3, 2168.6)]), - ("GCC 16, -O0 (debug)", [("count_numbers", 1569.4, 2548.4, 1725.0, 1699.8), ("server_config", 2025.4, 2985.1, 2301.6, 2325.8)]), - ("GCC 16, -O2", [("count_numbers", 2336.0, 3701.5, 2986.8, 2913.4), ("server_config", 3121.5, 4714.2, 4006.2, 4054.9)]), + ("Apple clang 21, -O0 (debug)", [("count_numbers", 830.8, 1131.1, 639.0, 790.3), ("server_config", 962.8, 1312.5, 774.2, 1036.5)]), + ("Apple clang 21, -O2", [("count_numbers", 1328.4, 1898.4, 1311.8, 1491.2), ("server_config", 1584.1, 2251.0, 1778.7, 1925.9)]), + ("GCC 16, -O0 (debug)", [("count_numbers", 1416.5, 2385.4, 1592.9, 1603.7), ("server_config", 1877.6, 2819.8, 2152.1, 2180.2)]), + ("GCC 16, -O2", [("count_numbers", 2159.0, 3464.5, 2765.0, 2739.8), ("server_config", 2877.9, 4388.2, 3722.4, 3773.8)]), ] PRICE_SERIES = [("3.13.0", "nj-charts-c2"), ("3.13.0, precompiled header", "nj-charts-c1"), ("3.13.0, module", "nj-charts-c3")] @@ -584,7 +591,8 @@ NUMBER_TEXT = ("source numbers", "raw numbers") # variants that write each num def normalize_usecases(data): """Chooses each library's best variants again with the rules of the post: variants that reuse a parser or document - across calls are measured but not chosen. Variants that write each number by copying its text instead of formatting + across calls, and in-place variants whose copy of the input is made before the timer starts ("(copy untimed)"), are + measured but not chosen. Variants that write each number by copying its text instead of formatting it (json_document's number_format::source, yyjson's and RapidJSON's raw numbers in edit, minify and write) are not chosen as the fully validating way, but as a way that does less, marked "N" like "U" and "P". Skipping the number conversion while reading is allowed. Each pick has a "mark": "", or the letters of what it skips""" @@ -594,7 +602,7 @@ def normalize_usecases(data): numtext = lambda k: uc in WRITING and any(w in k for w in NUMBER_TEXT) for cell in files.values(): for e in cell.values(): - vs = [(v["us"], k, v["level"]) for k, v in e["variants"].items() if "reused" not in k] + vs = [(v["us"], k, v["level"]) for k, v in e["variants"].items() if "reused" not in k and "copy untimed" not in k] full = [v for v in vs if rank[v[2]] == 0 and not numtext(v[1])] pick = lambda v: {"us": v[0], "variant": v[1], "level": "full" if rank[v[2]] == 0 else v[2], "mark": " ".join(m for m in (LEVEL_MARK.get(v[2], ""), "N" if numtext(v[1]) else "") if m)} diff --git a/docs/mkdocs/scripts/mermaid/package-lock.json b/docs/mkdocs/scripts/mermaid/package-lock.json index 14bbc249e..5e9ff461b 100644 --- a/docs/mkdocs/scripts/mermaid/package-lock.json +++ b/docs/mkdocs/scripts/mermaid/package-lock.json @@ -7,7 +7,7 @@ "name": "check-mermaid", "dependencies": { "jsdom": "30.1.3", - "mermaid": "11.17.2" + "mermaid": "12.3.0" } }, "node_modules/@antfu/install-pkg": { @@ -72,10 +72,41 @@ "specificity": "bin/cli.js" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-13.2.0.tgz", + "integrity": "sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "13.2.0", + "@chevrotain/types": "13.2.0" + } + }, + "node_modules/@chevrotain/gast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-13.2.0.tgz", + "integrity": "sha512-bCARdAsG+eEbOveSXcOAC7pVxA04I1ionzeMOwIYf5NX7SaS7zgn4Dgug2BSqoL+iyKeMNSorQjsFSHJHsCNwg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "13.2.0" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-13.2.0.tgz", + "integrity": "sha512-kxpUkLtiaK09ph+dib+Yvm+3sWSnuwlo25gqfKRgTPNmF6H7uW4gVkMjaRdtnN783S9sM6vUNWh9CsxYX4QwKw==", + "license": "Apache-2.0" + }, "node_modules/@chevrotain/types": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", - "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-13.2.0.tgz", + "integrity": "sha512-7qrYHRlKfWf2AvBfJi5eVOrKAkbxvMFsy/iIHTGIiApNcEecCaVIdR+mIQhyCBsTDJxBz4JWXHMo6krbhR9hVg==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-13.2.0.tgz", + "integrity": "sha512-SzKYY68rseOrb9KILVzPsl6SjkQtdWw01SRGB5aCVI5kFcHltQsOYV3JB0Ffst72DgkvHCyDQ0NLwxtmCCf97Q==", "license": "Apache-2.0" }, "node_modules/@csstools/color-helpers": { @@ -247,12 +278,15 @@ } }, "node_modules/@mermaid-js/parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.1.tgz", - "integrity": "sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.1.tgz", + "integrity": "sha512-j37dj/h6p6pots1L7pLPPNuABEEu9WP4OYg9pW1g+nYG331j0+3canE9OagtYdytYvdSAMG+2fKU5cxep6LgjA==", "license": "MIT", "dependencies": { - "@chevrotain/types": "~11.1.2" + "@chevrotain/types": "~13.2.0" + }, + "engines": { + "node": ">=22.12.0" } }, "node_modules/@types/d3": { @@ -540,6 +574,22 @@ "require-from-string": "^2.0.2" } }, + "node_modules/chevrotain": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-13.2.0.tgz", + "integrity": "sha512-GTouk5YzgBxlTPCaDn5q0q2EJKkrYmnPF+HmF8v0Qo4r3iyPG7HJivkN1wthCXZcm3sIcZFpGTRovLPNdJNRCA==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "13.2.0", + "@chevrotain/gast": "13.2.0", + "@chevrotain/regexp-to-ast": "13.2.0", + "@chevrotain/types": "13.2.0", + "@chevrotain/utils": "13.2.0" + }, + "engines": { + "node": ">=22.0.0" + } + }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -1113,6 +1163,12 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/elkjs": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.12.1.tgz", + "integrity": "sha512-IhMYKHE4S2vtx0QrhBP3lYOIKDeIiJXBrdq9MGYkuB8ZHqhrBnHNfSUndjXFewrX1CPK8chwq+2NA0K0hliYuw==", + "license": "EPL-2.0 OR GPL-3.0-or-later" + }, "node_modules/entities": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", @@ -1137,15 +1193,6 @@ "tests/browser-compat" ] }, - "node_modules/fastdom": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastdom/-/fastdom-1.0.12.tgz", - "integrity": "sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg==", - "license": "MIT", - "dependencies": { - "strictdom": "^1.0.1" - } - }, "node_modules/hachure-fill": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", @@ -1241,28 +1288,28 @@ } }, "node_modules/katex": { - "version": "0.16.47", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", - "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.18.10.tgz", + "integrity": "sha512-/B6p9eY9DX7aHBfpkHdpirDTZ5QH9xTwL9y837PWuzuv41O5jFdqNQwVQEQsimY0/iVNkwBY4+4hMfhQ7d4Dbw==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], "license": "MIT", "dependencies": { - "commander": "^8.3.0" + "commander": "^15.0.0" }, "bin": { "katex": "cli.js" } }, "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.1.0.tgz", + "integrity": "sha512-cgnQ88TRrWcC7pVq46RzJVRMktu3W2RcbnoidnfBsl1bmDCBwJS/udcIZpKoCrbAYYaCqsz1yZCVIgbIaU3ddQ==", "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=22.12.0" } }, "node_modules/khroma": { @@ -1310,16 +1357,17 @@ "license": "CC0-1.0" }, "node_modules/mermaid": { - "version": "11.17.2", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.17.2.tgz", - "integrity": "sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.3.0.tgz", + "integrity": "sha512-4113TdXeLAsMruJ79OpFL5O8+LTFXhQqZ260rF3tgUmiNAtRm4Uume04I+65PRN6yZ69J4f8rVYWW8zRk65UYw==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^1.2.1", + "@mermaid-js/parser": "^2.0.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", + "chevrotain": "~13.2.0", "cytoscape": "^3.34.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", @@ -1327,16 +1375,18 @@ "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.21", - "dompurify": "^3.3.3", + "dompurify": "^3.4.17", + "elkjs": "^0.12.0", "es-toolkit": "^1.45.1", - "fastdom": "1.0.12", - "katex": "^0.16.47", + "katex": "^0.18.0", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", - "ts-dedent": "^2.2.0", - "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">=22.12.0" } }, "node_modules/package-manager-detector": { @@ -1448,12 +1498,6 @@ "node": ">=0.10.0" } }, - "node_modules/strictdom": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz", - "integrity": "sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==", - "license": "MIT" - }, "node_modules/stylis": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", @@ -1529,19 +1573,6 @@ "node": ">=22.19.0" } }, - "node_modules/uuid": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz", - "integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist-node/bin/uuid" - } - }, "node_modules/w3c-xmlserializer": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-6.0.0.tgz", diff --git a/docs/mkdocs/scripts/mermaid/package.json b/docs/mkdocs/scripts/mermaid/package.json index d2c033d3d..d06363536 100644 --- a/docs/mkdocs/scripts/mermaid/package.json +++ b/docs/mkdocs/scripts/mermaid/package.json @@ -5,6 +5,6 @@ "type": "module", "dependencies": { "jsdom": "30.1.3", - "mermaid": "11.17.2" + "mermaid": "12.3.0" } } diff --git a/include/nlohmann/detail/input/contiguous_parser.hpp b/include/nlohmann/detail/input/contiguous_parser.hpp new file mode 100644 index 000000000..29a090a3b --- /dev/null +++ b/include/nlohmann/detail/input/contiguous_parser.hpp @@ -0,0 +1,1032 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // isfinite +#include // size_t, ptrdiff_t +#include // uint64_t, int64_t +#include // memcmp +#include // numeric_limits +#include // string +#include // integral_constant, true_type, false_type +#include // move +#include // vector + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief a parser for JSON text in one contiguous block, for parse(), accept(), + and sax_parse() + +The default parser and lexer exchange one token at a time, and the lexer keeps +its state (the current character, a pending unget, where the token starts) in +members, which every character pays for. This parser reads the block through a +local pointer instead, and the grammar, the whitespace and the tokens are one +loop, after yyjson's reader: the state stays in registers, and the expected +next token is tested where it is expected instead of being dispatched on. + +It reports what it reads to a SAX handler: the one parse() uses to build the +value, the one accept() uses, or the user's handler of sax_parse(). On a byte +the default parser would reject, it stops before reporting the token, and +returns false: the events up to there are those the default parser reports. +The caller then runs the default parser on the same input to report the error +with its exact message and position (report_contiguous_error(), +json_sax_error_forwarder), and parse() builds no value from what was read. + +What is accepted, and the values reported, are those of the default parser +with default options: the same number grammar and conversions, the same UTF-8 +and escape rules, a UTF-8 byte order mark at the start, and, without +JSON_STRICT_NUL_HANDLING, a NUL byte as the end of the input. + +@tparam KeepValues whether the handler needs the values of strings and + numbers (false for accept(), whose handler ignores them) +*/ +template +class contiguous_parser +{ + using string_t = typename BasicJsonType::string_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using char_t = typename string_t::value_type; + using uchar = unsigned char; + + public: + contiguous_parser(const uchar* first, const uchar* last, SAX* sax_) noexcept + : begin(first), end(last), sax(sax_) + {} + + contiguous_parser(const contiguous_parser&) = delete; + contiguous_parser(contiguous_parser&&) = delete; + contiguous_parser& operator=(const contiguous_parser&) = delete; + contiguous_parser& operator=(contiguous_parser&&) = delete; + ~contiguous_parser() = default; + + /// whether the whole block is one valid JSON text; the handler has seen all of it + JSON_HEDLEY_NEVER_INLINE bool parse() + { + const uchar* p = begin; + const uchar* const e = end; + + if (p != e && *p == 0xEF) + { + // a byte order mark, or the lexer reports a bad one + if (e - p < 3 || p[1] != 0xBB || p[2] != 0xBF) + { + return false; + } + p += 3; + } + + // The open arrays and objects: bit 0 of `kinds` is the innermost (1: + // object), so that the kind of the enclosing container is a shift away + // and stays in a register; every 64 levels, the word is pushed to + // `outer` and a new one is begun. + std::uint64_t kinds = 0; + std::size_t depth = 0; + std::vector outer; + + // the current byte, or 0 at the end (no JSON token starts with 0) +#define JSON_CONTIGUOUS_CUR() current(p, e) + // skip whitespace; most tokens have none before them +#define JSON_CONTIGUOUS_WS() \ + do \ + { \ + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() <= ' ')) \ + { \ + p = skip_whitespace(p, e); \ + } \ + } \ + while (false) +#define JSON_CONTIGUOUS_OPEN(is_object) \ + do \ + { \ + if (JSON_HEDLEY_UNLIKELY(depth != 0 && (depth % 64) == 0)) /* NOLINT(readability/braces) */ \ + { \ + outer.push_back(kinds); \ + kinds = 0; \ + } \ + kinds = (kinds << 1u) | static_cast(is_object); \ + ++depth; \ + } \ + while (false) + + JSON_CONTIGUOUS_WS(); + switch (JSON_CONTIGUOUS_CUR()) + { + case '{': + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_object(detail::unknown_size())))) + { + return false; + } + JSON_CONTIGUOUS_OPEN(1u); + goto object_first; + case '[': + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_array(detail::unknown_size())))) + { + return false; + } + JSON_CONTIGUOUS_OPEN(0u); + goto array_first; + default: + if (JSON_HEDLEY_UNLIKELY(!scalar(p))) + { + return false; + } + goto done; + } + + // a value in an array or an object: expanded once for each, so that + // each dispatch has its own branch history (arrays tend to hold values + // of one kind) and the code after a scalar knows where it is +#define JSON_CONTIGUOUS_VALUE \ + switch (JSON_CONTIGUOUS_CUR()) \ + { \ + case '"': \ + if (JSON_HEDLEY_UNLIKELY(!string(p, false))) \ + { \ + return false; \ + } \ + break; \ + case '{': \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_object(detail::unknown_size())))) \ + { \ + return false; \ + } \ + JSON_CONTIGUOUS_OPEN(1u); \ + goto object_first; \ + case '[': \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_array(detail::unknown_size())))) \ + { \ + return false; \ + } \ + JSON_CONTIGUOUS_OPEN(0u); \ + goto array_first; \ + case '-': \ + case '0': \ + case '1': \ + case '2': \ + case '3': \ + case '4': \ + case '5': \ + case '6': \ + case '7': \ + case '8': \ + case '9': \ + if (JSON_HEDLEY_UNLIKELY(!number(p))) \ + { \ + return false; \ + } \ + break; \ + case 't': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "true") || !report(sax->boolean(true)))) \ + { \ + return false; \ + } \ + break; \ + case 'f': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "false") || !report(sax->boolean(false)))) \ + { \ + return false; \ + } \ + break; \ + case 'n': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "null") || !report(sax->null()))) \ + { \ + return false; \ + } \ + break; \ + default: \ + return false; \ + } + + // what may follow a value in an array: a comma and the next value, or the end +#define JSON_CONTIGUOUS_AFTER_ELEMENT \ + JSON_CONTIGUOUS_WS(); \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ',')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + JSON_CONTIGUOUS_WS(); \ + goto array_value; \ + } \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ']')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_array()))) \ + { \ + return false; \ + } \ + goto close; \ + } \ + return false; + + // what may follow a value in an object: a comma and the next member, or the end +#define JSON_CONTIGUOUS_AFTER_MEMBER \ + JSON_CONTIGUOUS_WS(); \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ',')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + JSON_CONTIGUOUS_WS(); \ + goto object_key; \ + } \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == '}')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_object()))) \ + { \ + return false; \ + } \ + goto close; \ + } \ + return false; + +array_first: + JSON_CONTIGUOUS_WS(); + if (JSON_CONTIGUOUS_CUR() == ']') + { + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_array()))) + { + return false; + } + goto close; + } +array_value: + JSON_CONTIGUOUS_VALUE + JSON_CONTIGUOUS_AFTER_ELEMENT + +object_first: + JSON_CONTIGUOUS_WS(); + if (JSON_CONTIGUOUS_CUR() == '}') + { + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_object()))) + { + return false; + } + goto close; + } +object_key: + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() != '"' || !string(p, true))) + { + return false; + } + if (JSON_HEDLEY_LIKELY(e - p >= 2 && p[0] == ':' && p[1] == ' ')) + { + p += 2; // ": " (pretty-printed input; a fast path of yyjson) + } + else + { + JSON_CONTIGUOUS_WS(); + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() != ':')) + { + return false; + } + ++p; + } + JSON_CONTIGUOUS_WS(); + JSON_CONTIGUOUS_VALUE + JSON_CONTIGUOUS_AFTER_MEMBER + +close: + // an array or object was closed: continue in the enclosing one + --depth; + kinds >>= 1u; + if (JSON_HEDLEY_UNLIKELY(depth == 0)) + { + goto done; + } + if (JSON_HEDLEY_UNLIKELY((depth % 64) == 0)) + { + kinds = outer.back(); + outer.pop_back(); + } + if ((kinds & 1u) != 0) + { + JSON_CONTIGUOUS_AFTER_MEMBER + } + JSON_CONTIGUOUS_AFTER_ELEMENT + +done: + JSON_CONTIGUOUS_WS(); +#if JSON_STRICT_NUL_HANDLING + return p == e; +#else + // a NUL byte ends the input, as in the lexer + return p == e || *p == 0; +#endif + +#undef JSON_CONTIGUOUS_AFTER_MEMBER +#undef JSON_CONTIGUOUS_AFTER_ELEMENT +#undef JSON_CONTIGUOUS_VALUE +#undef JSON_CONTIGUOUS_OPEN +#undef JSON_CONTIGUOUS_WS +#undef JSON_CONTIGUOUS_CUR + } + + /// whether the handler stopped the parse (by returning false), as opposed + /// to a syntax error + bool aborted() const noexcept + { + return handler_stopped; + } + + private: + /// the result @a r of an event of the handler: false stops the parse + bool report(const bool r) noexcept + { + handler_stopped = handler_stopped || !r; + return r; + } + + /// the text of the float token [@a first, @a last), for a handler that reads it + const string_t& number_text(const char* first, const char* last) + { + return number_text(first, last, std::integral_constant::value> {}); + } + + const string_t& number_text(const char* /*first*/, const char* /*last*/, std::true_type /*ignored*/) const noexcept + { + return no_text; + } + + const string_t& number_text(const char* first, const char* last, std::false_type /*ignored*/) + { + float_text.clear(); + float_text.append(reinterpret_cast(first), static_cast(last - first)); + return float_text; + } + + /// KeepValues as a runtime condition: testing the template argument + /// directly makes `if` conditions constant, which MSVC reports as C4127 + static bool keep_values() noexcept + { + return KeepValues; + } + + /// the byte at @a p, or 0 at the end @a e (no JSON token starts with 0) + static JSON_HEDLEY_ALWAYS_INLINE uchar current(const uchar* p, const uchar* e) noexcept + { + return p != e ? *p : 0; + } + + /// the first byte at or after p that is not whitespace, or e + static JSON_HEDLEY_NEVER_INLINE const uchar* skip_whitespace(const uchar* p, const uchar* e) noexcept + { + while (p != e) + { + const uchar c = *p; + if (c == ' ' || c == '\t' || c == '\r') + { + ++p; + } + else if (c == '\n') + { + // the indentation of the next line, 8 spaces at a time + ++p; + while (e - p >= 8) + { + const std::uint64_t non_space = read_eight_bytes(p) ^ 0x2020202020202020ull; + if (non_space != 0) + { + p += static_cast(count_trailing_zeros(non_space)) / 8; + break; + } + p += 8; + } + } + else + { + break; + } + } + return p; + } + + /// the literal @a text at p, whose first byte the dispatch has seen + template + JSON_HEDLEY_ALWAYS_INLINE bool literal(const uchar*& p, const char (&text)[N]) const noexcept // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays): a string literal + { + constexpr std::size_t length = N - 1; + if (JSON_HEDLEY_UNLIKELY(static_cast(end - p) < length || std::memcmp(p, text, length) != 0)) + { + return false; + } + p += length; + return true; + } + + /// a JSON text that is a single scalar + bool scalar(const uchar*& p) + { + switch (current(p, end)) + { + case '"': + return string(p, false); + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return number(p); + case 't': + return literal(p, "true") && report(sax->boolean(true)); + case 'f': + return literal(p, "false") && report(sax->boolean(false)); + case 'n': + return literal(p, "null") && report(sax->null()); + default: + return false; + } + } + + /// the string whose opening quote is at p, reported as a key or a value; + /// p is moved past the closing quote + JSON_HEDLEY_ALWAYS_INLINE bool string(const uchar*& p, const bool is_key) + { + const uchar* const s = ++p; + // the text up to the first quote, backslash, control character or + // ill-formed UTF-8 (well-formed UTF-8 is part of the run) + p = s + lexer_string_bulk_run(s, static_cast(end - s)); + if (JSON_HEDLEY_LIKELY(p != end && *p == '"')) + { + if (keep_values()) + { + buffer.clear(); + buffer.append(reinterpret_cast(s), static_cast(p - s)); + } + ++p; + } + else if (JSON_HEDLEY_UNLIKELY(!escaped_string(s, p))) + { + return false; + } + return is_key ? report(sax->key(buffer)) : report(sax->string(buffer)); + } + + /// the rest of a string from p, a backslash, a control character, + /// ill-formed UTF-8 or the end; s is where the string starts. With + /// KeepValues, the string is decoded into buffer. + JSON_HEDLEY_NEVER_INLINE bool escaped_string(const uchar* s, const uchar*& pos) + { + const uchar* p = pos; + if (keep_values()) + { + buffer.clear(); + buffer.append(reinterpret_cast(s), static_cast(p - s)); + } + for (;;) + { + if (JSON_HEDLEY_UNLIKELY(p == end)) + { + return false; + } + if (*p == '"') + { + pos = p + 1; + return true; + } + if (JSON_HEDLEY_UNLIKELY(*p != '\\' || end - p < 2)) + { + return false; // a control character or ill-formed UTF-8 + } + const uchar escape = p[1]; + p += 2; + switch (escape) + { + case '"': + case '\\': + case '/': + add(static_cast(escape)); + break; + case 'b': + add('\b'); + break; + case 'f': + add('\f'); + break; + case 'n': + add('\n'); + break; + case 'r': + add('\r'); + break; + case 't': + add('\t'); + break; + case 'u': + { + if (JSON_HEDLEY_UNLIKELY(end - p < 4)) + { + return false; + } + int codepoint = hex_codepoint(p); + if (JSON_HEDLEY_UNLIKELY(codepoint < 0)) + { + return false; + } + p += 4; + if (JSON_HEDLEY_UNLIKELY((codepoint & 0xF800) == 0xD800)) + { + // a high surrogate must be followed by \u and a low surrogate + if (codepoint >= 0xDC00 || end - p < 6 || p[0] != '\\' || p[1] != 'u') + { + return false; + } + const int low = hex_codepoint(p + 2); + if (low < 0xDC00 || low > 0xDFFF) + { + return false; + } + p += 6; + codepoint = 0x10000 + ((codepoint - 0xD800) << 10) + (low - 0xDC00); + } + add_utf8(codepoint); + break; + } + default: + return false; + } + const uchar* const run = p; + p = run + lexer_string_bulk_run(run, static_cast(end - run)); + if (keep_values() && p != run) + { + buffer.append(reinterpret_cast(run), static_cast(p - run)); + } + } + } + + void add(const char_t c) + { + if (keep_values()) + { + buffer.push_back(c); + } + } + + /// add the UTF-8 encoding of @a codepoint (at most U+10FFFF) to buffer + void add_utf8(const int codepoint) + { + if (!keep_values()) + { + return; + } + const auto cp = static_cast(codepoint); + if (cp < 0x80) + { + buffer.push_back(static_cast(cp)); + } + else if (cp < 0x800) + { + buffer.push_back(static_cast(0xC0u | (cp >> 6u))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + else if (cp < 0x10000) + { + buffer.push_back(static_cast(0xE0u | (cp >> 12u))); + buffer.push_back(static_cast(0x80u | ((cp >> 6u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + else + { + buffer.push_back(static_cast(0xF0u | (cp >> 18u))); + buffer.push_back(static_cast(0x80u | ((cp >> 12u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | ((cp >> 6u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + } + + /*! + @brief the number at p, with the grammar and the conversions of the lexer's + contiguous path (lexer::scan_number_bulk_contiguous()) + + Integers that do not fit their type become floats; floats that overflow + are an error, which the default parser reports. + */ + JSON_HEDLEY_ALWAYS_INLINE bool number(const uchar*& pos) + { + const auto* const data = reinterpret_cast(pos); + const auto avail = static_cast(end - pos); + std::size_t i = 0; + std::size_t dot_index = std::string::npos; + bool is_float = false; + std::uint64_t w = 0; + const bool negative = data[0] == '-'; + if (negative) + { + i = 1; + } + const std::size_t integer_begin = i; + if (i < avail && data[i] == '0') + { + ++i; + } + else if (i < avail && data[i] >= '1' && data[i] <= '9') + { + // accept() needs the value only for a float with a large exponent, + // which computes it below; its handler ignores the values + i = keep_values() ? accumulate_digits(data, i, avail, w) : skip_digits(data, i, avail); + } + else + { + return false; + } + std::size_t digit_count = i - integer_begin; + std::size_t fraction_digits = 0; + if (i < avail && data[i] == '.') + { + is_float = true; + dot_index = i; + ++i; + if (i >= avail || !(data[i] >= '0' && data[i] <= '9')) + { + return false; + } + const std::size_t fraction_begin = i; + i = keep_values() ? accumulate_digits(data, i, avail, w) : skip_digits(data, i, avail); + fraction_digits = i - fraction_begin; + digit_count += fraction_digits; + } + const std::size_t mantissa_end = i; + std::int64_t exponent = 0; + if (i < avail && (data[i] == 'e' || data[i] == 'E')) + { + is_float = true; + ++i; + bool negative_exponent = false; + if (i < avail && (data[i] == '+' || data[i] == '-')) + { + negative_exponent = data[i] == '-'; + ++i; + } + if (i >= avail || !(data[i] >= '0' && data[i] <= '9')) + { + return false; + } + // saturated far beyond every range, see parse_float_exponent() + constexpr std::int64_t saturation = 100000000000000000; // 10^17 + while (i < avail && data[i] >= '0' && data[i] <= '9') + { + if (exponent < saturation) + { + exponent = (exponent * 10) + (data[i] - '0'); + } + ++i; + } + exponent = negative_exponent ? -exponent : exponent; + } + pos += i; + + if (!is_float) + { + if (digit_count <= 18) + { + // up to 18 digits always fit into std::uint64_t and std::int64_t; + // a narrower type takes the value only if it round-trips + if (negative) + { + const std::int64_t x = -static_cast(w); + const auto value = static_cast(x); + if (static_cast(value) == x) + { + return report(sax->number_integer(value)); + } + } + else + { + const auto value = static_cast(w); + if (static_cast(value) == w) + { + return report(sax->number_unsigned(value)); + } + } + } + else if (negative) + { + number_integer_t value{}; + if (parse_integer_signed(data, data + i, value)) + { + return report(sax->number_integer(value)); + } + } + else + { + number_unsigned_t value{}; + if (parse_integer_unsigned(data, data + i, value)) + { + return report(sax->number_unsigned(value)); + } + } + } + + number_float_t value{}; + if (digit_count <= 19) + { + float_significand s; + s.w = w; + s.exponent = exponent - static_cast(fraction_digits); + s.negative = negative; + // accept() only needs to know that the value is finite: w < 10^19, + // so only a token that may reach the largest float is converted + if (!keep_values() && s.exponent + 19 <= std::numeric_limits::max_exponent10) + { + return report(sax->number_float(value, number_text(data, data + i))); + } + if (!keep_values()) + { + // the digits were skipped: their value now + s.w = 0; + const std::size_t integer_end = accumulate_digits(data, integer_begin, avail, s.w); + if (dot_index != std::string::npos) + { + static_cast(accumulate_digits(data, integer_end + 1, avail, s.w)); + } + } + value = decimal_to_float(s); + } + else + { + static_cast(convert_float_fast(data, data + i, dot_index, mantissa_end, value)); + } + if (JSON_HEDLEY_UNLIKELY(!std::isfinite(value))) + { + return false; // the default parser reports the overflow + } + return report(sax->number_float(value, number_text(data, data + i))); + } + + const uchar* const begin; + const uchar* const end; + SAX* const sax; + /// the current string (with KeepValues); the handler may move from it + string_t buffer {}; + /// the text of float tokens, for the library's handlers, which ignore it + const string_t no_text {}; + /// the text of the current float token, for other handlers + string_t float_text {}; + /// whether the handler returned false + bool handler_stopped = false; +}; + +/// whether parse() and accept() can read the input behind @a InputAdapterType +/// with contiguous_parser: one contiguous block of bytes (not a window into a +/// stream), and floats in a format the library converts itself +template +struct can_parse_contiguous +{ + static constexpr bool value = +#if JSON_DIAGNOSTIC_POSITIONS + // the values record the positions the lexer reports + false && +#endif + input_adapter_supports_bulk_scan(is_detected {}) + && !input_adapter_bulk_window(is_detected {}) + && has_native_float_format::value; +}; + +/*! +@brief report the input behind @a adapter, one block of memory, to @a sax + +@return whether the input is valid and was reported completely; if not, + nothing was consumed from @a adapter, and the caller has the default + parser report the error +*/ +template +bool parse_contiguous(InputAdapterType& adapter, SAX& sax, std::true_type /*contiguous*/) +{ + const std::size_t size = adapter.bulk_remaining(); + if (size == 0) + { + return false; // the default parser reports the empty input + } + const auto* const first = reinterpret_cast(adapter.bulk_data()); + contiguous_parser p(first, first + size, &sax); + return p.parse(); +} + +/*! +@brief a SAX handler that only reports a parse error, as the handler of parse() + does: it throws the exception, unless exceptions are not allowed + +After contiguous_parser has rejected an input, the default parser is run again +with this handler to report the error: the error, its message and its position +are those of parse(), without building the values read up to it. +*/ +template +class json_sax_error_reporter : public json_sax_acceptor +{ + public: + explicit json_sax_error_reporter(const bool allow_exceptions_) noexcept + : allow_exceptions(allow_exceptions_) + {} + + /// (a template, as in json_sax_dom_parser: the parser passes the concrete + /// exception type, which is thrown as is) + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const Exception& ex) + { + static_cast(ex); // (unused without exceptions) + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + private: + const bool allow_exceptions; +}; + +template +struct sax_ignores_number_text> : std::true_type {}; + +/*! +@brief report the error in the input behind @a adapter, which contiguous_parser + rejected, as parse() reports it: throw its exception, or, without + exceptions, return true + +@return false if the default parser accepts the input after all (which would + be a disagreement of the two parsers): the caller then parses it +*/ +template +bool report_contiguous_error(const InputAdapterType& adapter, const bool allow_exceptions) +{ + json_sax_error_reporter reporter(allow_exceptions); + // (a copy of the adapter, which the caller may need again) + // (the lexer of parse(), which the fallback in basic_json::parse_impl() + // instantiates anyway: only the grammar loop is instantiated again) + return !parser(InputAdapterType(adapter), nullptr, allow_exceptions, false, false).sax_parse(&reporter, true); +} + +/*! +@brief parse(): parse the input behind @a adapter into @a result, if it is one + block of memory + +@return whether @a result is the result of parse(): the value, or, after an + error and without exceptions, a discarded value (with exceptions, the + error is thrown); false if the input is not one block of memory, in + which case the caller parses it +*/ +template +bool parse_contiguous(InputAdapterType& adapter, BasicJsonType& result, const bool allow_exceptions, std::true_type /*contiguous*/) +{ + { + // the handler of parser::parse(), so that the values are built by the same code + json_sax_dom_parser sax(result, true); + if (parse_contiguous(adapter, sax, std::true_type {})) + { + return true; + } + } + // (what was read up to the error) + result = BasicJsonType(); + if (report_contiguous_error(adapter, allow_exceptions)) + { + result = BasicJsonType(value_t::discarded); + return true; + } + return false; // LCOV_EXCL_LINE (only if the two parsers disagree: a bug) +} + +template +bool parse_contiguous(InputAdapterType& /*adapter*/, BasicJsonType& /*result*/, const bool /*allow_exceptions*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +/*! +@brief accept(): check the input behind @a adapter, if it is one block of memory + +@return whether @a accepted is the result of accept(); false if the input is + not one block of memory, in which case the caller checks it. + contiguous_parser accepts exactly what the default parser accepts. +*/ +template +bool accept_contiguous(InputAdapterType& adapter, bool& accepted, std::true_type /*contiguous*/) +{ + json_sax_acceptor sax; + accepted = parse_contiguous(adapter, sax, std::true_type {}); + return true; +} + +template +bool accept_contiguous(InputAdapterType& /*adapter*/, bool& /*accepted*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +/*! +@brief a SAX handler that ignores the values and passes a parse error on to the + handler of the user + +After contiguous_parser has delivered the events of the input to the user's +handler and rejected it, the default parser is run again with this handler: +the user's handler gets the error, its message and its position from the +default parser, as before, but no event twice. +*/ +template +class json_sax_error_forwarder : public json_sax_acceptor +{ + public: + explicit json_sax_error_forwarder(SAX* user_) noexcept + : user(user_) + {} + + template + bool parse_error(std::size_t position, const std::string& last_token, const Exception& ex) + { + forwarded = true; + return user->parse_error(position, last_token, ex); + } + + /// whether the default parser reported an error + bool reported() const noexcept + { + return forwarded; + } + + private: + SAX* const user; + bool forwarded = false; +}; + +template +struct sax_ignores_number_text> : std::true_type {}; + +/*! +@brief sax_parse() of JSON in one block of memory with the strict option and + a user's handler @a sax + +contiguous_parser reports to @a sax what it reads, and stops at the token that +the default parser would reject, before reporting it: the events up to an error +are the same. The error itself is then reported by the default parser (see +json_sax_error_forwarder). + +@return whether @a result is the result of sax_parse(); false if the input is + not one block of memory, in which case the caller parses it +*/ +template +bool sax_parse_contiguous(InputAdapterType& adapter, SAX* sax, bool& result, std::true_type /*contiguous*/) +{ + const std::size_t size = adapter.bulk_remaining(); + if (size != 0) + { + const auto* const first = reinterpret_cast(adapter.bulk_data()); + contiguous_parser p(first, first + size, sax); + if (p.parse()) + { + result = true; + return true; + } + if (p.aborted()) + { + // the handler returned false, as with the default parser + result = false; + return true; + } + } + json_sax_error_forwarder forwarder(sax); + result = parser(InputAdapterType(adapter), nullptr, true, false, false).sax_parse(&forwarder, true); + // the default parser must reject the input as well (the events after the + // byte contiguous_parser stopped at cannot be delivered any more) + JSON_ASSERT(forwarder.reported()); + return true; +} + +template +bool sax_parse_contiguous(InputAdapterType& /*adapter*/, SAX* /*sax*/, bool& /*result*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/number_parse.hpp b/include/nlohmann/detail/input/number_parse.hpp index 852e1a6c8..71215d3df 100644 --- a/include/nlohmann/detail/input/number_parse.hpp +++ b/include/nlohmann/detail/input/number_parse.hpp @@ -316,6 +316,30 @@ JSON_HEDLEY_ALWAYS_INLINE std::size_t accumulate_digits(const char* data, std::s return i; } +/// the index of the first byte at or after @a i that is not a digit: the +/// digits of accumulate_digits() without their value +JSON_HEDLEY_ALWAYS_INLINE std::size_t skip_digits(const char* data, std::size_t i, std::size_t avail) noexcept +{ + while (avail - i >= 8) + { + if (!is_eight_digits(read_eight_bytes(data + i))) + { + // a byte of the word is not a digit: no bounds checks before it + while (static_cast(data[i] - '0') <= 9) + { + ++i; + } + return i; + } + i += 8; + } + while (i < avail && data[i] >= '0' && data[i] <= '9') + { + ++i; + } + return i; +} + /// whether [first, last) contains a digit other than '0'; a plain loop, as /// GCC calls std::any_of out of line even for the usual empty range JSON_HEDLEY_ALWAYS_INLINE bool has_nonzero_digit(const char* first, const char* last) noexcept diff --git a/include/nlohmann/detail/input/string_scan.hpp b/include/nlohmann/detail/input/string_scan.hpp index 10e4cc900..8564746ce 100644 --- a/include/nlohmann/detail/input/string_scan.hpp +++ b/include/nlohmann/detail/input/string_scan.hpp @@ -520,7 +520,10 @@ JSON_HEDLEY_NEVER_INLINE inline std::size_t string_bulk_run_from(const unsigned } #endif -// string_bulk_run() for the lexer. With NEON, only the first four words are +// string_bulk_run() for the lexer. The run must be the longest one: the lexer +// would only lose speed with a shorter run, but contiguous_parser rejects a +// string whose run ends at a byte other than a quote or a backslash, so a +// shorter run would reject valid input there. With NEON, only the first four words are // checked inline (most keys and short values end there), and longer runs and // non-ASCII text continue out of line. The lexer's scan function runs once per // token, and the vector code inlined into it needs more registers, which every diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp index 9be8a8c6c..bd06811d9 100644 --- a/include/nlohmann/json.hpp +++ b/include/nlohmann/json.hpp @@ -58,6 +58,7 @@ #include // IWYU pragma: export #include #include +#include #include #include #include @@ -3109,6 +3110,15 @@ public: const bool ignore_trailing_commas) { basic_json result; + // JSON in one block of memory, with the default options, is read by + // the faster contiguous_parser; on an error, the default parser reads + // it again to report it (see contiguous_parser) + using contiguous = std::integral_constant::type>::value>; + if (cb == nullptr && !ignore_comments && !ignore_trailing_commas + && detail::parse_contiguous(adapter, result, allow_exceptions, contiguous {})) + { + return result; + } parser(std::forward(adapter), std::move(cb), allow_exceptions, ignore_comments, ignore_trailing_commas).parse(true, result); return result; } @@ -3119,8 +3129,17 @@ public: const bool ignore_comments, const bool ignore_trailing_commas) { + // JSON in one block of memory, with the default options, is checked by + // the faster contiguous_parser (see parse_impl()) + using adapter_t = typename std::decay::type; + bool accepted = false; + if (!ignore_comments && !ignore_trailing_commas + && detail::accept_contiguous(adapter, accepted, std::integral_constant::value> {})) + { + return accepted; + } // the parser and lexer that discard the values of tokens (see lexer) - return ::nlohmann::detail::parser::type, true>(std::forward(adapter), + return ::nlohmann::detail::parser(std::forward(adapter), nullptr, false, ignore_comments, ignore_trailing_commas).accept(true); } @@ -3135,6 +3154,15 @@ public: { if (format == input_format_t::json) { + // JSON in one block of memory, with the default options, is read by + // the faster contiguous_parser; on an error, the default parser + // reads it again to report it (see parse_impl()) + bool result = false; + if (strict && !ignore_comments && !ignore_trailing_commas + && detail::sax_parse_contiguous(ia, sax, result, std::integral_constant::value> {})) + { + return result; + } return parser(std::move(ia), nullptr, true, ignore_comments, ignore_trailing_commas).sax_parse(sax, strict); } return detail::binary_reader(std::move(ia), format).sax_parse(sax, strict, tag_handler); diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index ea09846e9..953700949 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -11490,6 +11490,30 @@ JSON_HEDLEY_ALWAYS_INLINE std::size_t accumulate_digits(const char* data, std::s return i; } +/// the index of the first byte at or after @a i that is not a digit: the +/// digits of accumulate_digits() without their value +JSON_HEDLEY_ALWAYS_INLINE std::size_t skip_digits(const char* data, std::size_t i, std::size_t avail) noexcept +{ + while (avail - i >= 8) + { + if (!is_eight_digits(read_eight_bytes(data + i))) + { + // a byte of the word is not a digit: no bounds checks before it + while (static_cast(data[i] - '0') <= 9) + { + ++i; + } + return i; + } + i += 8; + } + while (i < avail && data[i] >= '0' && data[i] <= '9') + { + ++i; + } + return i; +} + /// whether [first, last) contains a digit other than '0'; a plain loop, as /// GCC calls std::any_of out of line even for the usual empty range JSON_HEDLEY_ALWAYS_INLINE bool has_nonzero_digit(const char* first, const char* last) noexcept @@ -13208,7 +13232,10 @@ JSON_HEDLEY_NEVER_INLINE inline std::size_t string_bulk_run_from(const unsigned } #endif -// string_bulk_run() for the lexer. With NEON, only the first four words are +// string_bulk_run() for the lexer. The run must be the longest one: the lexer +// would only lose speed with a shorter run, but contiguous_parser rejects a +// string whose run ends at a byte other than a quote or a backslash, so a +// shorter run would reject valid input there. With NEON, only the first four words are // checked inline (most keys and short values end there), and longer runs and // non-ASCII text continue out of line. The lexer's scan function runs once per // token, and the vector code inlined into it needs more registers, which every @@ -23479,12 +23506,37 @@ class binary_reader } // namespace detail NLOHMANN_JSON_NAMESPACE_END +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // isfinite +#include // size_t, ptrdiff_t +#include // uint64_t, int64_t +#include // memcmp +#include // numeric_limits +#include // string +#include // integral_constant, true_type, false_type +#include // move +#include // vector + +// #include + // #include // #include // #include +// #include + // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ @@ -24105,6 +24157,1025 @@ class parser } // namespace detail NLOHMANN_JSON_NAMESPACE_END +// #include + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief a parser for JSON text in one contiguous block, for parse(), accept(), + and sax_parse() + +The default parser and lexer exchange one token at a time, and the lexer keeps +its state (the current character, a pending unget, where the token starts) in +members, which every character pays for. This parser reads the block through a +local pointer instead, and the grammar, the whitespace and the tokens are one +loop, after yyjson's reader: the state stays in registers, and the expected +next token is tested where it is expected instead of being dispatched on. + +It reports what it reads to a SAX handler: the one parse() uses to build the +value, the one accept() uses, or the user's handler of sax_parse(). On a byte +the default parser would reject, it stops before reporting the token, and +returns false: the events up to there are those the default parser reports. +The caller then runs the default parser on the same input to report the error +with its exact message and position (report_contiguous_error(), +json_sax_error_forwarder), and parse() builds no value from what was read. + +What is accepted, and the values reported, are those of the default parser +with default options: the same number grammar and conversions, the same UTF-8 +and escape rules, a UTF-8 byte order mark at the start, and, without +JSON_STRICT_NUL_HANDLING, a NUL byte as the end of the input. + +@tparam KeepValues whether the handler needs the values of strings and + numbers (false for accept(), whose handler ignores them) +*/ +template +class contiguous_parser +{ + using string_t = typename BasicJsonType::string_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using char_t = typename string_t::value_type; + using uchar = unsigned char; + + public: + contiguous_parser(const uchar* first, const uchar* last, SAX* sax_) noexcept + : begin(first), end(last), sax(sax_) + {} + + contiguous_parser(const contiguous_parser&) = delete; + contiguous_parser(contiguous_parser&&) = delete; + contiguous_parser& operator=(const contiguous_parser&) = delete; + contiguous_parser& operator=(contiguous_parser&&) = delete; + ~contiguous_parser() = default; + + /// whether the whole block is one valid JSON text; the handler has seen all of it + JSON_HEDLEY_NEVER_INLINE bool parse() + { + const uchar* p = begin; + const uchar* const e = end; + + if (p != e && *p == 0xEF) + { + // a byte order mark, or the lexer reports a bad one + if (e - p < 3 || p[1] != 0xBB || p[2] != 0xBF) + { + return false; + } + p += 3; + } + + // The open arrays and objects: bit 0 of `kinds` is the innermost (1: + // object), so that the kind of the enclosing container is a shift away + // and stays in a register; every 64 levels, the word is pushed to + // `outer` and a new one is begun. + std::uint64_t kinds = 0; + std::size_t depth = 0; + std::vector outer; + + // the current byte, or 0 at the end (no JSON token starts with 0) +#define JSON_CONTIGUOUS_CUR() current(p, e) + // skip whitespace; most tokens have none before them +#define JSON_CONTIGUOUS_WS() \ + do \ + { \ + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() <= ' ')) \ + { \ + p = skip_whitespace(p, e); \ + } \ + } \ + while (false) +#define JSON_CONTIGUOUS_OPEN(is_object) \ + do \ + { \ + if (JSON_HEDLEY_UNLIKELY(depth != 0 && (depth % 64) == 0)) /* NOLINT(readability/braces) */ \ + { \ + outer.push_back(kinds); \ + kinds = 0; \ + } \ + kinds = (kinds << 1u) | static_cast(is_object); \ + ++depth; \ + } \ + while (false) + + JSON_CONTIGUOUS_WS(); + switch (JSON_CONTIGUOUS_CUR()) + { + case '{': + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_object(detail::unknown_size())))) + { + return false; + } + JSON_CONTIGUOUS_OPEN(1u); + goto object_first; + case '[': + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_array(detail::unknown_size())))) + { + return false; + } + JSON_CONTIGUOUS_OPEN(0u); + goto array_first; + default: + if (JSON_HEDLEY_UNLIKELY(!scalar(p))) + { + return false; + } + goto done; + } + + // a value in an array or an object: expanded once for each, so that + // each dispatch has its own branch history (arrays tend to hold values + // of one kind) and the code after a scalar knows where it is +#define JSON_CONTIGUOUS_VALUE \ + switch (JSON_CONTIGUOUS_CUR()) \ + { \ + case '"': \ + if (JSON_HEDLEY_UNLIKELY(!string(p, false))) \ + { \ + return false; \ + } \ + break; \ + case '{': \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_object(detail::unknown_size())))) \ + { \ + return false; \ + } \ + JSON_CONTIGUOUS_OPEN(1u); \ + goto object_first; \ + case '[': \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->start_array(detail::unknown_size())))) \ + { \ + return false; \ + } \ + JSON_CONTIGUOUS_OPEN(0u); \ + goto array_first; \ + case '-': \ + case '0': \ + case '1': \ + case '2': \ + case '3': \ + case '4': \ + case '5': \ + case '6': \ + case '7': \ + case '8': \ + case '9': \ + if (JSON_HEDLEY_UNLIKELY(!number(p))) \ + { \ + return false; \ + } \ + break; \ + case 't': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "true") || !report(sax->boolean(true)))) \ + { \ + return false; \ + } \ + break; \ + case 'f': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "false") || !report(sax->boolean(false)))) \ + { \ + return false; \ + } \ + break; \ + case 'n': \ + if (JSON_HEDLEY_UNLIKELY(!literal(p, "null") || !report(sax->null()))) \ + { \ + return false; \ + } \ + break; \ + default: \ + return false; \ + } + + // what may follow a value in an array: a comma and the next value, or the end +#define JSON_CONTIGUOUS_AFTER_ELEMENT \ + JSON_CONTIGUOUS_WS(); \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ',')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + JSON_CONTIGUOUS_WS(); \ + goto array_value; \ + } \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ']')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_array()))) \ + { \ + return false; \ + } \ + goto close; \ + } \ + return false; + + // what may follow a value in an object: a comma and the next member, or the end +#define JSON_CONTIGUOUS_AFTER_MEMBER \ + JSON_CONTIGUOUS_WS(); \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == ',')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + JSON_CONTIGUOUS_WS(); \ + goto object_key; \ + } \ + if (JSON_HEDLEY_LIKELY(JSON_CONTIGUOUS_CUR() == '}')) /* NOLINT(readability/braces) */ \ + { \ + ++p; \ + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_object()))) \ + { \ + return false; \ + } \ + goto close; \ + } \ + return false; + +array_first: + JSON_CONTIGUOUS_WS(); + if (JSON_CONTIGUOUS_CUR() == ']') + { + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_array()))) + { + return false; + } + goto close; + } +array_value: + JSON_CONTIGUOUS_VALUE + JSON_CONTIGUOUS_AFTER_ELEMENT + +object_first: + JSON_CONTIGUOUS_WS(); + if (JSON_CONTIGUOUS_CUR() == '}') + { + ++p; + if (JSON_HEDLEY_UNLIKELY(!report(sax->end_object()))) + { + return false; + } + goto close; + } +object_key: + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() != '"' || !string(p, true))) + { + return false; + } + if (JSON_HEDLEY_LIKELY(e - p >= 2 && p[0] == ':' && p[1] == ' ')) + { + p += 2; // ": " (pretty-printed input; a fast path of yyjson) + } + else + { + JSON_CONTIGUOUS_WS(); + if (JSON_HEDLEY_UNLIKELY(JSON_CONTIGUOUS_CUR() != ':')) + { + return false; + } + ++p; + } + JSON_CONTIGUOUS_WS(); + JSON_CONTIGUOUS_VALUE + JSON_CONTIGUOUS_AFTER_MEMBER + +close: + // an array or object was closed: continue in the enclosing one + --depth; + kinds >>= 1u; + if (JSON_HEDLEY_UNLIKELY(depth == 0)) + { + goto done; + } + if (JSON_HEDLEY_UNLIKELY((depth % 64) == 0)) + { + kinds = outer.back(); + outer.pop_back(); + } + if ((kinds & 1u) != 0) + { + JSON_CONTIGUOUS_AFTER_MEMBER + } + JSON_CONTIGUOUS_AFTER_ELEMENT + +done: + JSON_CONTIGUOUS_WS(); +#if JSON_STRICT_NUL_HANDLING + return p == e; +#else + // a NUL byte ends the input, as in the lexer + return p == e || *p == 0; +#endif + +#undef JSON_CONTIGUOUS_AFTER_MEMBER +#undef JSON_CONTIGUOUS_AFTER_ELEMENT +#undef JSON_CONTIGUOUS_VALUE +#undef JSON_CONTIGUOUS_OPEN +#undef JSON_CONTIGUOUS_WS +#undef JSON_CONTIGUOUS_CUR + } + + /// whether the handler stopped the parse (by returning false), as opposed + /// to a syntax error + bool aborted() const noexcept + { + return handler_stopped; + } + + private: + /// the result @a r of an event of the handler: false stops the parse + bool report(const bool r) noexcept + { + handler_stopped = handler_stopped || !r; + return r; + } + + /// the text of the float token [@a first, @a last), for a handler that reads it + const string_t& number_text(const char* first, const char* last) + { + return number_text(first, last, std::integral_constant::value> {}); + } + + const string_t& number_text(const char* /*first*/, const char* /*last*/, std::true_type /*ignored*/) const noexcept + { + return no_text; + } + + const string_t& number_text(const char* first, const char* last, std::false_type /*ignored*/) + { + float_text.clear(); + float_text.append(reinterpret_cast(first), static_cast(last - first)); + return float_text; + } + + /// KeepValues as a runtime condition: testing the template argument + /// directly makes `if` conditions constant, which MSVC reports as C4127 + static bool keep_values() noexcept + { + return KeepValues; + } + + /// the byte at @a p, or 0 at the end @a e (no JSON token starts with 0) + static JSON_HEDLEY_ALWAYS_INLINE uchar current(const uchar* p, const uchar* e) noexcept + { + return p != e ? *p : 0; + } + + /// the first byte at or after p that is not whitespace, or e + static JSON_HEDLEY_NEVER_INLINE const uchar* skip_whitespace(const uchar* p, const uchar* e) noexcept + { + while (p != e) + { + const uchar c = *p; + if (c == ' ' || c == '\t' || c == '\r') + { + ++p; + } + else if (c == '\n') + { + // the indentation of the next line, 8 spaces at a time + ++p; + while (e - p >= 8) + { + const std::uint64_t non_space = read_eight_bytes(p) ^ 0x2020202020202020ull; + if (non_space != 0) + { + p += static_cast(count_trailing_zeros(non_space)) / 8; + break; + } + p += 8; + } + } + else + { + break; + } + } + return p; + } + + /// the literal @a text at p, whose first byte the dispatch has seen + template + JSON_HEDLEY_ALWAYS_INLINE bool literal(const uchar*& p, const char (&text)[N]) const noexcept // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays): a string literal + { + constexpr std::size_t length = N - 1; + if (JSON_HEDLEY_UNLIKELY(static_cast(end - p) < length || std::memcmp(p, text, length) != 0)) + { + return false; + } + p += length; + return true; + } + + /// a JSON text that is a single scalar + bool scalar(const uchar*& p) + { + switch (current(p, end)) + { + case '"': + return string(p, false); + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return number(p); + case 't': + return literal(p, "true") && report(sax->boolean(true)); + case 'f': + return literal(p, "false") && report(sax->boolean(false)); + case 'n': + return literal(p, "null") && report(sax->null()); + default: + return false; + } + } + + /// the string whose opening quote is at p, reported as a key or a value; + /// p is moved past the closing quote + JSON_HEDLEY_ALWAYS_INLINE bool string(const uchar*& p, const bool is_key) + { + const uchar* const s = ++p; + // the text up to the first quote, backslash, control character or + // ill-formed UTF-8 (well-formed UTF-8 is part of the run) + p = s + lexer_string_bulk_run(s, static_cast(end - s)); + if (JSON_HEDLEY_LIKELY(p != end && *p == '"')) + { + if (keep_values()) + { + buffer.clear(); + buffer.append(reinterpret_cast(s), static_cast(p - s)); + } + ++p; + } + else if (JSON_HEDLEY_UNLIKELY(!escaped_string(s, p))) + { + return false; + } + return is_key ? report(sax->key(buffer)) : report(sax->string(buffer)); + } + + /// the rest of a string from p, a backslash, a control character, + /// ill-formed UTF-8 or the end; s is where the string starts. With + /// KeepValues, the string is decoded into buffer. + JSON_HEDLEY_NEVER_INLINE bool escaped_string(const uchar* s, const uchar*& pos) + { + const uchar* p = pos; + if (keep_values()) + { + buffer.clear(); + buffer.append(reinterpret_cast(s), static_cast(p - s)); + } + for (;;) + { + if (JSON_HEDLEY_UNLIKELY(p == end)) + { + return false; + } + if (*p == '"') + { + pos = p + 1; + return true; + } + if (JSON_HEDLEY_UNLIKELY(*p != '\\' || end - p < 2)) + { + return false; // a control character or ill-formed UTF-8 + } + const uchar escape = p[1]; + p += 2; + switch (escape) + { + case '"': + case '\\': + case '/': + add(static_cast(escape)); + break; + case 'b': + add('\b'); + break; + case 'f': + add('\f'); + break; + case 'n': + add('\n'); + break; + case 'r': + add('\r'); + break; + case 't': + add('\t'); + break; + case 'u': + { + if (JSON_HEDLEY_UNLIKELY(end - p < 4)) + { + return false; + } + int codepoint = hex_codepoint(p); + if (JSON_HEDLEY_UNLIKELY(codepoint < 0)) + { + return false; + } + p += 4; + if (JSON_HEDLEY_UNLIKELY((codepoint & 0xF800) == 0xD800)) + { + // a high surrogate must be followed by \u and a low surrogate + if (codepoint >= 0xDC00 || end - p < 6 || p[0] != '\\' || p[1] != 'u') + { + return false; + } + const int low = hex_codepoint(p + 2); + if (low < 0xDC00 || low > 0xDFFF) + { + return false; + } + p += 6; + codepoint = 0x10000 + ((codepoint - 0xD800) << 10) + (low - 0xDC00); + } + add_utf8(codepoint); + break; + } + default: + return false; + } + const uchar* const run = p; + p = run + lexer_string_bulk_run(run, static_cast(end - run)); + if (keep_values() && p != run) + { + buffer.append(reinterpret_cast(run), static_cast(p - run)); + } + } + } + + void add(const char_t c) + { + if (keep_values()) + { + buffer.push_back(c); + } + } + + /// add the UTF-8 encoding of @a codepoint (at most U+10FFFF) to buffer + void add_utf8(const int codepoint) + { + if (!keep_values()) + { + return; + } + const auto cp = static_cast(codepoint); + if (cp < 0x80) + { + buffer.push_back(static_cast(cp)); + } + else if (cp < 0x800) + { + buffer.push_back(static_cast(0xC0u | (cp >> 6u))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + else if (cp < 0x10000) + { + buffer.push_back(static_cast(0xE0u | (cp >> 12u))); + buffer.push_back(static_cast(0x80u | ((cp >> 6u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + else + { + buffer.push_back(static_cast(0xF0u | (cp >> 18u))); + buffer.push_back(static_cast(0x80u | ((cp >> 12u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | ((cp >> 6u) & 0x3Fu))); + buffer.push_back(static_cast(0x80u | (cp & 0x3Fu))); + } + } + + /*! + @brief the number at p, with the grammar and the conversions of the lexer's + contiguous path (lexer::scan_number_bulk_contiguous()) + + Integers that do not fit their type become floats; floats that overflow + are an error, which the default parser reports. + */ + JSON_HEDLEY_ALWAYS_INLINE bool number(const uchar*& pos) + { + const auto* const data = reinterpret_cast(pos); + const auto avail = static_cast(end - pos); + std::size_t i = 0; + std::size_t dot_index = std::string::npos; + bool is_float = false; + std::uint64_t w = 0; + const bool negative = data[0] == '-'; + if (negative) + { + i = 1; + } + const std::size_t integer_begin = i; + if (i < avail && data[i] == '0') + { + ++i; + } + else if (i < avail && data[i] >= '1' && data[i] <= '9') + { + // accept() needs the value only for a float with a large exponent, + // which computes it below; its handler ignores the values + i = keep_values() ? accumulate_digits(data, i, avail, w) : skip_digits(data, i, avail); + } + else + { + return false; + } + std::size_t digit_count = i - integer_begin; + std::size_t fraction_digits = 0; + if (i < avail && data[i] == '.') + { + is_float = true; + dot_index = i; + ++i; + if (i >= avail || !(data[i] >= '0' && data[i] <= '9')) + { + return false; + } + const std::size_t fraction_begin = i; + i = keep_values() ? accumulate_digits(data, i, avail, w) : skip_digits(data, i, avail); + fraction_digits = i - fraction_begin; + digit_count += fraction_digits; + } + const std::size_t mantissa_end = i; + std::int64_t exponent = 0; + if (i < avail && (data[i] == 'e' || data[i] == 'E')) + { + is_float = true; + ++i; + bool negative_exponent = false; + if (i < avail && (data[i] == '+' || data[i] == '-')) + { + negative_exponent = data[i] == '-'; + ++i; + } + if (i >= avail || !(data[i] >= '0' && data[i] <= '9')) + { + return false; + } + // saturated far beyond every range, see parse_float_exponent() + constexpr std::int64_t saturation = 100000000000000000; // 10^17 + while (i < avail && data[i] >= '0' && data[i] <= '9') + { + if (exponent < saturation) + { + exponent = (exponent * 10) + (data[i] - '0'); + } + ++i; + } + exponent = negative_exponent ? -exponent : exponent; + } + pos += i; + + if (!is_float) + { + if (digit_count <= 18) + { + // up to 18 digits always fit into std::uint64_t and std::int64_t; + // a narrower type takes the value only if it round-trips + if (negative) + { + const std::int64_t x = -static_cast(w); + const auto value = static_cast(x); + if (static_cast(value) == x) + { + return report(sax->number_integer(value)); + } + } + else + { + const auto value = static_cast(w); + if (static_cast(value) == w) + { + return report(sax->number_unsigned(value)); + } + } + } + else if (negative) + { + number_integer_t value{}; + if (parse_integer_signed(data, data + i, value)) + { + return report(sax->number_integer(value)); + } + } + else + { + number_unsigned_t value{}; + if (parse_integer_unsigned(data, data + i, value)) + { + return report(sax->number_unsigned(value)); + } + } + } + + number_float_t value{}; + if (digit_count <= 19) + { + float_significand s; + s.w = w; + s.exponent = exponent - static_cast(fraction_digits); + s.negative = negative; + // accept() only needs to know that the value is finite: w < 10^19, + // so only a token that may reach the largest float is converted + if (!keep_values() && s.exponent + 19 <= std::numeric_limits::max_exponent10) + { + return report(sax->number_float(value, number_text(data, data + i))); + } + if (!keep_values()) + { + // the digits were skipped: their value now + s.w = 0; + const std::size_t integer_end = accumulate_digits(data, integer_begin, avail, s.w); + if (dot_index != std::string::npos) + { + static_cast(accumulate_digits(data, integer_end + 1, avail, s.w)); + } + } + value = decimal_to_float(s); + } + else + { + static_cast(convert_float_fast(data, data + i, dot_index, mantissa_end, value)); + } + if (JSON_HEDLEY_UNLIKELY(!std::isfinite(value))) + { + return false; // the default parser reports the overflow + } + return report(sax->number_float(value, number_text(data, data + i))); + } + + const uchar* const begin; + const uchar* const end; + SAX* const sax; + /// the current string (with KeepValues); the handler may move from it + string_t buffer {}; + /// the text of float tokens, for the library's handlers, which ignore it + const string_t no_text {}; + /// the text of the current float token, for other handlers + string_t float_text {}; + /// whether the handler returned false + bool handler_stopped = false; +}; + +/// whether parse() and accept() can read the input behind @a InputAdapterType +/// with contiguous_parser: one contiguous block of bytes (not a window into a +/// stream), and floats in a format the library converts itself +template +struct can_parse_contiguous +{ + static constexpr bool value = +#if JSON_DIAGNOSTIC_POSITIONS + // the values record the positions the lexer reports + false && +#endif + input_adapter_supports_bulk_scan(is_detected {}) + && !input_adapter_bulk_window(is_detected {}) + && has_native_float_format::value; +}; + +/*! +@brief report the input behind @a adapter, one block of memory, to @a sax + +@return whether the input is valid and was reported completely; if not, + nothing was consumed from @a adapter, and the caller has the default + parser report the error +*/ +template +bool parse_contiguous(InputAdapterType& adapter, SAX& sax, std::true_type /*contiguous*/) +{ + const std::size_t size = adapter.bulk_remaining(); + if (size == 0) + { + return false; // the default parser reports the empty input + } + const auto* const first = reinterpret_cast(adapter.bulk_data()); + contiguous_parser p(first, first + size, &sax); + return p.parse(); +} + +/*! +@brief a SAX handler that only reports a parse error, as the handler of parse() + does: it throws the exception, unless exceptions are not allowed + +After contiguous_parser has rejected an input, the default parser is run again +with this handler to report the error: the error, its message and its position +are those of parse(), without building the values read up to it. +*/ +template +class json_sax_error_reporter : public json_sax_acceptor +{ + public: + explicit json_sax_error_reporter(const bool allow_exceptions_) noexcept + : allow_exceptions(allow_exceptions_) + {} + + /// (a template, as in json_sax_dom_parser: the parser passes the concrete + /// exception type, which is thrown as is) + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const Exception& ex) + { + static_cast(ex); // (unused without exceptions) + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + private: + const bool allow_exceptions; +}; + +template +struct sax_ignores_number_text> : std::true_type {}; + +/*! +@brief report the error in the input behind @a adapter, which contiguous_parser + rejected, as parse() reports it: throw its exception, or, without + exceptions, return true + +@return false if the default parser accepts the input after all (which would + be a disagreement of the two parsers): the caller then parses it +*/ +template +bool report_contiguous_error(const InputAdapterType& adapter, const bool allow_exceptions) +{ + json_sax_error_reporter reporter(allow_exceptions); + // (a copy of the adapter, which the caller may need again) + // (the lexer of parse(), which the fallback in basic_json::parse_impl() + // instantiates anyway: only the grammar loop is instantiated again) + return !parser(InputAdapterType(adapter), nullptr, allow_exceptions, false, false).sax_parse(&reporter, true); +} + +/*! +@brief parse(): parse the input behind @a adapter into @a result, if it is one + block of memory + +@return whether @a result is the result of parse(): the value, or, after an + error and without exceptions, a discarded value (with exceptions, the + error is thrown); false if the input is not one block of memory, in + which case the caller parses it +*/ +template +bool parse_contiguous(InputAdapterType& adapter, BasicJsonType& result, const bool allow_exceptions, std::true_type /*contiguous*/) +{ + { + // the handler of parser::parse(), so that the values are built by the same code + json_sax_dom_parser sax(result, true); + if (parse_contiguous(adapter, sax, std::true_type {})) + { + return true; + } + } + // (what was read up to the error) + result = BasicJsonType(); + if (report_contiguous_error(adapter, allow_exceptions)) + { + result = BasicJsonType(value_t::discarded); + return true; + } + return false; // LCOV_EXCL_LINE (only if the two parsers disagree: a bug) +} + +template +bool parse_contiguous(InputAdapterType& /*adapter*/, BasicJsonType& /*result*/, const bool /*allow_exceptions*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +/*! +@brief accept(): check the input behind @a adapter, if it is one block of memory + +@return whether @a accepted is the result of accept(); false if the input is + not one block of memory, in which case the caller checks it. + contiguous_parser accepts exactly what the default parser accepts. +*/ +template +bool accept_contiguous(InputAdapterType& adapter, bool& accepted, std::true_type /*contiguous*/) +{ + json_sax_acceptor sax; + accepted = parse_contiguous(adapter, sax, std::true_type {}); + return true; +} + +template +bool accept_contiguous(InputAdapterType& /*adapter*/, bool& /*accepted*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +/*! +@brief a SAX handler that ignores the values and passes a parse error on to the + handler of the user + +After contiguous_parser has delivered the events of the input to the user's +handler and rejected it, the default parser is run again with this handler: +the user's handler gets the error, its message and its position from the +default parser, as before, but no event twice. +*/ +template +class json_sax_error_forwarder : public json_sax_acceptor +{ + public: + explicit json_sax_error_forwarder(SAX* user_) noexcept + : user(user_) + {} + + template + bool parse_error(std::size_t position, const std::string& last_token, const Exception& ex) + { + forwarded = true; + return user->parse_error(position, last_token, ex); + } + + /// whether the default parser reported an error + bool reported() const noexcept + { + return forwarded; + } + + private: + SAX* const user; + bool forwarded = false; +}; + +template +struct sax_ignores_number_text> : std::true_type {}; + +/*! +@brief sax_parse() of JSON in one block of memory with the strict option and + a user's handler @a sax + +contiguous_parser reports to @a sax what it reads, and stops at the token that +the default parser would reject, before reporting it: the events up to an error +are the same. The error itself is then reported by the default parser (see +json_sax_error_forwarder). + +@return whether @a result is the result of sax_parse(); false if the input is + not one block of memory, in which case the caller parses it +*/ +template +bool sax_parse_contiguous(InputAdapterType& adapter, SAX* sax, bool& result, std::true_type /*contiguous*/) +{ + const std::size_t size = adapter.bulk_remaining(); + if (size != 0) + { + const auto* const first = reinterpret_cast(adapter.bulk_data()); + contiguous_parser p(first, first + size, sax); + if (p.parse()) + { + result = true; + return true; + } + if (p.aborted()) + { + // the handler returned false, as with the default parser + result = false; + return true; + } + } + json_sax_error_forwarder forwarder(sax); + result = parser(InputAdapterType(adapter), nullptr, true, false, false).sax_parse(&forwarder, true); + // the default parser must reject the input as well (the events after the + // byte contiguous_parser stopped at cannot be delivered any more) + JSON_ASSERT(forwarder.reported()); + return true; +} + +template +bool sax_parse_contiguous(InputAdapterType& /*adapter*/, SAX* /*sax*/, bool& /*result*/, std::false_type /*contiguous*/) noexcept +{ + return false; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include + +// #include + // #include // __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ @@ -41182,6 +42253,15 @@ public: const bool ignore_trailing_commas) { basic_json result; + // JSON in one block of memory, with the default options, is read by + // the faster contiguous_parser; on an error, the default parser reads + // it again to report it (see contiguous_parser) + using contiguous = std::integral_constant::type>::value>; + if (cb == nullptr && !ignore_comments && !ignore_trailing_commas + && detail::parse_contiguous(adapter, result, allow_exceptions, contiguous {})) + { + return result; + } parser(std::forward(adapter), std::move(cb), allow_exceptions, ignore_comments, ignore_trailing_commas).parse(true, result); return result; } @@ -41192,8 +42272,17 @@ public: const bool ignore_comments, const bool ignore_trailing_commas) { + // JSON in one block of memory, with the default options, is checked by + // the faster contiguous_parser (see parse_impl()) + using adapter_t = typename std::decay::type; + bool accepted = false; + if (!ignore_comments && !ignore_trailing_commas + && detail::accept_contiguous(adapter, accepted, std::integral_constant::value> {})) + { + return accepted; + } // the parser and lexer that discard the values of tokens (see lexer) - return ::nlohmann::detail::parser::type, true>(std::forward(adapter), + return ::nlohmann::detail::parser(std::forward(adapter), nullptr, false, ignore_comments, ignore_trailing_commas).accept(true); } @@ -41208,6 +42297,15 @@ public: { if (format == input_format_t::json) { + // JSON in one block of memory, with the default options, is read by + // the faster contiguous_parser; on an error, the default parser + // reads it again to report it (see parse_impl()) + bool result = false; + if (strict && !ignore_comments && !ignore_trailing_commas + && detail::sax_parse_contiguous(ia, sax, result, std::integral_constant::value> {})) + { + return result; + } return parser(std::move(ia), nullptr, true, ignore_comments, ignore_trailing_commas).sax_parse(sax, strict); } return detail::binary_reader(std::move(ia), format).sax_parse(sax, strict, tag_handler); diff --git a/tests/src/unit-contiguous_parser.cpp b/tests/src/unit-contiguous_parser.cpp new file mode 100644 index 000000000..4c3ec39b4 --- /dev/null +++ b/tests/src/unit-contiguous_parser.cpp @@ -0,0 +1,564 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ (supporting code) +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann +// SPDX-License-Identifier: MIT + +// parse() and accept() read text in one block of memory with +// detail::contiguous_parser, and everything else (here: std::list iterators) +// with the lexer's byte path. These tests check that the two agree on every +// input: the same value, with the same number types and float bits, or the +// same exception with the same message. + +#include "doctest_compatibility.h" + +#include +using nlohmann::json; +using nlohmann::ordered_json; + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + +/// the value with its number types and float bits; below 100 levels, the +/// library's dump() (whose recursion is bounded) describes the rest +template +std::string describe_value(const Json& j, int depth = 0) +{ + std::string out; + if (depth >= 100) + { + out = j.dump(); + return out; + } + switch (j.type()) + { + case Json::value_t::number_float: + { + const double d = j.template get(); + std::uint64_t bits = 0; + std::memcpy(&bits, &d, sizeof(bits)); + out += "f" + std::to_string(bits); + break; + } + case Json::value_t::number_integer: + out += "i" + j.dump(); + break; + case Json::value_t::number_unsigned: + out += "u" + j.dump(); + break; + case Json::value_t::array: + out += "["; + for (const auto& e : j) + { + out += describe_value(e, depth + 1) + ","; + } + out += "]"; + break; + case Json::value_t::object: + out += "{"; + for (auto it = j.begin(); it != j.end(); ++it) + { + out += Json(it.key()).dump() + ":" + describe_value(it.value(), depth + 1) + ","; + } + out += "}"; + break; + case Json::value_t::null: + case Json::value_t::boolean: + case Json::value_t::string: + case Json::value_t::binary: + case Json::value_t::discarded: + default: + out += j.dump(); + break; + } + return out; +} + +#if !defined(JSON_NOEXCEPTION) +template +std::string outcome(Parse parse) +{ + try + { + return describe_value(parse()); + } + catch (const typename Json::exception& e) + { + return std::string("exception: ") + e.what(); + } +} +#endif + +/// every SAX event with its values, the text of float tokens, and the parse +/// error with its position, token and message; returns false after +/// @a stop_after events (to stop the parse) +class event_log : public nlohmann::json_sax +{ + public: + explicit event_log(std::size_t stop_after_ = static_cast(-1), bool continue_after_error_ = false) + : stop_after(stop_after_), continue_after_error(continue_after_error_) + {} + + bool null() override + { + return add("null"); + } + bool boolean(bool val) override + { + return add(val ? "true" : "false"); + } + bool number_integer(number_integer_t val) override + { + return add("i" + std::to_string(val)); + } + bool number_unsigned(number_unsigned_t val) override + { + return add("u" + std::to_string(val)); + } + bool number_float(number_float_t val, const string_t& s) override + { + std::uint64_t bits = 0; + std::memcpy(&bits, &val, sizeof(bits)); + return add("f" + std::to_string(bits) + " " + s); + } + bool string(string_t& val) override + { + return add("s" + val); + } + bool binary(binary_t& /*val*/) override + { + return add("binary"); + } + bool start_object(std::size_t elements) override + { + return add("{" + std::to_string(elements)); + } + bool key(string_t& val) override + { + return add("k" + val); + } + bool end_object() override + { + return add("}"); + } + bool start_array(std::size_t elements) override + { + return add("[" + std::to_string(elements)); + } + bool end_array() override + { + return add("]"); + } + bool parse_error(std::size_t position, const std::string& last_token, const nlohmann::detail::exception& ex) override + { + events.push_back("error " + std::to_string(position) + " " + last_token + " " + ex.what()); + return continue_after_error; + } + + const std::vector& log() const noexcept + { + return events; + } + + private: + bool add(const std::string& event) + { + events.push_back(event); + return events.size() != stop_after; + } + + std::vector events {}; // NOLINT(readability-redundant-member-init) + std::size_t stop_after; + bool continue_after_error; +}; + +/// sax_parse() of the contiguous path against the byte path, also with a +/// handler that stops the parse +void check_same_events(const std::string& text, const std::list& bytes) +{ + for (const std::size_t stop_after : + { + static_cast(-1), std::size_t{1}, std::size_t{3} + }) + { + CAPTURE(stop_after) + event_log contiguous(stop_after); + event_log byte_path(stop_after); + const bool r1 = json::sax_parse(text, &contiguous); + const bool r2 = json::sax_parse(bytes.begin(), bytes.end(), &byte_path); + CHECK(r1 == r2); + CHECK(contiguous.log() == byte_path.log()); + } + // a handler that asks to go on after an error (the default parser then + // reports what follows, e.g., the missing end of the input) + event_log contiguous(static_cast(-1), true); + event_log byte_path(static_cast(-1), true); + const bool r1 = json::sax_parse(text, &contiguous); + const bool r2 = json::sax_parse(bytes.begin(), bytes.end(), &byte_path); + CHECK(r1 == r2); + CHECK(contiguous.log() == byte_path.log()); +} + +/// the contiguous path (a std::string) against the byte path (std::list iterators) +template +void check_same(const std::string& text) +{ + CAPTURE(text) + const std::list bytes(text.begin(), text.end()); + +#if !defined(JSON_NOEXCEPTION) + // with exceptions: the value, or the same exception for both + const std::string contiguous = outcome([&] + { + return Json::parse(text); + }); + const std::string byte_path = outcome([&] + { + return Json::parse(bytes.begin(), bytes.end()); + }); + CHECK(contiguous == byte_path); +#endif + + // without exceptions: the value, or discarded for both + const Json c = Json::parse(text, nullptr, false); + const Json b = Json::parse(bytes.begin(), bytes.end(), nullptr, false); + CHECK(c.is_discarded() == b.is_discarded()); + + CHECK(Json::accept(text) == Json::accept(bytes.begin(), bytes.end())); + if (std::is_same::value) + { + check_same_events(text, bytes); + } + // a pointer range without a terminating NUL + std::vector exact(text.begin(), text.end()); + if (!exact.empty()) + { + CHECK(Json::accept(exact.data(), exact.data() + exact.size()) == Json::accept(bytes.begin(), bytes.end())); + } +} + +void check_both(const std::string& text) +{ + check_same(text); + check_same(text); +} + +/// a random JSON text, mostly valid, with the corner cases of the parser +class generator +{ + public: + explicit generator(std::uint32_t seed) : rng(seed) {} + + std::string document(int depth) + { + std::string out; + value(out, depth); + return out; + } + + private: + std::uint32_t pick(std::uint32_t n) + { + return static_cast(rng() % n); + } + + void whitespace(std::string& out) + { + static const char* const choices[] = {"", "", "", " ", "\n", "\n ", "\t", "\r\n ", "\n ", " "}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + out += choices[pick(10)]; + } + + void number(std::string& out) + { + static const char* const choices[] = // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + { + "0", "-0", "1", "-1", "42", "123456789012345678", "-123456789012345678", "1234567890123456789", + "-1234567890123456789", "9223372036854775807", "-9223372036854775808", "-9223372036854775809", + "18446744073709551615", "18446744073709551616", "123456789012345678901234567890", "0.0", "-0.0", + "1.5", "-65.613616999999977", "1e10", "1E+10", "1e-10", "2.2250738585072014e-308", "4.9e-324", + "1e-400", "1.7976931348623157e308", "1e308", "1e309", "-1e309", "123.456e-789", "0.1e1", + "12345678901234567890.5", "1.00000000000000011102230246251565404236316680908203125", + "9007199254740993", "0.30000000000000004", "1e22", "1e23", "100000000000000000000000", + "00", "01", "-", "1.", ".5", "1e", "1e+", "--1", "+1", "1.5e3.2", "0x10", "1_000" + }; + out += choices[pick(sizeof(choices) / sizeof(choices[0]))]; + } + + void string(std::string& out) + { + static const char* const pieces[] = // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + { + "a", "key", "a longer piece of plain ASCII text for the vector paths", "\\n", "\\t", "\\\"", + "\\\\", "\\/", "\\b", "\\f", "\\r", "\\u0000", "\\u00e4", "\\u20AC", "\\uD83D\\uDE00", + "\\uD83D", "\\uDE00", "\\uD83Dx", "\\u12", "\\x", "\xC3\xA4", "\xE2\x82\xAC", "\xF0\x9F\x98\x80", + "\xC0\xAF", "\xED\xA0\x80", "\xF4\x90\x80\x80", "\x80", "\xFF", "\x01", "\x1F", "\x7F", "\t" + }; + out += '"'; + const auto n = pick(6); + for (std::uint32_t i = 0; i < n; ++i) + { + // mostly well-formed pieces + out += pieces[pick(5) == 0 ? pick(sizeof(pieces) / sizeof(pieces[0])) : pick(20)]; + } + out += '"'; + } + + void value(std::string& out, int depth) + { + const auto kind = depth > 0 ? pick(9) : 3 + pick(6); + switch (kind) + { + case 0: + case 1: + { + out += '['; + whitespace(out); + const auto n = pick(6); + for (std::uint32_t i = 0; i < n; ++i) + { + if (i != 0) + { + out += ','; + whitespace(out); + } + value(out, depth - 1); + whitespace(out); + } + out += ']'; + break; + } + case 2: + { + out += '{'; + whitespace(out); + const auto n = pick(6); + for (std::uint32_t i = 0; i < n; ++i) + { + if (i != 0) + { + out += ','; + whitespace(out); + } + // a few duplicate keys + if (pick(4) == 0) + { + out += "\"dup\""; + } + else + { + string(out); + } + whitespace(out); + out += pick(2) == 0 ? ":" : ": "; + whitespace(out); + value(out, depth - 1); + whitespace(out); + } + out += '}'; + break; + } + case 3: + case 4: + number(out); + break; + case 5: + case 6: + string(out); + break; + case 7: + out += pick(2) == 0 ? "true" : "false"; + break; + default: + out += "null"; + break; + } + } + + std::mt19937 rng; +}; + +} // namespace + +TEST_CASE("contiguous parser") +{ + SECTION("fixed inputs") + { + const char* const inputs[] = // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + { + "", " ", "\n", "null", "true", "false", "nul", "tru", "fals", "nullx", "[]", "{}", "[", "{", "]", "}", + "[1,]", "[,1]", R"({"a":1,})", R"({"a" 1})", R"({"a":})", "{1:2}", "[1 2]", R"("")", R"("abc)", R"("\")", + "\xEF\xBB\xBF[1]", "\xEF\xBB[1]", "\xEF[1]", "\xEF\xBB\xBF", " [1] ", "[1]x", "[1] [2]", "1 2", + R"({"a":1,"a":2})", R"({"b":1,"a":2,"b":3})", R"(["\u0000"])", "[1e400]", "[-1e400]", + R"({"a": [1, 2, {"b": null}], "c": "d"})", "[true,false,null]", "[[[[[]]]]]", + }; + for (const char* input : inputs) + { + check_both(input); + } + + // NUL bytes: by default the end of the input (between values), else an error + check_both(std::string("[1]\0garbage", 11)); + check_both(std::string("[1,\0]", 5)); + check_both(std::string("\"a\0b\"", 5)); + check_both(std::string("\0", 1)); + check_both(std::string("1\0", 2)); + } + + SECTION("deep nesting") + { + // across the 64-level words of the nesting stack + const std::vector depths = {63, 64, 65, 127, 128, 129, 200, 1000, 10000}; + for (const std::size_t depth : depths) + { + check_both(std::string(depth, '[') + std::string(depth, ']')); + std::string objects; + for (std::size_t i = 0; i < depth; ++i) + { + objects += (i % 2 == 0) ? "{\"k\":" : "["; + } + objects += "1"; + for (std::size_t i = depth; i-- > 0;) + { + objects += (i % 2 == 0) ? "}" : "]"; + } + check_both(objects); + // unbalanced + check_both(std::string(depth, '[') + std::string(depth - 1, ']')); + check_both(std::string(depth, '[') + std::string(depth + 1, ']')); + } + // a value after a container that closes a 64-level word + std::string mixed = std::string(64, '[') + "1" + std::string(63, ']') + ",{\"a\":2}]"; + check_both(mixed); + mixed = "{\"x\":" + std::string(64, '[') + std::string(64, ']') + ",\"y\":[1]}"; + check_both(mixed); + } + + SECTION("generated documents and their mutations") + { + generator gen(20261105u); + std::mt19937 rng(42u); // NOLINT(cert-msc32-c,cert-msc51-cpp,bugprone-random-generator-seed): reproducible + const char alphabet[] = "{}[]:,\"\\ \t\n\r0123456789-+.eEtrufalsn/u\x80\xbf\xc3\xe2\xed\xf0\xff"; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + for (int round = 0; round < 1500; ++round) + { + const std::string text = gen.document(1 + (round % 5)); + check_both(text); + // every truncation of short documents, and a few mutations + if (text.size() < 60) + { + for (std::size_t n = 0; n < text.size(); ++n) + { + check_same(text.substr(0, n)); + } + } + for (int m = 0; m < 3 && !text.empty(); ++m) + { + std::string mutated = text; + const std::size_t pos = rng() % mutated.size(); + switch (rng() % 3) + { + case 0: + mutated[pos] = alphabet[rng() % (sizeof(alphabet) - 1)]; + break; + case 1: + mutated.insert(pos, 1, alphabet[rng() % (sizeof(alphabet) - 1)]); + break; + default: + mutated.erase(pos, 1); + break; + } + check_same(mutated); + } + } + } + + SECTION("narrow number types") + { + // integers that do not fit become floats, floats are converted to float + using narrow_json = nlohmann::basic_json; + const std::vector inputs = + { + "[2147483647, 2147483648, -2147483648, -2147483649, 4294967295, 4294967296, 18446744073709551615]", + "[1.5, 3.4028234663852886e38, 3.4028235677973366e38, 1e39, -1e39, 1e-46, 0.1, 16777217]", + "[-0, 0.0, 123456789012345678901234567890, -9223372036854775809]", "1e39", "4294967296", "-2147483649" + }; + for (const auto& input : inputs) + { + check_same(input); + } + generator gen(17u); + for (int round = 0; round < 200; ++round) + { + check_same(gen.document(1 + (round % 4))); + } + } + + SECTION("number corner cases at the end of the input") + { + // the number ends at the end of the block (no closing bracket after it) + for (const char* number : + {"0", "-0", "1", "12345678", "123456789", "1234567890123456789", "18446744073709551616", + "1.5", "1e5", "1e", "1.", "-", "1.5e-3", "123456789012345678901234567890e-10" + }) + { + check_both(number); + check_both(std::string("[") + number + "]"); + check_both(std::string("{\"n\":") + number + "}"); + } + } + + SECTION("accept() of floats near the largest value") + { + // accept() skips digits without their value and computes it only for + // a float whose exponent may reach the largest value + for (const char* number : + {"17976931348623158e292", "17976931348623159e292", "1797693134862315.8e293", "1797693134862315.9e293", + "0.17976931348623158e309", "0.17976931348623159e309", "-17976931348623159e292", "9999999999999999999e289" + }) + { + check_both(number); + check_both(std::string("[") + number + "]"); + } + CHECK(json::accept("17976931348623158e292")); + CHECK_FALSE(json::accept("17976931348623159e292")); + CHECK(json::accept("[1797693134862315.8e293]")); + CHECK_FALSE(json::accept("[1797693134862315.9e293]")); + CHECK(json::accept("0.17976931348623158e309")); + CHECK_FALSE(json::accept("0.17976931348623159e309")); + CHECK_FALSE(json::accept("-17976931348623159e292")); + + using narrow_json = nlohmann::basic_json; + check_same("34028235e31"); + check_same("34028236e31"); + CHECK(narrow_json::accept("34028235e31")); + CHECK_FALSE(narrow_json::accept("34028236e31")); + } + + SECTION("callbacks, comments and trailing commas take the default parser") + { + // (the results are those of the options; the contiguous parser does not support them) + CHECK(json::parse("[1,]", nullptr, true, false, true) == json({1})); + CHECK(json::parse("[1/*c*/]", nullptr, true, true) == json({1})); + CHECK(json::accept("[1,]", false, true)); + CHECK(json::accept("// c\n[1]", true)); + int calls = 0; + const json j = json::parse("[1,2]", [&calls](int /*depth*/, json::parse_event_t /*event*/, json& /*parsed*/) noexcept + { + ++calls; + return true; + }); + CHECK(j == json({1, 2})); + CHECK(calls == 4); + } +} diff --git a/tools/astyle/requirements.txt b/tools/astyle/requirements.txt index cfa98d67e..ceeb76c8f 100644 --- a/tools/astyle/requirements.txt +++ b/tools/astyle/requirements.txt @@ -1,4 +1,59 @@ # astyle is deliberately pinned: newer versions reformat the code, and this version # defines the formatting that `make amalgamate` produces and check_amalgamation.yml enforces. # Dependabot is told to ignore it in .github/dependabot.yml. -astyle==3.4.13 +# The hashes cover every file of the release, so pip verifies what it installs. +astyle==3.4.13 \ + --hash=sha256:0456c5bb1bed18b30f7d9e9c7d6499684a62cc808949173d52bf6def655f48b9 \ + --hash=sha256:061b320ea1d265ac01babdd82b056c7b55913c726c770cff26191af78884c5ab \ + --hash=sha256:0ad050135504994bee50233db59bedf95f1343977118e27f495eaf2f401ecfe5 \ + --hash=sha256:162cb29abc5ddd5d03ab48b15fd8603baf04c1ba5913e1ef475e09818744216b \ + --hash=sha256:181d7b6da8eef2cc4dc757dc3381f0d1f2932d6ceb2f6ce5bea432de698e9a8f \ + --hash=sha256:191abde742ff5ae788a489722a669f7bc0b18cefc1020b617bc0e84361b71a58 \ + --hash=sha256:1bf59aa3006546d795443d1ff69682f989fe95e4c71850c67f8251eab183fee3 \ + --hash=sha256:31c86eb8aae517b9cf1debd325ea5f6ac653d52787d5c5c9d56197afc9bc97e3 \ + --hash=sha256:35b979a62d1499b2daf241517ddb0aee3ab4b82dc82aa3f8604a2db1e9cc4e66 \ + --hash=sha256:36a9f14f88c6bc3c4240f977a3f3fd3d0eac84373bc10004258712e6b3cb08f2 \ + --hash=sha256:46ad33bf795e68f4b18bf947cc7276e26579ab6df89574617c7797b0ed2cf473 \ + --hash=sha256:4803a16330b67b98c994b87b984af00d7dcaff0d4af69d17ab0fd705141725fe \ + --hash=sha256:481b6e195dfa56380bb19cd134dc698cd7f5732d7d5cd781c13b5c15112b8fc2 \ + --hash=sha256:48f0218622e807360d50d9d419e527d8e4c0f7f49c51c6fac3d4c6f343a0573e \ + --hash=sha256:4a3179783910ea386125d88a16e86cc6cfee41c513d0d8e692bdabd17577ce93 \ + --hash=sha256:508d5debe7874a5dd1b491bbae0c48ebc94aa3736545718208bb33c648962e62 \ + --hash=sha256:55b4335f20b717f6ec57a237d29246e3c7196bd014e509f2aa376aca36ea9967 \ + --hash=sha256:56714bb2e2a0fe3911474b66e563aac508d97a9f48d5e55c8e182b1675db0e05 \ + --hash=sha256:599ab574cd53b7105877d5e1b6ab0c933b771e4b2343b0bc54aa06af64653449 \ + --hash=sha256:5b183422a1edbce971758b2b4a2b180127d9e8c46119183d410c77ec1d42a516 \ + --hash=sha256:5c6de6933f7818b4380b309704c45da9330d906bbe479bb76023261e63545900 \ + --hash=sha256:5f7efd14d9aaee69a4a33e60722a8a09d0b7cb834aed698ce0793cecec4e7452 \ + --hash=sha256:66ecd8a2a778bc78bdb2df4f5f371f100c6f180ae859e7d414f374eb2636b531 \ + --hash=sha256:6fa1c231c82a0ea6ccfa8e19276dec4753d9e084229d606f9522260fe37b955f \ + --hash=sha256:76d53ee9e07f8ad32050363c8402923095020856c44015968b4dd9ea5b7a18a1 \ + --hash=sha256:81f0173912da9cf687cf2ed1361026fd957fcfd5b9673803c50265db63427d7f \ + --hash=sha256:81f4345adbbb463a2d5ce314a1ca689a0aa05a6240c86fc0225e92474e3f44b4 \ + --hash=sha256:840e1d0436a1a3793ebe14c95fefe797f77bd78d6194a7c0bcdde705cb583403 \ + --hash=sha256:8d6a69f9b316b3941cd43f16eb109f738bb171963408b5f135521ef70ad364f1 \ + --hash=sha256:8e2879d770e3fbf53ff62728f4d62a6edcacd1ed3d62b36c012706d778048340 \ + --hash=sha256:900e442ed002e5e05c31628fac817db62f6d28e1cc2426040c69a10d39f92651 \ + --hash=sha256:920c8516f420da68765ced84692e550d0f34932663219c48db9b0c79544002d3 \ + --hash=sha256:9417573994a9d264f873cd6122f9e0ea7044d628d9a8b9e84dbbc85b0e7c2880 \ + --hash=sha256:95eaf11aadd770bccd833c8ffe222ea6055fe5c2c4b3974cb43f3366913b62a4 \ + --hash=sha256:9b7471f4a5f174604cdfdf4f9091ba319edb52471e07672ea71745157d121fe7 \ + --hash=sha256:9e016b099f809c8d4894fa6d36ef925973f52ebc50136306b1b4b9ce65094063 \ + --hash=sha256:9e04dbd51f564316a4879448258d9b9e68ade9b062351ea6fc7356d0f42471a0 \ + --hash=sha256:a002a3a1ac187ba1b441f678aca16b4ecea47a1f3d2462c3ec9c59e71e6083b7 \ + --hash=sha256:a177039c38f6f6a43f46bcd3571756be385c0c47462e6a06eb5950397d0bdcbe \ + --hash=sha256:a8963c261b980a0c12fc1523f86eab3edc67940c114ea544b21d2b44e9196d23 \ + --hash=sha256:a97f8ef2a054ec067e3af65bc5b145c51b6c2a5f2efe997a72a9d958c3ab6d1a \ + --hash=sha256:aa8ba72c1349b7e45d1ce01d69daecfac680713624d27d83ebf2a9d1b4984f65 \ + --hash=sha256:abba627fb930a5398414ba398169f52e3865855501b5ee5430bb53d0974074c6 \ + --hash=sha256:ac8db98b392b609f36cd7d6e7f18a247376723b4397578a6f450a445a9dacb3d \ + --hash=sha256:c9d4b1a0a7fbc35b96273695143c791df9c1a4dcab0815ae6d9db8483314430f \ + --hash=sha256:cf247a3bca29f43398af4e20c7c922b7f5130a22f306f068ad038b94e72854d6 \ + --hash=sha256:d3da892b9ec2932a2cb49941aae79447f6baafe5023ee31680c9cabcc471b451 \ + --hash=sha256:db8c4555b66067aba253c2f32dc4ff6ee92882dd3e95a00ebb3bbf145efe067d \ + --hash=sha256:dde61d5acb6008ebefcecc37625b7f2776df2f368f92d47714e5f50276347c9f \ + --hash=sha256:dede5398c41b3a00ad0a9f77c57c05444640f8b28500b9bb4624ab6f2d0a90b7 \ + --hash=sha256:e3cc45784dbac7ade37967e24cbd6b5b89517f3df8fbed276dffffdcf289f04d \ + --hash=sha256:eb4d38f4a6be78cd28ce44397a1244c08af15c1a00293c40634c2104b44c943c \ + --hash=sha256:f9e6cd9ee60a8c42eab85cb57e0c82b1c947261b71f5091bbb9f61e864c64e07 \ + --hash=sha256:fb1ddc816b483c83de15db98847a5d2dd3ba9df9f4a937ad47aabadeeaeed58c diff --git a/tools/generate_natvis/requirements.txt b/tools/generate_natvis/requirements.txt index 6bbf6aa1d..4a104cc82 100644 --- a/tools/generate_natvis/requirements.txt +++ b/tools/generate_natvis/requirements.txt @@ -1 +1,158 @@ -jinja2==3.1.6 +# Hashes cover every file of each release; jinja2 needs MarkupSafe (a pip install with +# hashes must list all dependencies). +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + +MarkupSafe==3.0.4 \ + --hash=sha256:007e1ffd9bf65bb6ee96df7b258fc632a4868dd5566037986c64781f35a36e98 \ + --hash=sha256:02fa4acbc6a3fc5c693c34d4dd8c1130b7fe99cc915181b0ddd6f72aeb296002 \ + --hash=sha256:03470d1a8268e692ecf79ecd565593e59d44219377a7ead61f1f1b94c1f7ff6b \ + --hash=sha256:04e7902ba80ee4bac1d50a549606527a1dcf0476cd81403db41099d3b60ec653 \ + --hash=sha256:051417f74bcaaefa316276e0ff723f541616ca51043d070da00249d9bddd3e3c \ + --hash=sha256:05295589e619b9bed252a86b532b8e27350abc372d18ba89b59375325e91ec1e \ + --hash=sha256:06de8ef6331f6e822c28d577dc8bf43fe398800477c49498f38fc38b67ff33fc \ + --hash=sha256:0764a13d34cae40db7bbf3a09b7e9b491bf4603e20b263a7a9d6b8e324975d0a \ + --hash=sha256:077293e425f28ec737dbcad442a71752e28f8ae27cde3d68acd1fb212091cd92 \ + --hash=sha256:0930db9bdc62d22944e10b066448bb65dc9abe9112880c7cab8da54db4284d5f \ + --hash=sha256:0cee7cb0f9a1b6892ea482237d9403b3d1b4603aee057d0ff01f0fac2d019a97 \ + --hash=sha256:0d9c47709875fdb321452056622e930c52afbc07a7d780762fbb8b4d91ce6fa4 \ + --hash=sha256:11935df9bf455ed0c04eb87bcd720f02b1fe5e02128a9430f23aed6f93336fc7 \ + --hash=sha256:12a606a492de952afcb43b59a14aaaaad120e708d3663dd0fdf2d738d427a691 \ + --hash=sha256:14bd2d845d62ab678eaf81da89d7b621b51756c72346745c1a594c09d49207a2 \ + --hash=sha256:15ba9e28640feef770374b116a6f019c21f52404aeabe516aa7f800587b98cfc \ + --hash=sha256:18a801868a884f216e784d7d14db2a4077143ce7610440aee2ce8f734e7cfcde \ + --hash=sha256:1c0df495a977d10460a94941799c72d5b5ab03d3858d949b55b5a66c8f371c99 \ + --hash=sha256:1caa2fa5a6184fb233153b35f654e6687bd555476f6170f29d8ee9be1a8b0af9 \ + --hash=sha256:1e1451fab512d1bcc3dc26988ec1edb0b82c2db909132872cd9356070a6b63df \ + --hash=sha256:1f1f9477e174582b0a1b583d60b66e1f2cf5d3fe12cee985e4aedf44766600e5 \ + --hash=sha256:2628d3a8cb648ecebb3c5d6b0a1052d400e4d8b7ac0fb786be8d285b50040d17 \ + --hash=sha256:26e9867520db70d37f7fb421a7f0d8adb40171011fb84ce869afa1a83370dfa8 \ + --hash=sha256:2a6ef68ae94aed8721934072b27a3b654ea2100b97e4ab864cf1489c90926fbc \ + --hash=sha256:2b2b1e18af909b448bb3cf9e3433366f7a8726271fc214e8b10e0f62a78c724b \ + --hash=sha256:2cb3dd71fc6be918ad4264346a8ed69485f9b7ed7bf35495d8e22807cd6b8bea \ + --hash=sha256:2d1b7d9308288661f56672b1b157d75fc536714d3638487bbea17b6318a78248 \ + --hash=sha256:2dad610540cb2e6272855c178f08ae9a1c7ac258a7fb71660553a5f104b42741 \ + --hash=sha256:2e5a7cd7fdd14fcb1ae5d7d8bf23d24fbd1daefd1fbca2580132e1ea75f098b5 \ + --hash=sha256:2e9ad7dd851bf45fab9f75cbff4cb493fee9979e8d8c7c9c3ee119022518edd6 \ + --hash=sha256:340cbb1957ba99929cbf19a75626d36ba1ae21d1730b287d1cf7f824a20c4fc7 \ + --hash=sha256:34bdde374c5932765d7dc685c4a1d191a3207852d67e8e0a9eb6ea85156181f1 \ + --hash=sha256:353bd63081912ab8cfa6a0c7d185934cdf8426f04c618bba6bc4b394f2069b67 \ + --hash=sha256:387d8cd30e69b3f0a72877b9ae717033396404e19095b17fe89753a981fda44f \ + --hash=sha256:3882fb412298575bae3b9c46868251f15cc69307359f87bb1b382e53d6e5a2c9 \ + --hash=sha256:38fc55594dab834470b6733dead2ee9e3f657fb0608c769dcafa0ba5ab52f45c \ + --hash=sha256:396ec4e65cc889f69786b3b89478b471cee5a3bcf468b9d9bb03e1a30fb291fc \ + --hash=sha256:39dbacefc411633db5b4378b066a9aca70a3d7e2922c9e578d825f844026eeba \ + --hash=sha256:3a93d9616ddecfb393727a0041a562cf0b15a244e20f2bd25efc7949be4c4f17 \ + --hash=sha256:3d23795802fc8bd72534836d64489bbf0f67c088959091bdb22e10735a5107bf \ + --hash=sha256:434139499bb20b502ed3baa1f169e618f924a97e7a777fea1a49446d80106cf6 \ + --hash=sha256:436e3ffc6310d3c41878c601db29098102fe5d8a467c49da4a4125254e0980f2 \ + --hash=sha256:489505b03f692c3f376394e49194fa7a7f9e8558d6e293a7056a0032b0c38163 \ + --hash=sha256:4a540e2d3192792fc84eced57bef37851ccb2b41f73291bb17408eea77bcd278 \ + --hash=sha256:4a7cdc2a420ca01058182da4253329764d4bfa055564d1eced90e6ba1e8b1d3d \ + --hash=sha256:4bced6e2a6dba6a28f7dd3c6ce14df1b2dd495923f16ea484cad03decd463b2b \ + --hash=sha256:4cf3468d5ec187ffffcaca8e61929a37448f215dafc1386a12c750a72fe53634 \ + --hash=sha256:4e2c4809c14559aa7ef426f27fb35afbb38104c349a903bf8f3600456764bb38 \ + --hash=sha256:4ed644d75aa94a2baf7ec3a96eaa160ea58c742eb9d27c6506053c5c40fc84ed \ + --hash=sha256:4f6e0852a0283b1b1fd776eeb7b766a5f440b3e2bd31ab51af3b400585f3965c \ + --hash=sha256:5066b244f576f91afc8ee3ba029a89f99d39c79b1853fe9d39bea9f0afbec148 \ + --hash=sha256:5086f9975abb1ab531ee6afca1761e4b59a19b446f3f6522ed776963228cfe5a \ + --hash=sha256:50b5bedc9ed8a94fc8857a42ef4f84a81ea88f8d4f05dc8705fb23ee6d8dcca7 \ + --hash=sha256:52704c5d36eb6dda8866493decd61111fff86244c9b1ad225ca01b9e91e5970f \ + --hash=sha256:55ffd6ce583d97dc71dc92e930324c8c0d25aea7e3ade6ae54ef77cedb096811 \ + --hash=sha256:569d65055d367e3dcdf30c3f41119467b73d9ee9faf332bdf40402644f5ac08e \ + --hash=sha256:57f9947a7e57a081c1e3e0a2dd0d2dcf290a4531450e6f611e30084c222a7295 \ + --hash=sha256:5989cb26b2e1efc6a42216a9f6b5ee495ce5ace2e5b352a9af489976b32d1ee2 \ + --hash=sha256:5c22873ad1f0532ba40fa1727f3c0fc1bbbaab6d373d4cbe3f0dc74b2e2521c7 \ + --hash=sha256:5e8b3d0b18fd623afa12ecb2ce8d8becef69f9b5440c6330c7972200e0bb84b0 \ + --hash=sha256:61631e08084be9e21a8967ec3139c7616ed7c5e9368e05c86d1b39562c8a57b6 \ + --hash=sha256:64511c54db4e4987aef4c41923235927428729e8174c5dba488429be70a998ed \ + --hash=sha256:6669c1bf34080161ce49c589cc512ef24d4c704ac9d2b2d3667f519c60418378 \ + --hash=sha256:672d207103e6b16ca098611b0f9efad6bc00afd47c03d6ef62186495ca677dc0 \ + --hash=sha256:6768d67d1bce64270e0fdc2e69309d68b9b18ae56ddf6c711d168e9d051c2cac \ + --hash=sha256:6a45c3d514f2436064db00d7fc8778d888f0236ebfed649b53d13a59e69ad51b \ + --hash=sha256:6bd9e1788e15bfcf6a9082de42e30387e7b85d211ab21e57a939bb8cfaaf8d96 \ + --hash=sha256:6d2a9efe686f9de00d0d1ea32a4a5a86d558a2277501bd78d964214eab625e59 \ + --hash=sha256:6da83a088f8ef93b2d483a8232a4dbf4d69d3d8496b568a03c56becac43e1808 \ + --hash=sha256:7018d4af1cd272e847aa5917983ab5e83e4f6579f9dbfecd4a79c0ca80b144c2 \ + --hash=sha256:71f88e749ea29f67f21f3b36433c1dc54c7729ed2a6d9e2da2e0d9e0d7b224eb \ + --hash=sha256:737c9c3981998eba27f11786f84fddcbabc74068b72a4a1f454ea02094b57b65 \ + --hash=sha256:73e77980c7207854f00fc4e71fb1626868d5740ab4012623d55c7a99ad122a72 \ + --hash=sha256:799c39bdf5e2f1292fedd3009f7b3c9e760f10b2420cb9638d56920840ff6db8 \ + --hash=sha256:7a83aa6e4805df46fed18e989d3d16f86ef60cb50bbc8d9ce3a6be89165fbf6e \ + --hash=sha256:7d3391b2188d18737cb2fa147028b1096236eaa7e156446c650a489fa2cadc91 \ + --hash=sha256:7e1636da3d8dfc220b6dd10264db5f2b165e4888c4518594898fbe381049af8a \ + --hash=sha256:805c8b84534fa10891890f0e4be39f3a99e94615d93e8836bf9fa1fdca2feeb2 \ + --hash=sha256:811d02d5122171c1941357efd8f9bf4ffe907b7f0a1a4e729a880e4be3f46e3e \ + --hash=sha256:8138eb83940ec7299024d92d4dee45f601b9e6c5ffde9d25f4e35e326203c707 \ + --hash=sha256:83b3944fea42a8400edf92fd1770fb8d0d4f7de651353bd2d8525a92dba69a21 \ + --hash=sha256:849dd2bb0e5e4ab2b71c7191726a4a8d5aa8a610daa584728cbee0b710ddc4ef \ + --hash=sha256:8698d70a8081ee8c090dbb394768b5789a1da8b131b5499f89d071dd3cfaf6be \ + --hash=sha256:8781a792a070cf2bd1b86d3aa943894115faaba6e88122a7bf32d62072742453 \ + --hash=sha256:88d59b473bfb03259722600839af9bbd7fa13a2eb514beefeedb95997882f69a \ + --hash=sha256:8909c2f1c6dd65e054ac4b573a91c8384d1492281e55d82d159d653f7a13adf6 \ + --hash=sha256:8965520ac587c94a4ac48b729be3d8b8de00af39699b17585dfb599babe77977 \ + --hash=sha256:8b5d563170ff8ba3181caa967c99a3c804d1dedb702c7cb93a6a7c32247da978 \ + --hash=sha256:8e124f974786f831d6043728e38296969d3579db8896fe004682f5758e613581 \ + --hash=sha256:8f0fac8b13d14bb06c68195f849371924ae53dd7b1c00fed24650f704383b692 \ + --hash=sha256:9240187afb63d2f9ddc3e032c670356fe941f6e20662ea168a5dc3f1f317e1b3 \ + --hash=sha256:925f929d6b59a8b3f8b8c6ac363cd0af7eecc81efb3071770b3c6717c450a369 \ + --hash=sha256:9348cbb300d224fe3b89793262cb093504d4ae927004468463f745188a193e4a \ + --hash=sha256:9388003072b95f2f1e3fd908604194d653ba21330d811961a78b7da1a77e9e36 \ + --hash=sha256:9438a2648b2195980cb2dd8e53ed7b8df91319e2d0b70ae61a9e1d1bc8d3bec9 \ + --hash=sha256:94e4c421742086aeee4c32a506eec8859d7634aad943f7e6aacf70f813478768 \ + --hash=sha256:94f5407f7bc64fa6463906b896f9904beeeb7dd8dc116ee8e9056c8714ff9916 \ + --hash=sha256:971a3bbb75d97ae4e2e8f7d4834236f86f85f0c85e04ab2e191db1123b04f80b \ + --hash=sha256:9e227f3dbe6bde7491cf0a9965d00b88c6b1a4a95d11480ddf88bb96d397c19f \ + --hash=sha256:9e25feb9e330b63edb0278a0acdf85e50d0cb0fbf49c3084abbe4e24ae195346 \ + --hash=sha256:9f098115c247e11d138ab83a28fa0323c77015007ea2df73ba5fd714dfefd67c \ + --hash=sha256:a18f38cafc329bac5e3c2b96c765b4c96d3d103421ed22ab7988c1e3fce27464 \ + --hash=sha256:a4bbd2d87dd233b9fc5812160c3d0ffbe42edc22a26ce0469f58479ede633fe9 \ + --hash=sha256:a5fcffb37e602b0b3c1638a97746b9b96125caa9bcf6fa41d337a9261de231ee \ + --hash=sha256:a8e9f292fcda89b324f2f5c91d13f1424a153e40fc2756f38ee23b15835ff300 \ + --hash=sha256:a9f54054101545a9a9cccefddf54316aa6e4491611fcbef9e91b3b6bebec04f6 \ + --hash=sha256:aa2c838cc024642cc04c6854232f32b43e5e22833dd11119c1766c7873b8370d \ + --hash=sha256:ac0c7c9f1609b0c4c114feb1d7a3409564c7fb77e360bed9e97e5d25dfeaf868 \ + --hash=sha256:add96447a86d205ab616665d53b2950ee81083757f56e6ea833c8b2917646b46 \ + --hash=sha256:ae9dcb8fbe244cb82f8a6458b455b927a03685e383d9bacf1ea5ce180b96dc97 \ + --hash=sha256:b4a635a0487774f841cb1fb62e907e7195cc95bc761e053184b8acc3ceb20733 \ + --hash=sha256:b4d12837e0203bbace818ff4a7461afdcd78bcd782351cea148139180d7bcffe \ + --hash=sha256:b61687d0828e72bf5cda24a2690188f37170bd31c9359ac97e4e66569f120a16 \ + --hash=sha256:b807e598953730f82e4eae3bd30f6a122cf6b31c398c6b504c0e04c13c170429 \ + --hash=sha256:b8cd1f918b26fd7b1832ece557cc18f2d8747309ff8b3f0ef9d4250c5ad67a39 \ + --hash=sha256:b91cc9d336957239ff200f30097e6fea2dc6d6fb3c81e853eaa09eac904fd894 \ + --hash=sha256:bd3ce56ae2cbae3ba82b683bc425cd7e48d2ed8b10f3e818186b6f5646d9271c \ + --hash=sha256:be6cb0c799abb0e2ba3e618e6d28ddddf7e485f6c2ce938dfa237daf3905072c \ + --hash=sha256:befb4158af32106b9a93db8d6d1d1cbbd418c0d5aca0cabb7b1780abf0c89169 \ + --hash=sha256:bf053da3c97a4bc5ecfbb218cdd2983febd91c617be8367d139882aa11e490aa \ + --hash=sha256:c02e8f18bdedba082cef725942ac823b9b60656db07f7e265cb31618dfd00d77 \ + --hash=sha256:c1bc67752d5f21013cfe430df4062441714eab79f65a6a05e01505957e9c35fe \ + --hash=sha256:c61750fadcd119d0825bcb7d7d675dd264dcc89cc05292aab5be68ebdbb374ad \ + --hash=sha256:c90d5b3d4e944e065a301d741b3c1d784f6bd1f503aa68b4967e32b2ba313d85 \ + --hash=sha256:c9a7f43c0b202b334cc9184af09bb8f21d3a209e038efaf106936fb69e6b026e \ + --hash=sha256:cb96e6e088d6cf71c1ea977510948320234824cf226e32f6f6e044f7a9c82b34 \ + --hash=sha256:cf63c214fe879a65e69a386f915e36104fc84254ab141240f8854602d8e0be2a \ + --hash=sha256:d1aca03ede943eb80ab3d63bb082c84b7aab85ea83bd0fd0c200260945fb49d9 \ + --hash=sha256:d2e56fd3b00222722abfb3f5f0759ddbae4b90811b5ad4343c64030ad1bde70c \ + --hash=sha256:d5f93ebbeb8032d47e349328ec8662d973d9b05a70b3c35df1f91fe419b84749 \ + --hash=sha256:d882a373d8093c2941e01291b7ced96e9cbe4781da9a7751ca7e6c70385e5214 \ + --hash=sha256:d920abdfa61279ba1a2ef9484aab07bf03331f8c08a10120fa332353d06e6932 \ + --hash=sha256:da2af0d7aebfc2074080d72efa6ab8317c62481ef1f896f65d9999c1c01f4494 \ + --hash=sha256:dd8ea6ebee7aedbf7c749fa80521d9ccf1ba473e0d1e14805caafbaad281c889 \ + --hash=sha256:de8b364c423ef0a4bad9069657d617f9a5d2b2062457a89b1fa16ee199c399c1 \ + --hash=sha256:df1ae86ff54725a01fa1a0510b914ca53a161b7050be74f6204e24aded5971d0 \ + --hash=sha256:dff05cb7016dff1e9fd68f4122c127b65dfc59de5306cfb7ad92f956f230bee2 \ + --hash=sha256:e1a622f13970d81f95d0c72f9dc090dce9085fccfa4c9f2174377ee32bd15786 \ + --hash=sha256:e49fb0d1ce92cfa0cb198cc5b1b11cdf9d0638658e2a2db2687e39db7c87fc78 \ + --hash=sha256:e5c802729725bd07e2bc3ab7b76dc7e0bbfc53129d8f1eb1c002c24cf774717e \ + --hash=sha256:e841068dc0be4cb6dfb5c890eb88cbdcff2f4a332393c7ec94e8e618bd32c1a8 \ + --hash=sha256:e916035e3e9930cbdfdd10abf48861340221857f45509565898e012263f7b289 \ + --hash=sha256:eba154571c16e032112afac0dc2dfe9e63c2ceb7aedd07bb7eecf2ce26d4dd4c \ + --hash=sha256:f03460ff076f70ab595bb45a0205ccea1971443575b6920c52e755dec2b3fbfe \ + --hash=sha256:f0ec3b750b59375eab5b0fb2b9254810c00a3375be6d789899f1055a1d556237 \ + --hash=sha256:f291bcf42ae98eb5107edb162c3c998b4a89648fd8e99ed4cbd12705292788cd \ + --hash=sha256:f61efe1d2fe0de16158a5fe1d1cf3c14bdb6aecd54d8938fd26512c525c1f624 \ + --hash=sha256:f68edfc67aabac33708941f26f22a7b8e9f81429bc0cf249fcf7d66b23af8d19 \ + --hash=sha256:fa95848c929b6a75f6848d3c9793e59db365ee436776e57db835cdbfa79ba977 \ + --hash=sha256:fd9f8797427910198f95bced71ddfed61130d7e349213bfb8466c9c99e2c46a8 \ + --hash=sha256:fdb4ca07ab75ffadab4a8b135ad59cdbb3156b99310f3d565370da74a15d6bd3 diff --git a/tools/serve_header/requirements.txt b/tools/serve_header/requirements.txt index 0c6ce0d81..a80bc3798 100644 --- a/tools/serve_header/requirements.txt +++ b/tools/serve_header/requirements.txt @@ -1,2 +1,2 @@ PyYAML==6.0.3 -watchdog==6.0.0 +watchdog==7.0.0