<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">= Benchmarks This section compares the performance of Boost.JSON with two widely used libraries with similar functionality: RapidJSON which is known for its performance, and JSON for Modern C++ which is known for feature-richness. The bench program measures the throughput of parsing and serialization for the a set of JSON representing typical workloads. These implementations are evaluated:</string>
    <string name=":21">Name</string>
    <string name=":21">Description</string>
    <string name="">*boost(pool)*</string>
    <string name="">Parses the input using a &lt;&lt;ref_monotonic_resource&gt;&gt;,</string>
    <string name="">which is optimized for parsing without subsequent modification. The &lt;&lt;ref_stream_parser&gt;&gt; object is reused between trials, allowing temporary memory allocated by the implementation to persist and improve performance.</string>
    <string name="">*boost*</string>
    <string name="">Parses the input using the &lt;&lt;default_memory_resource, default memory</string>
    <string name="">resource&gt;&gt;, which uses the standard C++ allocator, and is designed for general use including mutation of the document after it is parsed. The &lt;&lt;ref_stream_parser&gt;&gt; object is reused between trials, allowing temporary memory allocated by the implementation to persist and improve performance.</string>
    <string name="">*rapidjson(pool)*</string>
    <string name=":39">Parses the input using an instance of</string>
    <string name="">https://rapidjson.org/classrapidjson_1_1_memory_pool_allocator.html[`MemoryPoolAllocator`], which is optimized for parsing without subsequent modification. The https://rapidjson.org/classrapidjson_1_1_generic_document.html[`Document`] object holding temporary memory is not reused between trials, otherwise memory consumption grows without bounds and invalidates the benchmark.</string>
    <string name="">*rapidjson*</string>
    <string name=":47">Parses the input using an instance of</string>
    <string name="">https://rapidjson.org/classrapidjson_1_1_crt_allocator.html[`CrtAllocator`], which uses the standard C++ allocator, and is designed for general use including mutation of the document after it is parsed. The https://rapidjson.org/classrapidjson_1_1_generic_document.html[`Document`] object holding temporary memory is not reused between trials, otherwise memory consumption grows without bounds and invalidates the benchmark.</string>
    <string name="">*nlohmann*</string>
    <string name="">Parses the input using the static member function</string>
    <string name="">https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab330c13ba254ea41fbc1c52c5c610f45.html[`json::parse`], which uses the default `std` allocator, and is designed for general use including mutation of the document after it is parsed. This library does not provide an interface to reuse temporary storage used during parsing or serialization on subsequent operations. |===</string>
    <string name="">Methodology</string>
    <string name="">The input files are all loaded first. Then each configuration is run for a sufficient number of trials to last at least 5 seconds. The elapsed time, number of invocations (of parse or serialize), and bytes transferred are emitted as a sample along with a calculation of throughput expressed in megabytes per second. Several samples (currently five) are generated for each configuration. All but the median two samples are discarded, with the remaining samples averaged to produce a single number which is reported as the benchmark result.</string>
    <string name="">The input files, available in the bench/data directory, are laid out thusly:</string>
    <string name=":78">Name</string>
    <string name="">Size</string>
    <string name=":78">Description</string>
    <string name="">&lt;&lt;parse_apache_builds_json,*apache_builds.json*&gt;&gt;</string>
    <string name="">125KB</string>
    <string name="">Data from the Apache Jenkins installation.</string>
    <string name="">&lt;&lt;parse_canada_json,*canada.json*&gt;&gt;</string>
    <string name="">2.2MB</string>
    <string name="">The largest file, containing a large number of 2-element arrays holding</string>
    <string name="">floating-point coordinate pairs.</string>
    <string name="">&lt;&lt;parse_citm_catalog_json,*citm_catalog.json*&gt;&gt;</string>
    <string name="">1.69MB</string>
    <string name="">A large JSON with a variety of nesting, types, and lengths.</string>
    <string name="">&lt;&lt;parse_github_events_json,*github_events.json*&gt;&gt;</string>
    <string name="">64KB</string>
    <string name="">An export of data from the Github Events API.</string>
    <string name="">&lt;&lt;parse_gsoc_2018_json,*gsoc-2018.json*&gt;&gt;</string>
    <string name="">3.25MB</string>
    <string name="">Google Summer of Code 2018 data.</string>
    <string name="">&lt;&lt;parse_instruments_json,*instruments.json*&gt;&gt;</string>
    <string name="">216KB</string>
    <string name="">An array of large objects.</string>
    <string name="">&lt;&lt;parse_marine_ik_json,*marine_ik.json*&gt;&gt;</string>
    <string name="">2.91MB</string>
    <string name="">A three.js example model serialized to JSON.</string>
    <string name="">&lt;&lt;parse_mesh_json,*mesh.json*&gt;&gt;</string>
    <string name="">707KB</string>
    <string name="">A JSON representing a 3D mesh. Contains many floating-point numbers.</string>
    <string name="">&lt;&lt;parse_mesh_pretty_json,*mesh.pretty.json*&gt;&gt;</string>
    <string name="">1.54MB</string>
    <string name="">mesh.json with whitespace added.</string>
    <string name="">&lt;&lt;parse_numbers_json,*numbers.json*&gt;&gt;</string>
    <string name="">147KB</string>
    <string name="">A array containing only floating-point numbers.</string>
    <string name="">&lt;&lt;parse_random_json,*random.json*&gt;&gt;</string>
    <string name="">499KB</string>
    <string name="">A JSON with lots of Cyrillic characters.</string>
    <string name="">&lt;&lt;parse_twitter_json,*twitter.json*&gt;&gt;</string>
    <string name="">617KB</string>
    <string name=":90">An export of data from Twitter\'s API.</string>
    <string name="">&lt;&lt;parse_twitterescaped_json,*twitterescaped.json*&gt;&gt;</string>
    <string name="">550KB</string>
    <string name="">twitter.json with whitespace removed and non-ASCII characters replaced with</string>
    <string name="">Unicode escapes.</string>
    <string name="">&lt;&lt;parse_update_center_json,*update-center.json*&gt;&gt;</string>
    <string name="">521KB</string>
    <string name=":135">An export of data from Twitter\'s API.</string>
    <string name="">Hardware used for testing: **Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz**, Windows 10, 32GB RAM.</string>
    <string name="">Compilers and optimization flags: gcc 8.1 (-O3), clang 12.0 (-O3), and msvc 19.26 (/O2).</string>
    <string name="">Parsing</string>
    <string name="">Parse apache_builds.json</string>
    <string name="">image::images/parse_apache_builds.png[width=668,align=\"left\"]</string>
    <string name="">Parse canada.json</string>
    <string name="">image::images/parse_canada.png[width=668,align=\"left\"]</string>
    <string name="">Parse citm_catalog.json</string>
    <string name="">image::images/parse_citm_catalog.png[width=668,align=\"left\"]</string>
    <string name="">Parse github_events.json</string>
    <string name="">image::images/parse_github_events.png[width=668,align=\"left\"]</string>
    <string name="">Parse gsoc-2018.json</string>
    <string name="">image::images/parse_gsoc_2018.png[width=668,align=\"left\"]</string>
    <string name="">Parse instruments.json</string>
    <string name="">image::images/parse_instruments.png[width=668,align=\"left\"]</string>
    <string name="">Parse marine_ik.json</string>
    <string name="">image::images/parse_marine_ik.png[width=668,align=\"left\"]</string>
    <string name="">Parse mesh.json</string>
    <string name="">image::images/parse_mesh.png[width=668,align=\"left\"]</string>
    <string name="">Parse mesh.pretty.json</string>
    <string name="">image::images/parse_mesh_pretty.png[width=668,align=\"left\"]</string>
    <string name="">Parse numbers.json</string>
    <string name="">image::images/parse_numbers.png[width=668,align=\"left\"]</string>
    <string name="">Parse random.json</string>
    <string name="">image::images/parse_random.png[width=668,align=\"left\"]</string>
    <string name="">Parse twitter.json</string>
    <string name="">image::images/parse_twitter.png[width=668,align=\"left\"]</string>
    <string name="">Parse twitterescaped.json</string>
    <string name="">image::images/parse_twitterescaped.png[width=668,align=\"left\"]</string>
    <string name="">Parse update-center.json</string>
    <string name="">image::images/parse_update_center.png[width=668,align=\"left\"]</string>
    <string name="">Serialization</string>
    <string name="">Serialize canada.json</string>
    <string name="">image::images/serialize_canada.png[width=668,align=\"left\"]</string>
    <string name="">Serialize citm_catalog.json</string>
    <string name="">image::images/serialize_citm_catalog.png[width=668,align=\"left\"]</string>
    <string name="">Serialize github_events.json</string>
    <string name="">image::images/serialize_github_events.png[width=668,align=\"left\"]</string>
    <string name="">Serialize gsoc-2018.json</string>
    <string name="">image::images/serialize_gsoc_2018.png[width=668,align=\"left\"]</string>
    <string name="">Serialize instruments.json</string>
    <string name="">image::images/serialize_instruments.png[width=668,align=\"left\"]</string>
    <string name="">Serialize marine_ik.json</string>
    <string name="">image::images/serialize_marine_ik.png[width=668,align=\"left\"]</string>
    <string name="">Serialize mesh.json</string>
    <string name="">image::images/serialize_mesh.png[width=668,align=\"left\"]</string>
    <string name="">Serialize mesh.pretty.json</string>
    <string name="">image::images/serialize_mesh_pretty.png[width=668,align=\"left\"]</string>
    <string name="">Serialize numbers.json</string>
    <string name="">image::images/serialize_numbers.png[width=668,align=\"left\"]</string>
    <string name="">Serialize random.json</string>
    <string name="">image::images/serialize_random.png[width=668,align=\"left\"]</string>
    <string name="">Serialize twitter.json</string>
    <string name="">image::images/serialize_twitter.png[width=668,align=\"left\"]</string>
    <string name="">Serialize twitterescaped.json</string>
    <string name="">image::images/serialize_twitterescaped.png[width=668,align=\"left\"]</string>
    <string name="">Serialize update-center.json</string>
    <string name="">image::images/serialize_update_center.png[width=668,align=\"left\"]</string>
</resources>
