'main': Optimize a hot path.

Before this patch:

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    3       33410.81 11136.94   98.51%  19277.07  6425.69   56.84%  _zsh_highlight_main_highlighter_highlight_list
19)    1       33916.21 33916.21  100.00%      5.27     5.27    0.02%  _zsh_highlight

With this patch:

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    3       27167.49  9055.83   98.17%  18754.77  6251.59   67.77%  _zsh_highlight_main_highlighter_highlight_list
19)    1       27674.40 27674.40  100.00%      5.39     5.39    0.02%  _zsh_highlight

----

And if test-zprof.zsh is changed to not set interactivecomments:

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1) 13360       36029.12     2.70   83.56%  30304.23     2.27   70.28%  _zsh_highlight_main_highlighter_highlight_argument
21)    1       43117.76 43117.76  100.00%      4.52     4.52    0.01%  _zsh_highlight

num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1) 13360       14782.89     1.11   68.12%   9163.42     0.69   42.23%  _zsh_highlight_main_highlighter_highlight_argument
21)    1       21699.93 21699.93  100.00%      4.17     4.17    0.02%  _zsh_highlight
This commit is contained in:
Daniel Shahaf 2020-05-04 20:00:01 +00:00
parent 06ec3a0339
commit 3251ebf3dd

View File

@ -1311,7 +1311,12 @@ _zsh_highlight_main_highlighter_highlight_argument()
fi
esac
# This loop is a hot path. Keep it fast!
for (( ; i <= $#arg ; i += 1 )); do
if [[ $arg[$i] != [\\\'\"\`\$\<\>\*\?] ]]; then
continue
fi
case "$arg[$i]" in
"\\") (( i += 1 )); continue;;
"'")