Performance charts and test results of Picojson
This project is maintained by kaidokert
Generated deeply nested JSON parsing stack behavior test.
Test code can be found in avr_demo, the numbers are as of version 0.2.0 from test run here.
serde
: The default serde-json-core
implementation.slice-tiny
: picojson
SliceParser with its default 32-level nesting limit.slice-small
: picojson
SliceParser configured for a 512-level nesting limit.slice-huge
: picojson
SliceParser configured for a 2048-level nesting limit.stream-tiny
: picojson
StreamParser with its default 32-level nesting limit.stream-small
: picojson
StreamParser configured for a 512-level nesting limit.stream-huge
: picojson
StreamParser configured for a 2048-level nesting limit.Nesting Depth | serde | slice-tiny | slice-small | slice-huge | stream-tiny | stream-small | stream-huge |
---|---|---|---|---|---|---|---|
7 levels | 208 bytes | 201 bytes | 305 bytes | 497 bytes | 160 bytes | 263 bytes | 455 bytes |
9 levels | 224 bytes | 201 bytes | 305 bytes | 497 bytes | 160 bytes | 263 bytes | 455 bytes |
30 levels | 392 bytes | 201 bytes | 305 bytes | 497 bytes | 160 bytes | 263 bytes | 455 bytes |
33 levels | 416 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
62 levels | 648 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
65 levels | 672 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
126 levels | 1160 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
129 levels | 1184 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
254 levels | 2184 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
257 levels | 2208 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
510 levels | 4232 bytes | Clean Fail | 305 bytes | 497 bytes | Clean Fail | 263 bytes | 455 bytes |
513 levels | 4256 bytes | Clean Fail | Clean Fail | 497 bytes | Clean Fail | Clean Fail | 455 bytes |
1022 levels | Stack Overflow (Binary Output) | Clean Fail | Clean Fail | 497 bytes | Clean Fail | Clean Fail | 455 bytes |
1025 levels | Stack Overflow (Binary Output) | Clean Fail | Clean Fail | 497 bytes | Clean Fail | Clean Fail | 455 bytes |
Configuration | Binary Size |
---|---|
serde | 7.4 KB |
picojson-slice | 8.1 KB |
picojson-stream | 9.0 KB |
picojson’s code size is currently slightly larger.
Stack usage follows the expected patterns: serde recurses and with more nested documents consumes more stack. picojson is designed to use constant allocation for its configured max doc depth.