Optimization: -1 is extra computation of string length internally
./parse.zsh "zplugin.zsh" > out_norm.txt 106,17s user 7,84s system 98% cpu 1:55,85 total ./parse.zsh "zplugin.zsh" > out_opt.txt 51,91s user 7,44s system 99% cpu 59,912 total % wc -l zplugin.zsh 3188 zplugin.zsh
This commit is contained in:
		
							parent
							
								
									683f4837a0
								
							
						
					
					
						commit
						3cb58fd7d7
					
				|  | @ -125,6 +125,7 @@ _zsh_highlight_main_highlighter() | ||||||
|   typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW |   typeset -a ZSH_HIGHLIGHT_TOKENS_CONTROL_FLOW | ||||||
|   local -a options_to_set # used in callees |   local -a options_to_set # used in callees | ||||||
|   local buf="$PREBUFFER$BUFFER" |   local buf="$PREBUFFER$BUFFER" | ||||||
|  |   integer len="${#buf}" | ||||||
|   region_highlight=() |   region_highlight=() | ||||||
| 
 | 
 | ||||||
|   if (( path_dirs_was_set )); then |   if (( path_dirs_was_set )); then | ||||||
|  | @ -234,11 +235,13 @@ _zsh_highlight_main_highlighter() | ||||||
|       # indistinguishable from 'echo foo echo bar' (one command with three |       # indistinguishable from 'echo foo echo bar' (one command with three | ||||||
|       # words for arguments). |       # words for arguments). | ||||||
|       local needle=$'[;\n]' |       local needle=$'[;\n]' | ||||||
|       integer offset=${${buf[start_pos+1,-1]}[(i)$needle]} |       # Len-start_pos drops one character, but it should do it, as start_pos | ||||||
|  |       # starts from next, not from "start_pos", character | ||||||
|  |       integer offset=${${buf: start_pos: len-start_pos}[(i)$needle]} | ||||||
|       (( start_pos += offset - 1 )) |       (( start_pos += offset - 1 )) | ||||||
|       (( end_pos = start_pos + $#arg )) |       (( end_pos = start_pos + $#arg )) | ||||||
|     else |     else | ||||||
|       ((start_pos+=${#buf[$start_pos+1,-1]}-${#${buf[$start_pos+1,-1]##([[:space:]]|\\[[:space:]])#}})) |       ((start_pos+=(len-start_pos)-${#${${buf: start_pos: len-start_pos}##([[:space:]]|\\[[:space:]])#}})) | ||||||
|       ((end_pos=$start_pos+${#arg})) |       ((end_pos=$start_pos+${#arg})) | ||||||
|     fi |     fi | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue