Mercurial > vim
diff src/testdir/test_search.vim @ 29071:b90bca860b5a v8.2.5057
patch 8.2.5057: using gettimeofday() for timeout is very inefficient
Commit: https://github.com/vim/vim/commit/6574577cacd393ab7591fc776ea060eebc939e55
Author: Paul Ollis <paul@cleversheep.org>
Date: Sun Jun 5 16:55:54 2022 +0100
patch 8.2.5057: using gettimeofday() for timeout is very inefficient
Problem: Using gettimeofday() for timeout is very inefficient.
Solution: Set a platform dependent timer. (Paul Ollis, closes https://github.com/vim/vim/issues/10505)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 05 Jun 2022 18:00:08 +0200 |
parents | a2710736125a |
children | d1e263ecf634 |
line wrap: on
line diff
--- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -1550,6 +1550,32 @@ func Test_search_errors() bwipe! endfunc +func Test_search_timeout() + new + let pattern = '\%#=1a*.*X\@<=b*' + let search_timeout = 0.02 + let slow_target_timeout = search_timeout * 15.0 + + for n in range(40, 400, 30) + call setline(1, ['aaa', repeat('abc ', n), 'ccc']) + let start = reltime() + call search(pattern, '', 0) + let elapsed = reltimefloat(reltime(start)) + if elapsed > slow_target_timeout + break + endif + endfor + call assert_true(elapsed > slow_target_timeout) + + let max_time = elapsed / 2.0 + let start = reltime() + call search(pattern, '', 0, float2nr(search_timeout * 1000)) + let elapsed = reltimefloat(reltime(start)) + call assert_true(elapsed < max_time) + + bwipe! +endfunc + func Test_search_display_pattern() new call setline(1, ['foo', 'bar', 'foobar'])