From e0aa1d87e81ddf4efec96fad8365b3ea1aee1c26 Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Fri, 17 Jun 2022 01:22:43 +0100 Subject: [PATCH] test(treesitter): add benchmark #18989 add benchmark from #18109 --- test/benchmark/treesitter_spec.lua | 53 ++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 test/benchmark/treesitter_spec.lua 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)