These libraries are not comparable. The output of the simdjson parser is a read-only structure. In other words, it can't be changed, and the only way to create one is by parsing a JSON string. On the other hand, Boost.JSON allows you to modify the container holding the parsed JSON, or even build a JSON document from scratch through the container interface.
The purpose of this library is to enable algorithms which implement JSON
functionality in their public interfaces to be interoperable, by providing
type that meets the bar for vocabulary type suitability. Parsing directly
into a user defined type offers some advantages but is not the goal of
the library. However, users who wish to parse directly into their own
types may implement a custom handler for this purpose.
Using standard allocators would require that
value be declared as a class
template, which would impose an additional compilation burden. By avoiding
the template, most of the function definitions in the library can be
excluded from the headers and emitted in a separate static or dynamic
the memory resource as a reference with respect to ownership. Boost.JSON
uses a reference counted smart pointer container to simplify the lifetime
management of memory resources. In addition to being reference counted,
can function as an uncounted reference wrapper around a
The string provided by the library uses the
storage_ptr allocator model,
has the same interface on all C++ versions, and has an optimized class
layout to keep the size of JSON values small.
string also implements an improved
interface that replaces extraneous overloads with ones that use