mirror of
https://github.com/nlohmann/json.git
synced 2026-11-04 11:49:22 +00:00
Address the points of a review from the other libraries' side: - simdjson 5.0.8 (On-Demand structs, key selectors) and Glaze 9.1.0 - number-skipping modes: yyjson and RapidJSON raw numbers, Boost.JSON number_precision::none - reused parsers and allocators for yyjson, RapidJSON and Boost.JSON - Boost.JSON parse_into, Glaze generic with double numbers, and the same struct types for nlohmann, Glaze, simdjson and serde - minified copies of twitter.json and citm_catalog.json - a fourth probe (trailing garbage) and Glaze "(strict)" variants - a new random variant order in every round, as a variant's time could depend on the one before it by up to 15 % on the Mac - --files for other test files and --conformance for JSONTestSuite, with conformance-rs.sh for the Rust program summarize.py also reports each library's best reused variant. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
15 lines
725 B
Bash
Executable File
15 lines
725 B
Bash
Executable File
#!/bin/bash
|
|
# the Rust conformance run, one file per process; a file that aborts the process (stack overflow) is rerun one
|
|
# variant per process, and a variant that aborts is printed as crashed
|
|
B=$1; D=$2
|
|
VARS=$($B --conformance $D 1 y_structure_lonely_int.json | sed -n 's/^conformance: [^|]* | \(.*\) | [a-z]*$/\1/p')
|
|
for f in $(ls $D | grep '\.json$'); do
|
|
out=$($B --conformance $D 1 "$f" 2>/dev/null)
|
|
if [ $? = 0 ]; then echo "$out" | grep '^conformance:'; continue; fi
|
|
while IFS= read -r v; do
|
|
o=$(CONF_VARIANT="$v" $B --conformance $D 1 "$f" 2>/dev/null)
|
|
if [ $? = 0 ]; then echo "$o" | grep '^conformance:'; else echo "conformance: $f | $v | crashed"; fi
|
|
done <<< "$VARS"
|
|
done
|
|
echo "done: conformance"
|