Skip to content

Performance FAQ โ€‹

Is it fast enough for keystroke parsing? โ€‹

On the 80KB benchmark corpus (ReleaseFast): ~10 ms full parse, ~4โ€“16 ms incremental, ~1 ms traversal. Measure your grammar with zig build bench -Doptimize=ReleaseFast.

How do I verify reuse is working? โ€‹

Read parser.reused_node_count after incremental parses โ€” sustained zero on small edits means your edits or states are defeating reuse; check the edit spans.

Does it allocate per node? โ€‹

No. Nodes live in pools; handles are two words. Cursor moves and metadata reads allocate nothing.

Where do I report bottlenecks? โ€‹

Profile first (Benchmarks), then open an issue with the corpus shape and numbers.

Released under the MIT License.