On Sun, Nov 17, 2019 at 3:38 PM Vinnie Falco via Boost < boost@lists.boost.org> wrote:
[...] RapidJSON is currently the top-performing library for parsing and serialization using a general purpose container (I don't count SIMDJson, which produces a read-only structure). In comparison to RapidJSON, my library outperforms RapidJSON in most cases and completely blows away nlohmann [6].
Looking at your own benchmarks, that's not obvious to me, at least on the parsing side. [6] https://vinniefalco.github.io/doc/json/json/benchmarks.html Regarding those benchmarks, could you please: 1) provide synthetic graphs? 2) better explain what the benchmark does? Those sizes and durations yield very low throughput numbers, so you're obviously doing the parsing several times in a loop, so please adds details on that page, and calculate the real MB/s throughput as well please. Also peak memory would be of interest. 3) Smallest files parsed is ~ 600KB, while in some (important IMHO) use-cases, it's much smaller files of just a few bytes or low-KBs, but lots of them (thousands, millions). In such cases, the constant-overhead of setting up the parser matters and/or instantiating the root value matters, since might dominate over the parsing time. Would it be possible to test that use case too please? Could you also please explain (or link to) on that page the PROs and CONs of default vs block storage for boot::json::value? There seems to be a speed advantage, so what's the catch since not the default? Thanks for the detailed post and your efforts to propose this to Boost. Might be my first review. --DD