mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
26 lines
1020 B
Org Mode
26 lines
1020 B
Org Mode
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.
|