'main': Optimize the unquoted arguments characterwise walker
Fixes #730. % repeat 3 { zsh -f tests/test-zprof.zsh main | tee … | grep -w _zsh_highlight | head -n1 } 19) 1 26787.11 26787.11 100.00% 5.33 5.33 0.02% _zsh_highlight 19) 1 26900.64 26900.64 100.00% 5.45 5.45 0.02% _zsh_highlight 19) 1 26915.76 26915.76 100.00% 5.47 5.47 0.02% _zsh_highlight Merge remote-tracking branch 'danielsh/perf-argument-1-v2' * danielsh/perf-argument-1-v2: 'main': Further optimize argument parsing. 'main': Optimize a hot path. tests: Add a performance testing script, for measuring the performance of the 'main' highlighter on a large file.
This commit is contained in:
@@ -1311,8 +1311,12 @@ _zsh_highlight_main_highlighter_highlight_argument()
|
||||
fi
|
||||
esac
|
||||
|
||||
for (( ; i <= $#arg ; i += 1 )); do
|
||||
# This loop is a hot path. Keep it fast!
|
||||
(( --i ))
|
||||
while (( ++i <= $#arg )); do
|
||||
i=${arg[(ib.i.)[\\\'\"\`\$\<\>\*\?]]}
|
||||
case "$arg[$i]" in
|
||||
"") break;;
|
||||
"\\") (( i += 1 )); continue;;
|
||||
"'")
|
||||
_zsh_highlight_main_highlighter_highlight_single_quote $i
|
||||
|
||||
Reference in New Issue
Block a user