TREE-SITTER PERFORMANCE NOTES -*- org -*-

* Facts

Incremental parsing of a few characters worth of edit usually takes
less than 0.1ms.  If it takes longer than that, something is wrong.
There’s one time where I found tree-sitter-c takes ~30ms to
incremental parse.  Updating to the latest version of tree-sitter-c
solves it, so I didn’t investigate further.

The ranges set for a parser doesn’t grow when you insert text into a
range, so you have to update the ranges every time before
parsing.  Fortunately, changing ranges doesn’t invalidate incremental
parsing, so there isn’t any performance lost in update ranges
frequently.

* Experiments

Using regexp by default in treesit-simple-indent-rules seems wasteful,
so I tried replacing all string-match-p to equal in
treesit-simple-indent-presets, and indent xdisp.c for a comparison.
Turns out using regexp by default is faster: regexp-based indent took
45s and equal-based indent took 75s.

I could be missing something, further experiments are welcome.
