<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">= Comparison to Other Libraries</string>
    <string name="">":icon_good: pass:q[[.green]##&amp;#10004##] :icon_bad:  pass:q[[.red]##&amp;#10008##]"</string>
    <string name="">There exist many C++ JSON libraries, but two are particularly noteworthy for the purpose of comparison: https://rapidjson.org/[RapidJSON], https://nlohmann.github.io/json/[JSON for Modern {cpp}] (referred to herein as nlohmann\'s JSON, or nlohmann), and https://github.com/lemire/simdjson[SIMD JSON].</string>
    <string name="">Comparison to nlohmann JSON</string>
    <string name="">Value Type: https://github.com/nlohmann/json/blob/00cb98a3d170161711ab912ae6acefba31f29f75/include/nlohmann/json.hpp#L165[`nlohmann::basic_json`]</string>
    <string name="">This library adopts a \"kitchen sink\" approach. It contains a wealth of features, even those with niche uses. Its weakness is that the many template parameters, while allowing for configurability, inhibit the best possible optimizations. The consequence is that the library performs poorly. The ability to configure every aspect of the value type has the paradoxical effect of making it less suitable as a vocabulary type.</string>
    <string name="">{icon_bad} `basic_json` is a class template. Libraries must agree on the</string>
    <string name="">choices of template parameters to be interoperable.</string>
    <string name="">{icon_bad} Too much customization. We struggle to see a use case for making</string>
    <string name="">`BooleanType` anything other than `bool`.</string>
    <string name="">{icon_bad} Poor separation of concerns. The `basic_json` container</string>
    <string name="">declaration needlessly conflates parsing and serialization APIs.</string>
    <string name="">{icon_bad} Limited allocator support. Only stateless allocators are allowed,</string>
    <string name="">which rules out the most important type of allocator, a local arena-based implementation.</string>
    <string name=":70">{icon_bad} No incremental parsing, no incremental serialization.</string>
    <string name="">{icon_bad} Slow parsing and serialization performance.</string>
    <string name="">{icon_good} Full-featured, including JSON Pointer, CBOR, and others.</string>
    <string name="">Comparison to RapidJSON</string>
    <string name="">Value Type: https://github.com/Tencent/rapidjson/blob/bb5f966b9939d6cdfbac3462a0410e185099b3af/include/rapidjson/document.h#L608[`rapidjson::GenericValue`]</string>
    <string name="">{icon_bad} The value type is not regular. Assignment is destructive,</string>
    <string name="">performing `a = b` is equivalent to `a = std::move(b)`. No copy construction or copy assignment allowed.</string>
    <string name="">{icon_bad} Object types have no hash table or index to reduce the cost of</string>
    <string name="">lookups.</string>
    <string name="">{icon_bad} Allocators have reference semantics. Problems with lifetime are</string>
    <string name="">easily encountered.</string>
    <string name="">{icon_bad} The interface of the array and object types are considerably</string>
    <string name="">different from their standard library equivalents, and not idiomatic.</string>
    <string name=":106">{icon_bad} No incremental parsing, no incremental serialization.</string>
    <string name="">{icon_good} Parsing and serialization performance is better than most other</string>
    <string name="">libraries.</string>
    <string name="">Comparison to SIMD JSON</string>
    <string name="">This is quite an interesting data structure, which is optimized to work well with the SIMD parser. It makes very good design choices for the intended use-case. However it is not well suited as a vocabulary type due to the necessary limitations.</string>
    <string name="">{icon_bad} Sequential access only, via `ParsedJson::BasicIterator`</string>
    <string name="">{icon_bad} Read-only, can only be populated by the provided SIMD JSON parser.</string>
    <string name="">{icon_good} The fastest available JSON parser.</string>
</resources>
