summaryrefslogtreecommitdiffstats
path: root/src/testdir/bench_re_freeze.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-11-05 14:27:36 +0100
committerBram Moolenaar <Bram@vim.org>2014-11-05 14:27:36 +0100
commitfda3729a064d6466cec6ac83dd1bfcc437ea4cc9 (patch)
tree7642145192f29ec2050ac8e9cc890ddc353615af /src/testdir/bench_re_freeze.vim
parent4f7e821f26019c14f4470deb0867c919548d5cd5 (diff)
updated for version 7.4.497v7.4.497
Problem: With some regexp patterns the NFA engine uses many states and becomes very slow. To the user it looks like Vim freezes. Solution: When the number of states reaches a limit fall back to the old engine. (Christian Brabandt)
Diffstat (limited to 'src/testdir/bench_re_freeze.vim')
-rw-r--r--src/testdir/bench_re_freeze.vim13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/testdir/bench_re_freeze.vim b/src/testdir/bench_re_freeze.vim
new file mode 100644
index 0000000000..ee8443825f
--- /dev/null
+++ b/src/testdir/bench_re_freeze.vim
@@ -0,0 +1,13 @@
+"Test for benchmarking the RE engine
+
+so small.vim
+if !has("reltime") | finish | endif
+func! Measure(file, pattern, arg)
+ for re in range(3)
+ let sstart=reltime()
+ let cmd=printf("../vim -u NONE -N --cmd ':set re=%d'".
+ \ " -c 'call search(\"%s\", \"\", \"\", 10000)' -c ':q!' %s", re, escape(a:pattern, '\\'), empty(a:arg) ? '' : a:arg)
+ call system(cmd. ' '. a:file)
+ $put =printf('file: %s, re: %d, time: %s', a:file, re, reltimestr(reltime(sstart)))
+ endfor
+endfunc