diff options
author | Lewis Russell <lewis6991@gmail.com> | 2022-06-17 01:22:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-16 17:22:43 -0700 |
commit | e0aa1d87e81ddf4efec96fad8365b3ea1aee1c26 (patch) | |
tree | a05403d2d19f9a164ffd4d242a03e089fb74d692 | |
parent | 1fe94cb008e062ba42e09c284e32cf10c912689e (diff) | |
download | rneovim-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.lua | 53 |
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) |