summaryrefslogtreecommitdiff
path: root/admin/notes/tree-sitter/performance
diff options
context:
space:
mode:
Diffstat (limited to 'admin/notes/tree-sitter/performance')
-rw-r--r--admin/notes/tree-sitter/performance25
1 files changed, 25 insertions, 0 deletions
diff --git a/admin/notes/tree-sitter/performance b/admin/notes/tree-sitter/performance
new file mode 100644
index 00000000000..23f84743ced
--- /dev/null
+++ b/admin/notes/tree-sitter/performance
@@ -0,0 +1,25 @@
+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.