- lightning-fast implementation of a JSON parser
- added JSON validation
- easy to read, learn and implement
- c17 ready / c89 compatible
- significantly faster compared to json-c
- a little bit faster than simdjson
- supports RFC 8259
- supports SSE2
- 2.8 nanoseconds (per run)
- 3846 bytes in a test data
| Metric | simdjson | c-json-parser(*) | c-json-parser(**) | c-json-parser | json-c |
|---|---|---|---|---|---|
| execution time (100K run) | 00:00:00.393 | 00:00:00.244 | 00:00:00.281 | 00:00:01.182 | 00:00:04.093 |
| execution time (1M runs) | 00:00:03.959 | 00:00:02.446 | 00:00:02.804 | 00:00:11.838 | 00:00:42.702 |
| allocation calls (100K runs) | - | 0 | 0 | 20,000,000 | 52,900,000 |
| allocation calls (1M runs) | - | 0 | 0 | 200,000,000 | 529,000,000 |
| total heap usage (100K runs) | - | 0 | 0 | 806,400,000 | 4,179,600,000 |
| total heap usage (1M runs) | - | 0 | 0 | 8,064,000,000 | 41,796,000,000 |
(*) - 0-alloc version without string escape symbols validation (**) - 0-alloc version with string escape symbols validation
Ninja + Clang
sudo apt install -y git cmake clang clang gcc g++ lld./build-c-json-parser.sh./gprof.sh./test.sh./perf.sh
./perf.sh perf-c-json-parser
./perf.sh perf-c-json-parser-long
./perf.sh perf-c-json-parser-no-string-validation
./perf.sh perf-c-json-parser-no-string-validation-long./bin/install_json_c.sh
./bin/install_simdjson.sh./build-json-c.sh
./build-simdjson.sh 