aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2022-06-17 01:22:43 +0100
committerGitHub <noreply@github.com>2022-06-16 17:22:43 -0700
commite0aa1d87e81ddf4efec96fad8365b3ea1aee1c26 (patch)
treea05403d2d19f9a164ffd4d242a03e089fb74d692
parent1fe94cb008e062ba42e09c284e32cf10c912689e (diff)
downloadrneovim-e0aa1d87e81ddf4efec96fad8365b3ea1aee1c26.tar.gz
rneovim-e0aa1d87e81ddf4efec96fad8365b3ea1aee1c26.tar.bz2
rneovim-e0aa1d87e81ddf4efec96fad8365b3ea1aee1c26.zip
test(treesitter): add benchmark #18989
add benchmark from #18109
-rw-r--r--test/benchmark/treesitter_spec.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/benchmark/treesitter_spec.lua b/test/benchmark/treesitter_spec.lua
new file mode 100644
index 0000000000..5ce128c54a
--- /dev/null
+++ b/test/benchmark/treesitter_spec.lua
@@ -0,0 +1,53 @@
+local helpers = require('test.functional.helpers')(after_each)
+
+local clear = helpers.clear
+local exec_lua = helpers.exec_lua
+
+describe('treesitter perf', function()
+
+ setup(function()
+ clear()
+ end)
+
+ it('can handle large folds', function()
+ helpers.command'edit ./src/nvim/eval.c'
+ exec_lua[[
+ local parser = vim.treesitter.get_parser(0, "c", {})
+ vim.treesitter.highlighter.new(parser)
+
+ local function keys(k)
+ vim.api.nvim_feedkeys(k, 't', true)
+ end
+
+ vim.opt.foldmethod = "manual"
+ vim.opt.lazyredraw = false
+
+ vim.cmd '1000,7000fold'
+ vim.cmd '999'
+
+ local function mk_keys(n)
+ local acc = ""
+ for _ = 1, n do
+ acc = acc .. "j"
+ end
+ for _ = 1, n do
+ acc = acc .. "k"
+ end
+
+ return "qq" .. acc .. "q"
+ end
+
+ local start = vim.loop.hrtime()
+ keys(mk_keys(10))
+
+ for _ = 1, 100 do
+ keys "@q"
+ vim.cmd'redraw!'
+ end
+
+ return vim.loop.hrtime() - start
+ ]]
+
+ end)
+
+end)