zsh-workers
 help / color / mirror / code / Atom feed
* replacement slowdown
@ 2005-04-22 23:23 Clint Adams
  2005-04-23  3:14 ` Bart Schaefer
  0 siblings, 1 reply; 11+ messages in thread
From: Clint Adams @ 2005-04-22 23:23 UTC (permalink / raw)
  To: zsh-workers

${(f)"$(</tmp/blah)"//,/x}

is much slower (23 secs vs. 0.8 secs) in 4.2.2 than it was in 4.2.1,
if /tmp/blah is a ssh known_hosts file.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-22 23:23 replacement slowdown Clint Adams
@ 2005-04-23  3:14 ` Bart Schaefer
  2005-04-23  3:19   ` Clint Adams
  0 siblings, 1 reply; 11+ messages in thread
From: Bart Schaefer @ 2005-04-23  3:14 UTC (permalink / raw)
  To: zsh-workers

On Apr 22,  7:23pm, Clint Adams wrote:
}
} ${(f)"$(</tmp/blah)"//,/x}
} 
} is much slower (23 secs vs. 0.8 secs) in 4.2.2 than it was in 4.2.1

This coincides with the change to introduce the "gsu" structure for
storing functions that perform the get/set/unset of parameters, and
to the addition of the gettimeofday() call in zfork().

Also to the change from times() to getrusage() for timing child jobs,
and to some changes in pattern matching to handle metafied strings
properly:

+       * 20522: Src/glob.c, Test/D02glob.ztst: must-match optimisation
+       was broken for pattern substitutions in parameters.

+       * 20500: Misc/globtests, Src/glob.c, Src/pattern.c, Src/zsh.h,
+       Src/Zle/complist.c, Test/D02glob.ztst: Use unmetafied strings
+       in patterns more;

+       * 20490: Src/pattern.c, Src/zsh.h: use lengths for test strings in
+       patterns instead of null termination.

Any or all of those could be contributing to slowness in the example you
gave.  Someone will have to run both versions through a profiler.

BTW, did you check that both builds used the same compiler optimization
settings?


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23  3:14 ` Bart Schaefer
@ 2005-04-23  3:19   ` Clint Adams
  2005-04-23 16:07     ` Bart Schaefer
  2005-04-23 16:25     ` Bart Schaefer
  0 siblings, 2 replies; 11+ messages in thread
From: Clint Adams @ 2005-04-23  3:19 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

> +       * 20500: Misc/globtests, Src/glob.c, Src/pattern.c, Src/zsh.h,
> +       Src/Zle/complist.c, Test/D02glob.ztst: Use unmetafied strings
> +       in patterns more;

> Any or all of those could be contributing to slowness in the example you
> gave.  Someone will have to run both versions through a profiler.

Well, I haven't profiled 4.2.1, but in 4.2.5, it's spending all its time
in ztrsub (called 57093 times) in pattryrefs.

> BTW, did you check that both builds used the same compiler optimization
> settings?

Yes.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23  3:19   ` Clint Adams
@ 2005-04-23 16:07     ` Bart Schaefer
  2005-04-23 16:26       ` Clint Adams
  2005-04-23 16:25     ` Bart Schaefer
  1 sibling, 1 reply; 11+ messages in thread
From: Bart Schaefer @ 2005-04-23 16:07 UTC (permalink / raw)
  To: zsh-workers

On Apr 22, 11:19pm, Clint Adams wrote:
}
} Well, I haven't profiled 4.2.1, but in 4.2.5, it's spending all its time
} in ztrsub (called 57093 times) in pattryrefs.

Is that a profile for the entire shell from startup to exit, or just
for the ${(f)"$(</tmp/blah)"//,/x} substitution?

Is zsh compiled with debugging (that is, with the DEBUG macro defined)?
ztrsub() shouldn't be particularly expensive, but it's a bit more so in
debugging mode.

Also, there's no loop in pattryrefs(), so the fact that it's in ztrsub()
may be misleading.  There are exactly 2 calls to ztrsub() in there.
What's calling pattryrefs() 28000+ times?  Is that how many lines there
are in /tmp/blah?


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23  3:19   ` Clint Adams
  2005-04-23 16:07     ` Bart Schaefer
@ 2005-04-23 16:25     ` Bart Schaefer
  1 sibling, 0 replies; 11+ messages in thread
From: Bart Schaefer @ 2005-04-23 16:25 UTC (permalink / raw)
  To: zsh-workers

On Apr 22, 11:19pm, Clint Adams wrote:
}
} Well, I haven't profiled 4.2.1, but in 4.2.5, it's spending all its time

Ths is probably going to be even worse in the current dev versions due to
UTF-8 handling, by the way.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23 16:07     ` Bart Schaefer
@ 2005-04-23 16:26       ` Clint Adams
  2005-04-23 17:12         ` Bart Schaefer
  0 siblings, 1 reply; 11+ messages in thread
From: Clint Adams @ 2005-04-23 16:26 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

> Is that a profile for the entire shell from startup to exit, or just
> for the ${(f)"$(</tmp/blah)"//,/x} substitution?

Entire shell, run as
time obj/Src/zsh -fc 'print -l ${(f)"$(</tmp/blah)"//,/x} >/dev/null'

> Is zsh compiled with debugging (that is, with the DEBUG macro defined)?
> ztrsub() shouldn't be particularly expensive, but it's a bit more so in
> debugging mode.

No, without.

> Also, there's no loop in pattryrefs(), so the fact that it's in ztrsub()
> may be misleading.  There are exactly 2 calls to ztrsub() in there.
> What's calling pattryrefs() 28000+ times?  Is that how many lines there
> are in /tmp/blah?

231 lines, but 57093 chars.  pattrylen() seems to be called 57092 times
by igetmatch.

[-- Attachment #2: zsh.gprof.output --]
[-- Type: text/plain, Size: 137262 bytes --]

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 68.29      0.28     0.28    57093     0.00     0.00  ztrsub
  7.32      0.31     0.03      462     0.06     0.06  findsep
  7.32      0.34     0.03        1    30.00    30.10  readoutput
  4.88      0.36     0.02      235     0.09     0.09  hasbraces
  4.88      0.38     0.02      231     0.09     0.09  getkeystring
  2.44      0.39     0.01     1334     0.01     0.01  zhalloc
  2.44      0.40     0.01      243     0.04     0.04  remnulargs
  2.44      0.41     0.01      234     0.04     0.04  haswilds
  0.00      0.41     0.00    57093     0.00     0.00  pattryrefs
  0.00      0.41     0.00    57093     0.00     0.00  set_pat_start
  0.00      0.41     0.00    57092     0.00     0.00  pattrylen
  0.00      0.41     0.00     1035     0.00     0.00  nohw
  0.00      0.41     0.00      816     0.00     0.00  hasher
  0.00      0.41     0.00      723     0.00     0.00  ingetc
  0.00      0.41     0.00      477     0.00     0.00  zalloc
  0.00      0.41     0.00      425     0.00     0.00  addhashnode
  0.00      0.41     0.00      425     0.00     0.00  addhashnode2
  0.00      0.41     0.00      389     0.00     0.01  insertlinknode
  0.00      0.41     0.00      366     0.00     0.00  gethashnode2
  0.00      0.41     0.00      338     0.00     0.00  ztrdup
  0.00      0.41     0.00      269     0.00     0.01  hcalloc
  0.00      0.41     0.00      243     0.00     0.00  ugetnode
  0.00      0.41     0.00      242     0.00     0.01  dupstring
  0.00      0.41     0.00      242     0.00     0.00  untokenize
  0.00      0.41     0.00      241     0.00     0.00  filesub
  0.00      0.41     0.00      241     0.00     0.00  filesubstr
  0.00      0.41     0.00      234     0.00     0.04  zglob
  0.00      0.41     0.00      175     0.00     0.00  getparamnode
  0.00      0.41     0.00      168     0.00     0.00  add
  0.00      0.41     0.00      156     0.00     0.01  get_match_ret
  0.00      0.41     0.00      156     0.00     0.00  patmatchlen
  0.00      0.41     0.00      155     0.00     0.00  setemulate
  0.00      0.41     0.00      145     0.00     0.00  fetchvalue
  0.00      0.41     0.00      141     0.00     0.00  getvalue
  0.00      0.41     0.00      117     0.00     0.00  zshcalloc
  0.00      0.41     0.00      102     0.00     0.00  addbuiltin
  0.00      0.41     0.00       92     0.00     0.00  isident
  0.00      0.41     0.00       74     0.00     0.00  zsfree
  0.00      0.41     0.00       69     0.00     0.00  setstrvalue
  0.00      0.41     0.00       64     0.00     0.00  assignsparam
  0.00      0.41     0.00       62     0.00     0.00  createparam
  0.00      0.41     0.00       61     0.00     0.00  assigngetset
  0.00      0.41     0.00       60     0.00     0.00  zfree
  0.00      0.41     0.00       59     0.00     0.00  strsetfn
  0.00      0.41     0.00       51     0.00     0.00  nohwe
  0.00      0.41     0.00       42     0.00     0.00  ecadd
  0.00      0.41     0.00       41     0.00     0.00  gettok
  0.00      0.41     0.00       41     0.00     0.00  yylex
  0.00      0.41     0.00       38     0.00     0.00  exalias
  0.00      0.41     0.00       28     0.00     0.00  has_token
  0.00      0.41     0.00       27     0.00     0.00  add_autoparam
  0.00      0.41     0.00       27     0.00     0.00  metafy
  0.00      0.41     0.00       25     0.00     0.00  add_autobin
  0.00      0.41     0.00       25     0.00     0.00  gethashnode
  0.00      0.41     0.00       25     0.00     0.00  inungetc
  0.00      0.41     0.00       25     0.00     0.00  strucpy
  0.00      0.41     0.00       22     0.00     0.01  split_env_string
  0.00      0.41     0.00       21     0.00     0.00  inputsetline
  0.00      0.41     0.00       19     0.00     0.00  hbegin
  0.00      0.41     0.00       19     0.00     0.00  hend
  0.00      0.41     0.00       19     0.00     0.00  inputline
  0.00      0.41     0.00       19     0.00     0.00  lexinit
  0.00      0.41     0.00       19     0.00     0.00  mmap_heap_alloc
  0.00      0.41     0.00       19     0.00     0.00  shingetline
  0.00      0.41     0.00       19     0.00     0.00  tricat
  0.00      0.41     0.00       19     0.00     0.00  zrealloc
  0.00      0.41     0.00       18     0.00     0.01  gettokstr
  0.00      0.41     0.00       18     0.00     0.00  init_parse
  0.00      0.41     0.00       17     0.00     0.00  intr
  0.00      0.41     0.00       17     0.00     0.00  zinsertlinknode
  0.00      0.41     0.00       16     0.00     0.00  freeheap
  0.00      0.41     0.00       16     0.00     0.00  par_event
  0.00      0.41     0.00       16     0.00     0.01  parse_event
  0.00      0.41     0.00       15     0.00     0.00  clear_hdocs
  0.00      0.41     0.00       15     0.00     0.00  znewlinklist
  0.00      0.41     0.00       11     0.00     0.00  getsparam
  0.00      0.41     0.00       11     0.00     0.00  stringsubst
  0.00      0.41     0.00       10     0.00     0.00  ecgetstr
  0.00      0.41     0.00       10     0.00     0.01  ecstrcode
  0.00      0.41     0.00       10     0.00     0.00  find_module
  0.00      0.41     0.00       10     0.00     0.00  newhashtable
  0.00      0.41     0.00        9     0.00     0.00  add_dep
  0.00      0.41     0.00        9     0.00     0.00  copyenvstr
  0.00      0.41     0.00        9     0.00     0.00  mkenvstr
  0.00      0.41     0.00        9     0.00     3.32  prefork
  0.00      0.41     0.00        8     0.00     0.00  getstrvalue
  0.00      0.41     0.00        8     0.00     0.00  ztrncpy
  0.00      0.41     0.00        7     0.00     0.00  mkarray
  0.00      0.41     0.00        7     0.00     0.02  par_cmd
  0.00      0.41     0.00        7     0.00     0.00  par_pline
  0.00      0.41     0.00        7     0.00     0.00  par_sublist
  0.00      0.41     0.00        7     0.00     0.00  par_sublist2
  0.00      0.41     0.00        6     0.00     0.00  findenv
  0.00      0.41     0.00        6     0.00     0.00  singsub
  0.00      0.41     0.00        6     0.00     0.00  taddchr
  0.00      0.41     0.00        6     0.00     0.00  zclose
  0.00      0.41     0.00        5     0.00     0.00  dquote_parse
  0.00      0.41     0.00        5     0.00     0.00  intsetfn
  0.00      0.41     0.00        5     0.00     0.01  par_simple
  0.00      0.41     0.00        5     0.00     0.00  set_list_code
  0.00      0.41     0.00        5     0.00     0.00  set_sublist_code
  0.00      0.41     0.00        5     0.00     0.00  setiparam
  0.00      0.41     0.00        5     0.00     0.00  setnumvalue
  0.00      0.41     0.00        5     0.00     0.00  taddstr
  0.00      0.41     0.00        5     0.00     0.00  unmeta
  0.00      0.41     0.00        4     0.00     0.00  add_autocond
  0.00      0.41     0.00        4     0.00     0.00  addconddef
  0.00      0.41     0.00        4     0.00     0.00  ecadjusthere
  0.00      0.41     0.00        4     0.00     0.00  getconddef
  0.00      0.41     0.00        4     0.00     0.00  hasprocs
  0.00      0.41     0.00        4     0.00     0.00  movefd
  0.00      0.41     0.00        4     0.00     0.01  newlinklist
  0.00      0.41     0.00        4     0.00     0.00  par_list
  0.00      0.41     0.00        4     0.00     0.00  strcatsub
  0.00      0.41     0.00        3     0.00     0.00  addenv
  0.00      0.41     0.00        3     0.00     0.00  addhookdef
  0.00      0.41     0.00        3     0.00     0.01  bld_eprog
  0.00      0.41     0.00        3     0.00     0.01  colonarrgetfn
  0.00      0.41     0.00        3     0.00     0.00  copy_ecstr
  0.00      0.41     0.00        3     0.00     0.00  countlinknodes
  0.00      0.41     0.00        3     0.00     0.00  dosetopt
  0.00      0.41     0.00        3     0.00     0.00  ecispace
  0.00      0.41     0.00        3     0.00    75.57  execlist
  0.00      0.41     0.00        3     0.00     0.00  freeeprog
  0.00      0.41     0.00        3     0.00     0.00  gethookdef
  0.00      0.41     0.00        3     0.00     0.00  inittyptab
  0.00      0.41     0.00        3     0.00     0.00  inpop
  0.00      0.41     0.00        3     0.00     0.00  inpoptop
  0.00      0.41     0.00        3     0.00     0.00  inpush
  0.00      0.41     0.00        3     0.00     0.00  install_handler
  0.00      0.41     0.00        3     0.00     0.00  lexrestore
  0.00      0.41     0.00        3     0.00     0.00  lexsave
  0.00      0.41     0.00        3     0.00    11.74  paramsubst
  0.00      0.41     0.00        3     0.00     0.00  popheap
  0.00      0.41     0.00        3     0.00     0.00  pushheap
  0.00      0.41     0.00        3     0.00     0.00  strgetfn
  0.00      0.41     0.00        3     0.00     0.00  strinbeg
  0.00      0.41     0.00        3     0.00     0.00  strinend
  0.00      0.41     0.00        3     0.00     0.00  useeprog
  0.00      0.41     0.00        3     0.00     0.00  zgetenv
  0.00      0.41     0.00        3     0.00     0.01  zjoin
  0.00      0.41     0.00        3     0.00     0.00  zputenv
  0.00      0.41     0.00        2     0.00     0.00  checkunary
  0.00      0.41     0.00        2     0.00     0.00  createaliasnode
  0.00      0.41     0.00        2     0.00     0.00  createaliastable
  0.00      0.41     0.00        2     0.00     0.00  deletefilelist
  0.00      0.41     0.00        2     0.00     0.00  deletejob
  0.00      0.41     0.00        2     0.00     0.03  ecgetredirs
  0.00      0.41     0.00        2     0.00     0.00  ecrawstr
  0.00      0.41     0.00        2     0.00    91.45  execcmd
  0.00      0.41     0.00        2     0.00   204.82  execode
  0.00      0.41     0.00        2     0.00     0.00  execpline
  0.00      0.41     0.00        2     0.00     0.02  execpline2
  0.00      0.41     0.00        2     0.00     0.00  export_param
  0.00      0.41     0.00        2     0.00     0.00  finddir
  0.00      0.41     0.00        2     0.00     0.00  fixfds
  0.00      0.41     0.00        2     0.00     0.00  freejob
  0.00      0.41     0.00        2     0.00     5.00  globlist
  0.00      0.41     0.00        2     0.00     0.00  initjob
  0.00      0.41     0.00        2     0.00     0.00  initnewjob
  0.00      0.41     0.00        2     0.00     0.00  ispwd
  0.00      0.41     0.00        2     0.00     0.02  par_cond_1
  0.00      0.41     0.00        2     0.00     0.02  par_cond_2
  0.00      0.41     0.00        2     0.00     0.01  par_redir
  0.00      0.41     0.00        2     0.00     0.06  parse_list
  0.00      0.41     0.00        2     0.00     0.06  parse_string
  0.00      0.41     0.00        2     0.00     0.00  patadd
  0.00      0.41     0.00        2     0.00     0.04  patcompile
  0.00      0.41     0.00        2     0.00     0.00  redup
  0.00      0.41     0.00        2     0.00     0.00  setunderscore
  0.00      0.41     0.00        2     0.00     0.00  skipparens
  0.00      0.41     0.00        2     0.00     0.00  waitjobs
  0.00      0.41     0.00        2     0.00     0.00  zzlex
  0.00      0.41     0.00        1     0.00     0.00  addbuiltins
  0.00      0.41     0.00        1     0.00     0.01  addfd
  0.00      0.41     0.00        1     0.00     0.00  addhookdefs
  0.00      0.41     0.00        1     0.00     0.00  adjustcolumns
  0.00      0.41     0.00        1     0.00     0.00  adjustlines
  0.00      0.41     0.00        1     0.00     0.00  adjustwinsize
  0.00      0.41     0.00        1     0.00     0.00  arrfixenv
  0.00      0.41     0.00        1     0.00     0.00  arrlen
  0.00      0.41     0.00        1     0.00     0.00  arrsetfn
  0.00      0.41     0.00        1     0.00     0.00  assignaparam
  0.00      0.41     0.00        1     0.00    21.74  bin_print
  0.00      0.41     0.00        1     0.00     0.00  boot_module
  0.00      0.41     0.00        1     0.00     0.00  boot_zshQsmain
  0.00      0.41     0.00        1     0.00     0.00  clobber_open
  0.00      0.41     0.00        1     0.00     0.00  closem
  0.00      0.41     0.00        1     0.00     0.00  cmd_or_math_sub
  0.00      0.41     0.00        1     0.00     0.00  colonarrsetfn
  0.00      0.41     0.00        1     0.00     0.00  colonsplit
  0.00      0.41     0.00        1     0.00     0.04  compgetmatch
  0.00      0.41     0.00        1     0.00     0.00  convbase
  0.00      0.41     0.00        1     0.00     0.00  createaliastables
  0.00      0.41     0.00        1     0.00     0.00  createbuiltintable
  0.00      0.41     0.00        1     0.00     0.00  createcmdnamtable
  0.00      0.41     0.00        1     0.00     0.00  createhisttable
  0.00      0.41     0.00        1     0.00     0.00  createnameddirtable
  0.00      0.41     0.00        1     0.00     0.00  createoptiontable
  0.00      0.41     0.00        1     0.00     0.19  createparamtable
  0.00      0.41     0.00        1     0.00     0.00  createreswdtable
  0.00      0.41     0.00        1     0.00     0.00  createshfunctable
  0.00      0.41     0.00        1     0.00     0.01  dyncat
  0.00      0.41     0.00        1     0.00     0.00  ecdel
  0.00      0.41     0.00        1     0.00     0.03  ecgetlist
  0.00      0.41     0.00        1     0.00     0.00  emptycmdnamtable
  0.00      0.41     0.00        1     0.00     0.00  emptyhashtable
  0.00      0.41     0.00        1     0.00     0.00  emulate
  0.00      0.41     0.00        1     0.00   226.71  evalcond
  0.00      0.41     0.00        1     0.00    21.74  execbuiltin
  0.00      0.41     0.00        1     0.00   226.71  execcond
  0.00      0.41     0.00        1     0.00     0.00  execif
  0.00      0.41     0.00        1     0.00   226.71  execsimple
  0.00      0.41     0.00        1     0.00   204.88  execstring
  0.00      0.41     0.00        1     0.00     0.00  freearray
  0.00      0.41     0.00        1     0.00     0.00  get_usage
  0.00      0.41     0.00        1     0.00     0.00  getbaudrate
  0.00      0.41     0.00        1     0.00     0.04  getjobtext
  0.00      0.41     0.00        1     0.00     0.00  getlinknode
  0.00      0.41     0.00        1     0.00   282.35  getmatch
  0.00      0.41     0.00        1     0.00    30.17  getoutput
  0.00      0.41     0.00        1     0.00     0.00  getredirs
  0.00      0.41     0.00        1     0.00     0.04  gettext2
  0.00      0.41     0.00        1     0.00     0.00  homegetfn
  0.00      0.41     0.00        1     0.00     0.00  homesetfn
  0.00      0.41     0.00        1     0.00     0.00  hrealloc
  0.00      0.41     0.00        1     0.00   282.35  igetmatch
  0.00      0.41     0.00        1     0.00     0.01  init_bltinmods
  0.00      0.41     0.00        1     0.00     0.00  init_eprog
  0.00      0.41     0.00        1     0.00     0.00  init_io
  0.00      0.41     0.00        1     0.00     0.00  init_jobs
  0.00      0.41     0.00        1     0.00   204.88  init_misc
  0.00      0.41     0.00        1     0.00     0.00  init_signals
  0.00      0.41     0.00        1     0.00     0.00  inithist
  0.00      0.41     0.00        1     0.00     0.00  initlextabs
  0.00      0.41     0.00        1     0.00     0.00  intvargetfn
  0.00      0.41     0.00        1     0.00     0.00  intvarsetfn
  0.00      0.41     0.00        1     0.00     0.00  isnumglob
  0.00      0.41     0.00        1     0.00     0.00  langsetfn
  0.00      0.41     0.00        1     0.00     0.00  lexconstant
  0.00      0.41     0.00        1     0.00     0.00  load_module
  0.00      0.41     0.00        1     0.00   204.92  loop
  0.00      0.41     0.00        1     0.00     0.00  matheval
  0.00      0.41     0.00        1     0.00     0.00  mathevali
  0.00      0.41     0.00        1     0.00     0.00  mathevall
  0.00      0.41     0.00        1     0.00     0.00  mathparse
  0.00      0.41     0.00        1     0.00     0.00  modname_ok
  0.00      0.41     0.00        1     0.00     0.00  module_linked
  0.00      0.41     0.00        1     0.00     0.01  multsub
  0.00      0.41     0.00        1     0.00     0.00  newparamtable
  0.00      0.41     0.00        1     0.00     0.01  newsizedlist
  0.00      0.41     0.00        1     0.00     0.00  optlookupc
  0.00      0.41     0.00        1     0.00     0.04  par_cond
  0.00      0.41     0.00        1     0.00     0.01  par_cond_double
  0.00      0.41     0.00        1     0.00     0.01  par_cond_triple
  0.00      0.41     0.00        1     0.00     0.04  par_dinbrack
  0.00      0.41     0.00        1     0.00     0.01  par_if
  0.00      0.41     0.00        1     0.00     0.01  parse_subst_string
  0.00      0.41     0.00        1     0.00     0.00  parseargs
  0.00      0.41     0.00        1     0.00     0.00  pattry
  0.00      0.41     0.00        1     0.00     0.00  push
  0.00      0.41     0.00        1     0.00     0.00  register_module
  0.00      0.41     0.00        1     0.00     0.00  resizehashtable
  0.00      0.41     0.00        1     0.00   204.93  run_init_scripts
  0.00      0.41     0.00        1     0.00     0.00  runhookdef
  0.00      0.41     0.00        1     0.00     0.00  scanhashtable
  0.00      0.41     0.00        1     0.00     0.01  sepjoin
  0.00      0.41     0.00        1     0.00    31.74  sepsplit
  0.00      0.41     0.00        1     0.00     0.00  set_pwd_env
  0.00      0.41     0.00        1     0.00     0.00  setarrvalue
  0.00      0.41     0.00        1     0.00     0.01  setlang
  0.00      0.41     0.00        1     0.00     0.00  setup_module
  0.00      0.41     0.00        1     0.00     0.00  setup_zshQsmain
  0.00      0.41     0.00        1     0.00     0.19  setupvals
  0.00      0.41     0.00        1     0.00     0.00  signal_mask
  0.00      0.41     0.00        1     0.00     0.00  skipcomm
  0.00      0.41     0.00        1     0.00   204.93  source
  0.00      0.41     0.00        1     0.00     0.00  spawnpipes
  0.00      0.41     0.00        1     0.00     0.00  strsfx
  0.00      0.41     0.00        1     0.00     0.00  taddlist
  0.00      0.41     0.00        1     0.00     0.00  termgetfn
  0.00      0.41     0.00        1     0.00     0.00  termsetfn
  0.00      0.41     0.00        1     0.00     0.00  tpush
  0.00      0.41     0.00        1     0.00     0.01  try_source_file
  0.00      0.41     0.00        1     0.00     0.01  underscoregetfn
  0.00      0.41     0.00        1     0.00    15.00  wordcount
  0.00      0.41     0.00        1     0.00    80.54  xpandredir
  0.00      0.41     0.00        1     0.00     0.00  zerr
  0.00      0.41     0.00        1     0.00     0.00  zexit
  0.00      0.41     0.00        1     0.00     0.00  zopenmax
  0.00      0.41     0.00        1     0.00   410.00  zsh_main
  0.00      0.41     0.00        1     0.00     0.00  zstrtol
  0.00      0.41     0.00        1     0.00     0.00  ztrlen

 %         the percentage of the total running time of the
time       program used by this function.

cumulative a running sum of the number of seconds accounted
 seconds   for by this function and those listed above it.

 self      the number of seconds accounted for by this
seconds    function alone.  This is the major sort for this
           listing.

calls      the number of times this function was invoked, if
           this function is profiled, else blank.
 
 self      the average number of milliseconds spent in this
ms/call    function per call, if this function is profiled,
	   else blank.

 total     the average number of milliseconds spent in this
ms/call    function and its descendents per call, if this 
	   function is profiled, else blank.

name       the name of the function.  This is the minor sort
           for this listing. The index shows the location of
	   the function in the gprof listing. If the index is
	   in parenthesis it shows where it would appear in
	   the gprof listing if it were to be printed.
\f
		     Call graph (explanation follows)


granularity: each sample hit covers 2 byte(s) for 2.44% of 0.41 seconds

index % time    self  children    called     name
                0.00    0.41       1/1           main [2]
[1]    100.0    0.00    0.41       1         zsh_main [1]
                0.00    0.20       1/1           run_init_scripts [15]
                0.00    0.20       1/1           init_misc [19]
                0.00    0.00       1/1           setupvals [43]
                0.00    0.00       1/1           init_bltinmods [93]
                0.00    0.00       3/27          metafy [130]
                0.00    0.00       1/1           init_jobs [259]
                0.00    0.00       1/1           zopenmax [295]
                0.00    0.00       1/117         zshcalloc [118]
                0.00    0.00       1/1           createoptiontable [241]
                0.00    0.00       1/1           emulate [247]
                0.00    0.00       1/1           parseargs [277]
                0.00    0.00       1/1           init_io [258]
                0.00    0.00       1/1           init_signals [260]
-----------------------------------------------
                                                 <spontaneous>
[2]    100.0    0.00    0.41                 main [2]
                0.00    0.41       1/1           zsh_main [1]
-----------------------------------------------
[3]     99.9    0.00    0.41       2+8       <cycle 1 as a whole> [3]
                0.00    0.23       3             execlist <cycle 1> [11]
                0.00    0.18       2             execcmd <cycle 1> [20]
                0.00    0.00       2             execpline2 <cycle 1> [62]
                0.00    0.00       2             execpline <cycle 1> [205]
-----------------------------------------------
                0.00    0.20       1/2           execstring [18]
                0.00    0.20       1/2           loop [17]
[4]     99.9    0.00    0.41       2         execode [4]
                0.00    0.41       2/2           execlist <cycle 1> [11]
                0.00    0.00       2/3           useeprog [196]
                0.00    0.00       2/3           freeeprog [182]
-----------------------------------------------
[5]     92.1    0.00    0.38       5+28      <cycle 3 as a whole> [5]
                0.00    0.28       1             getmatch <cycle 3> [6]
                0.00    0.04       3             paramsubst <cycle 3> [22]
                0.00    0.03       9             prefork <cycle 3> [27]
                0.00    0.00       1             compgetmatch <cycle 3> [58]
                0.00    0.00       1             multsub <cycle 3> [76]
                0.00    0.00      11             stringsubst <cycle 3> [84]
                0.00    0.00       6             singsub <cycle 3> [161]
-----------------------------------------------
                                   1             paramsubst <cycle 3> [22]
[6]     68.9    0.00    0.28       1         getmatch <cycle 3> [6]
                0.00    0.28       1/1           igetmatch [7]
                                   1             compgetmatch <cycle 3> [58]
-----------------------------------------------
                0.00    0.28       1/1           getmatch <cycle 3> [6]
[7]     68.9    0.00    0.28       1         igetmatch [7]
                0.00    0.28   57092/57092       pattrylen [10]
                0.00    0.00     156/156         get_match_ret [39]
                0.00    0.00       1/1334        zhalloc [37]
                0.00    0.00       1/4           newlinklist [68]
                0.00    0.00   57093/57093       set_pat_start [99]
                0.00    0.00     156/156         patmatchlen [114]
                0.00    0.00       1/1           ztrlen [297]
-----------------------------------------------
                0.00    0.00       1/57093       pattry [94]
                0.00    0.28   57092/57093       pattrylen [10]
[8]     68.3    0.00    0.28   57093         pattryrefs [8]
                0.28    0.00   57093/57093       ztrsub [9]
-----------------------------------------------
                0.28    0.00   57093/57093       pattryrefs [8]
[9]     68.3    0.28    0.00   57093         ztrsub [9]
-----------------------------------------------
                0.00    0.28   57092/57092       igetmatch [7]
[10]    68.3    0.00    0.28   57092         pattrylen [10]
                0.00    0.28   57092/57093       pattryrefs [8]
-----------------------------------------------
                                   1             execif <cycle 1> [248]
                0.00    0.41       2/2           execode [4]
[11]    55.3    0.00    0.23       3         execlist <cycle 1> [11]
                0.00    0.23       1/1           execsimple [14]
                                   2             execpline <cycle 1> [205]
-----------------------------------------------
                                   1             evalcond [12]
                0.00    0.23       1/1           execcond [13]
[12]    55.3    0.00    0.23       1+1       evalcond [12]
                0.00    0.23       3/5           singsub <cycle 3> [161]
                0.00    0.00       1/2           patcompile [52]
                0.00    0.00       3/242         dupstring [41]
                0.00    0.00       1/1           pattry [94]
                0.00    0.00       2/10          ecgetstr [74]
                0.00    0.00       2/242         untokenize [109]
                0.00    0.00       1/2           ecrawstr [204]
                                   1             evalcond [12]
-----------------------------------------------
                0.00    0.23       1/1           execsimple [14]
[13]    55.3    0.00    0.23       1         execcond [13]
                0.00    0.23       1/1           evalcond [12]
-----------------------------------------------
                0.00    0.23       1/1           execlist <cycle 1> [11]
[14]    55.3    0.00    0.23       1         execsimple [14]
                0.00    0.23       1/1           execcond [13]
-----------------------------------------------
                0.00    0.20       1/1           zsh_main [1]
[15]    50.0    0.00    0.20       1         run_init_scripts [15]
                0.00    0.20       1/1           source [16]
-----------------------------------------------
                0.00    0.20       1/1           run_init_scripts [15]
[16]    50.0    0.00    0.20       1         source [16]
                0.00    0.20       1/1           loop [17]
                0.00    0.00       1/1           try_source_file [89]
                0.00    0.00       2/3           dosetopt [180]
                0.00    0.00       1/5           unmeta [169]
                0.00    0.00       1/477         zalloc [103]
                0.00    0.00       1/3           popheap [191]
                0.00    0.00       1/4           movefd [175]
-----------------------------------------------
                0.00    0.20       1/1           source [16]
[17]    50.0    0.00    0.20       1         loop [17]
                0.00    0.20       1/2           execode [4]
                0.00    0.00      16/16          parse_event [53]
                0.00    0.00       1/3           bld_eprog [57]
                0.00    0.00      16/16          freeheap [147]
                0.00    0.00      16/19          hbegin [136]
                0.00    0.00      16/19          lexinit [139]
                0.00    0.00      16/17          intr [145]
                0.00    0.00      16/19          hend [137]
                0.00    0.00       1/3           pushheap [192]
-----------------------------------------------
                0.00    0.20       1/1           init_misc [19]
[18]    50.0    0.00    0.20       1         execstring [18]
                0.00    0.20       1/2           execode [4]
                0.00    0.00       1/2           parse_string [48]
                0.00    0.00       1/3           pushheap [192]
-----------------------------------------------
                0.00    0.20       1/1           zsh_main [1]
[19]    50.0    0.00    0.20       1         init_misc [19]
                0.00    0.20       1/1           execstring [18]
                0.00    0.00       1/4           movefd [175]
                0.00    0.00       1/3           popheap [191]
                0.00    0.00       1/1           zexit [294]
-----------------------------------------------
                                   2             execpline2 <cycle 1> [62]
[20]    44.6    0.00    0.18       2         execcmd <cycle 1> [20]
                0.00    0.08       1/1           xpandredir [21]
                0.00    0.08       1/5           prefork <cycle 3> [27]
                0.00    0.02       1/1           execbuiltin [29]
                0.00    0.01       1/2           globlist [36]
                0.00    0.00       1/2           ecgetredirs [54]
                0.00    0.00       1/1           ecgetlist [70]
                0.00    0.00       1/1           addfd [85]
                0.00    0.00       2/2           setunderscore [215]
                0.00    0.00       2/2           fixfds [208]
                0.00    0.00       2/74          zsfree [121]
                0.00    0.00       2/25          gethashnode [132]
                0.00    0.00       1/1           spawnpipes [288]
                0.00    0.00       1/1           closem [231]
                0.00    0.00       1/243         ugetnode [108]
                0.00    0.00       1/1           clobber_open [230]
                0.00    0.00       1/28          has_token [129]
                                   1             execif <cycle 1> [248]
-----------------------------------------------
                0.00    0.08       1/1           execcmd <cycle 1> [20]
[21]    19.6    0.00    0.08       1         xpandredir [21]
                0.00    0.08       1/5           prefork <cycle 3> [27]
                0.00    0.01       1/2           globlist [36]
                0.00    0.00       1/242         untokenize [109]
-----------------------------------------------
                                   3             stringsubst <cycle 3> [84]
[22]     8.6    0.00    0.04       3         paramsubst <cycle 3> [22]
                0.00    0.03       1/1           sepsplit [23]
                0.00    0.00     230/389         insertlinknode [38]
                0.00    0.00     229/242         dupstring [41]
                0.00    0.00       4/4           strcatsub [75]
                0.00    0.00       1/1           parse_subst_string [77]
                0.00    0.00       2/8           getstrvalue [61]
                0.00    0.00       2/145         fetchvalue [116]
                0.00    0.00       1/2           skipparens [216]
                                   1             singsub <cycle 3> [161]
                                   1             getmatch <cycle 3> [6]
                                   1             multsub <cycle 3> [76]
-----------------------------------------------
                0.00    0.03       1/1           paramsubst <cycle 3> [22]
[23]     7.7    0.00    0.03       1         sepsplit [23]
                0.02    0.00     231/462         findsep [26]
                0.00    0.02       1/1           wordcount [32]
                0.00    0.00     232/269         hcalloc [40]
-----------------------------------------------
                                   1             stringsubst <cycle 3> [84]
[24]     7.4    0.00    0.03       1         getoutput <cycle 3> [24]
                0.03    0.00       1/1           readoutput [25]
                0.00    0.00       1/2           parse_string [48]
                0.00    0.00       1/242         dupstring [41]
                0.00    0.00       1/2           ecrawstr [204]
                0.00    0.00       1/242         untokenize [109]
                0.00    0.00       1/5           unmeta [169]
                                   1             singsub <cycle 3> [161]
-----------------------------------------------
                0.03    0.00       1/1           getoutput <cycle 3> [24]
[25]     7.3    0.03    0.00       1         readoutput [25]
                0.00    0.00      11/269         hcalloc [40]
                0.00    0.00       1/4           newlinklist [68]
                0.00    0.00       1/389         insertlinknode [38]
-----------------------------------------------
                0.02    0.00     231/462         wordcount [32]
                0.02    0.00     231/462         sepsplit [23]
[26]     7.3    0.03    0.00     462         findsep [26]
-----------------------------------------------
                                   1             multsub <cycle 3> [76]
                                   6             singsub <cycle 3> [161]
                0.00    0.08       1/5           execcmd <cycle 1> [20]
                0.00    0.08       1/5           xpandredir [21]
[27]     7.3    0.00    0.03       9         prefork <cycle 3> [27]
                0.02    0.00     235/235         hasbraces [31]
                0.01    0.00     241/243         remnulargs [33]
                0.00    0.00     241/241         filesub [110]
                                  11             stringsubst <cycle 3> [84]
-----------------------------------------------
                0.00    0.02       1/1           execbuiltin [29]
[28]     5.3    0.00    0.02       1         bin_print [28]
                0.02    0.00     231/231         getkeystring [30]
                0.00    0.00       1/269         hcalloc [40]
                0.00    0.00       1/1           arrlen [225]
-----------------------------------------------
                0.00    0.02       1/1           execcmd <cycle 1> [20]
[29]     5.3    0.00    0.02       1         execbuiltin [29]
                0.00    0.02       1/1           bin_print [28]
                0.00    0.00     234/243         ugetnode [108]
                0.00    0.00       1/3           countlinknodes [179]
-----------------------------------------------
                0.02    0.00     231/231         bin_print [28]
[30]     5.3    0.02    0.00     231         getkeystring [30]
                0.00    0.00     231/1334        zhalloc [37]
-----------------------------------------------
                0.02    0.00     235/235         prefork <cycle 3> [27]
[31]     4.9    0.02    0.00     235         hasbraces [31]
-----------------------------------------------
                0.00    0.02       1/1           sepsplit [23]
[32]     3.7    0.00    0.02       1         wordcount [32]
                0.02    0.00     231/462         findsep [26]
-----------------------------------------------
                0.00    0.00       2/243         patcompile [52]
                0.01    0.00     241/243         prefork <cycle 3> [27]
[33]     2.4    0.01    0.00     243         remnulargs [33]
-----------------------------------------------
                0.01    0.00     234/234         zglob [35]
[34]     2.4    0.01    0.00     234         haswilds [34]
-----------------------------------------------
                0.00    0.01     234/234         globlist [36]
[35]     2.4    0.00    0.01     234         zglob [35]
                0.01    0.00     234/234         haswilds [34]
                0.00    0.00     234/242         untokenize [109]
-----------------------------------------------
                0.00    0.01       1/2           execcmd <cycle 1> [20]
                0.00    0.01       1/2           xpandredir [21]
[36]     2.4    0.00    0.01       2         globlist [36]
                0.00    0.01     234/234         zglob [35]
-----------------------------------------------
                0.00    0.00       1/1334        igetmatch [7]
                0.00    0.00       1/1334        addfd [85]
                0.00    0.00       1/1334        newsizedlist [87]
                0.00    0.00       1/1334        patcompile [52]
                0.00    0.00       1/1334        dyncat [86]
                0.00    0.00       2/1334        ecgetredirs [54]
                0.00    0.00       4/1334        newlinklist [68]
                0.00    0.00       6/1334        bld_eprog [57]
                0.00    0.00       8/1334        ecstrcode [55]
                0.00    0.00      22/1334        split_env_string [44]
                0.00    0.00     156/1334        get_match_ret [39]
                0.00    0.00     231/1334        getkeystring [30]
                0.00    0.00     242/1334        dupstring [41]
                0.00    0.00     269/1334        hcalloc [40]
                0.00    0.00     389/1334        insertlinknode [38]
[37]     2.4    0.01    0.00    1334         zhalloc [37]
                0.00    0.00      19/19          mmap_heap_alloc [140]
-----------------------------------------------
                0.00    0.00       1/389         readoutput [25]
                0.00    0.00       2/389         ecgetredirs [54]
                0.00    0.00     156/389         get_match_ret [39]
                0.00    0.00     230/389         paramsubst <cycle 3> [22]
[38]     0.7    0.00    0.00     389         insertlinknode [38]
                0.00    0.00     389/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00     156/156         igetmatch [7]
[39]     0.6    0.00    0.00     156         get_match_ret [39]
                0.00    0.00     156/1334        zhalloc [37]
                0.00    0.00     156/389         insertlinknode [38]
-----------------------------------------------
                0.00    0.00       1/269         stringsubst <cycle 3> [84]
                0.00    0.00       1/269         multsub <cycle 3> [76]
                0.00    0.00       1/269         sepjoin [88]
                0.00    0.00       1/269         bin_print [28]
                0.00    0.00       2/269         strcatsub [75]
                0.00    0.00       3/269         zjoin [73]
                0.00    0.00      11/269         readoutput [25]
                0.00    0.00      17/269         gettokstr [46]
                0.00    0.00     232/269         sepsplit [23]
[40]     0.5    0.00    0.00     269         hcalloc [40]
                0.00    0.00     269/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00       1/242         getoutput <cycle 3> [24]
                0.00    0.00       1/242         parse_subst_string [77]
                0.00    0.00       1/242         getstrvalue [61]
                0.00    0.00       1/242         underscoregetfn [90]
                0.00    0.00       2/242         ecgetstr [74]
                0.00    0.00       2/242         ecgetlist [70]
                0.00    0.00       2/242         ecgetredirs [54]
                0.00    0.00       3/242         evalcond [12]
                0.00    0.00     229/242         paramsubst <cycle 3> [22]
[41]     0.4    0.00    0.00     242         dupstring [41]
                0.00    0.00     242/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[42]     0.0    0.00    0.00       1         createparamtable [42]
                0.00    0.00      22/22          split_env_string [44]
                0.00    0.00       6/11          getsparam [69]
                0.00    0.00      35/64          assignsparam [81]
                0.00    0.00       5/5           setiparam [96]
                0.00    0.00       1/1           set_pwd_env [98]
                0.00    0.00     145/338         ztrdup [107]
                0.00    0.00      81/425         addhashnode [104]
                0.00    0.00      25/175         getparamnode [112]
                0.00    0.00      22/92          isident [120]
                0.00    0.00      22/27          metafy [130]
                0.00    0.00       6/9           mkenvstr [154]
                0.00    0.00       2/477         zalloc [103]
                0.00    0.00       1/1           newparamtable [275]
                0.00    0.00       1/1           getbaudrate [251]
                0.00    0.00       1/60          zfree [124]
                0.00    0.00       1/3           pushheap [192]
                0.00    0.00       1/3           popheap [191]
                0.00    0.00       1/3           addenv [176]
                0.00    0.00       1/1           assignaparam [227]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[43]     0.0    0.00    0.00       1         setupvals [43]
                0.00    0.00       1/1           createparamtable [42]
                0.00    0.00      21/338         ztrdup [107]
                0.00    0.00      19/19          tricat [142]
                0.00    0.00       7/7           mkarray [156]
                0.00    0.00       5/15          znewlinklist [149]
                0.00    0.00       4/477         zalloc [103]
                0.00    0.00       2/27          metafy [130]
                0.00    0.00       2/2           ispwd [212]
                0.00    0.00       1/1           init_eprog [257]
                0.00    0.00       1/1           addhookdefs [220]
                0.00    0.00       1/1           createhisttable [239]
                0.00    0.00       1/1           inithist [261]
                0.00    0.00       1/3           inittyptab [184]
                0.00    0.00       1/1           createreswdtable [242]
                0.00    0.00       1/1           initlextabs [262]
                0.00    0.00       1/1           createaliastables [236]
                0.00    0.00       1/1           createshfunctable [243]
                0.00    0.00       1/1           createcmdnamtable [238]
                0.00    0.00       1/1           createbuiltintable [237]
                0.00    0.00       1/1           createnameddirtable [240]
                0.00    0.00       1/1           adjustwinsize [223]
                0.00    0.00       1/1           get_usage [250]
                0.00    0.00       1/3           zgetenv [197]
-----------------------------------------------
                0.00    0.00      22/22          createparamtable [42]
[44]     0.0    0.00    0.00      22         split_env_string [44]
                0.00    0.00      22/1334        zhalloc [37]
-----------------------------------------------
[45]     0.0    0.00    0.00       3+30      <cycle 2 as a whole> [45]
                0.00    0.00       7             par_cmd <cycle 2> [51]
                0.00    0.00       4             par_list <cycle 2> [82]
                0.00    0.00       7             par_sublist <cycle 2> [158]
                0.00    0.00       7             par_sublist2 <cycle 2> [159]
                0.00    0.00       7             par_pline <cycle 2> [157]
-----------------------------------------------
                0.00    0.00       1/18          parse_subst_string [77]
                0.00    0.00      17/18          gettok [49]
[46]     0.0    0.00    0.00      18         gettokstr [46]
                0.00    0.00      17/269         hcalloc [40]
                0.00    0.00      77/168         add [113]
                0.00    0.00      73/723         ingetc [102]
                0.00    0.00      19/25          inungetc [133]
                0.00    0.00       5/5           dquote_parse [164]
-----------------------------------------------
                0.00    0.00       2/2           parse_string [48]
[47]     0.0    0.00    0.00       2         parse_list [47]
                0.00    0.00       2/3           par_list <cycle 2> [82]
                0.00    0.00       2/3           bld_eprog [57]
                0.00    0.00       2/41          yylex [50]
                0.00    0.00       2/18          init_parse [144]
-----------------------------------------------
                0.00    0.00       1/2           getoutput <cycle 3> [24]
                0.00    0.00       1/2           execstring [18]
[48]     0.0    0.00    0.00       2         parse_string [48]
                0.00    0.00       2/2           parse_list [47]
                0.00    0.00       2/3           lexsave [190]
                0.00    0.00       2/21          inputsetline [135]
                0.00    0.00       2/3           inpush [187]
                0.00    0.00       2/19          lexinit [139]
                0.00    0.00       2/3           strinbeg [194]
                0.00    0.00       2/3           inpop [185]
                0.00    0.00       2/3           strinend [195]
                0.00    0.00       2/3           lexrestore [189]
-----------------------------------------------
                0.00    0.00      41/41          yylex [50]
[49]     0.0    0.00    0.00      41         gettok [49]
                0.00    0.00      17/18          gettokstr [46]
                0.00    0.00    1035/1035        nohw [100]
                0.00    0.00     549/723         ingetc [102]
                0.00    0.00      13/51          nohwe [126]
                0.00    0.00       2/25          inungetc [133]
                0.00    0.00       1/1           isnumglob [265]
-----------------------------------------------
                0.00    0.00       1/41          par_cmd <cycle 2> [51]
                0.00    0.00       1/41          par_dinbrack [60]
                0.00    0.00       1/41          par_cond [65]
                0.00    0.00       2/41          parse_list [47]
                0.00    0.00       3/41          par_list <cycle 2> [82]
                0.00    0.00       3/41          par_if <cycle 2> [83]
                0.00    0.00       4/41          par_redir [71]
                0.00    0.00       5/41          par_simple [56]
                0.00    0.00       5/41          par_cond_2 [67]
                0.00    0.00      16/41          parse_event [53]
[50]     0.0    0.00    0.00      41         yylex [50]
                0.00    0.00      41/41          gettok [49]
                0.00    0.00      38/38          exalias [128]
-----------------------------------------------
                                   7             par_pline <cycle 2> [157]
[51]     0.0    0.00    0.00       7         par_cmd <cycle 2> [51]
                0.00    0.00       5/5           par_simple [56]
                0.00    0.00       1/1           par_dinbrack [60]
                0.00    0.00       1/2           par_redir [71]
                0.00    0.00       1/41          yylex [50]
                                   1             par_if <cycle 2> [83]
-----------------------------------------------
                0.00    0.00       1/2           compgetmatch <cycle 3> [58]
                0.00    0.00       1/2           evalcond [12]
[52]     0.0    0.00    0.00       2         patcompile [52]
                0.00    0.00       2/243         remnulargs [33]
                0.00    0.00       1/1334        zhalloc [37]
                0.00    0.00       2/2           patadd [213]
                0.00    0.00       1/19          zrealloc [143]
-----------------------------------------------
                0.00    0.00      16/16          loop [17]
[53]     0.0    0.00    0.00      16         parse_event [53]
                0.00    0.00      16/41          yylex [50]
                0.00    0.00      16/16          par_event [59]
                0.00    0.00      16/18          init_parse [144]
                0.00    0.00      15/15          clear_hdocs [148]
-----------------------------------------------
                0.00    0.00       1/2           execcmd <cycle 1> [20]
                0.00    0.00       1/2           gettext2 [64]
[54]     0.0    0.00    0.00       2         ecgetredirs [54]
                0.00    0.00       2/4           newlinklist [68]
                0.00    0.00       2/1334        zhalloc [37]
                0.00    0.00       2/242         dupstring [41]
                0.00    0.00       2/389         insertlinknode [38]
                0.00    0.00       2/10          ecgetstr [74]
-----------------------------------------------
                0.00    0.00       1/10          par_cond_double [91]
                0.00    0.00       2/10          par_redir [71]
                0.00    0.00       2/10          par_cond_triple [80]
                0.00    0.00       5/10          par_simple [56]
[55]     0.0    0.00    0.00      10         ecstrcode [55]
                0.00    0.00       8/1334        zhalloc [37]
                0.00    0.00      10/28          has_token [129]
-----------------------------------------------
                0.00    0.00       5/5           par_cmd <cycle 2> [51]
[56]     0.0    0.00    0.00       5         par_simple [56]
                0.00    0.00       5/10          ecstrcode [55]
                0.00    0.00       5/41          yylex [50]
                0.00    0.00       1/2           par_redir [71]
                0.00    0.00      10/42          ecadd [127]
-----------------------------------------------
                0.00    0.00       1/3           loop [17]
                0.00    0.00       2/3           parse_list [47]
[57]     0.0    0.00    0.00       3         bld_eprog [57]
                0.00    0.00       6/1334        zhalloc [37]
                0.00    0.00       3/42          ecadd [127]
                0.00    0.00       3/3           copy_ecstr [178]
                0.00    0.00       3/60          zfree [124]
-----------------------------------------------
                                   1             getmatch <cycle 3> [6]
[58]     0.0    0.00    0.00       1         compgetmatch <cycle 3> [58]
                0.00    0.00       1/2           patcompile [52]
                0.00    0.00       1/242         untokenize [109]
                                   1             singsub <cycle 3> [161]
-----------------------------------------------
                                   1             par_event [59]
                0.00    0.00      16/16          parse_event [53]
[59]     0.0    0.00    0.00      16+1       par_event [59]
                0.00    0.00       1/3           par_sublist <cycle 2> [158]
                0.00    0.00       1/42          ecadd [127]
                0.00    0.00       1/5           set_list_code [166]
                                   1             par_event [59]
-----------------------------------------------
                0.00    0.00       1/1           par_cmd <cycle 2> [51]
[60]     0.0    0.00    0.00       1         par_dinbrack [60]
                0.00    0.00       1/1           par_cond [65]
                0.00    0.00       1/41          yylex [50]
-----------------------------------------------
                0.00    0.00       2/8           paramsubst <cycle 3> [22]
                0.00    0.00       6/8           getsparam [69]
[61]     0.0    0.00    0.00       8         getstrvalue [61]
                0.00    0.00       3/3           colonarrgetfn [72]
                0.00    0.00       1/1           underscoregetfn [90]
                0.00    0.00       1/242         dupstring [41]
                0.00    0.00       1/3           strgetfn [193]
                0.00    0.00       1/1           termgetfn [290]
                0.00    0.00       1/1           homegetfn [254]
                0.00    0.00       1/1           intvargetfn [263]
                0.00    0.00       1/1           convbase [235]
-----------------------------------------------
                                   2             execpline <cycle 1> [205]
[62]     0.0    0.00    0.00       2         execpline2 <cycle 1> [62]
                0.00    0.00       1/1           getjobtext [63]
                                   2             execcmd <cycle 1> [20]
-----------------------------------------------
                0.00    0.00       1/1           execpline2 <cycle 1> [62]
[63]     0.0    0.00    0.00       1         getjobtext [63]
                0.00    0.00       1/1           gettext2 [64]
                0.00    0.00       1/3           useeprog [196]
                0.00    0.00       1/3           freeeprog [182]
                0.00    0.00       1/242         untokenize [109]
-----------------------------------------------
                0.00    0.00       1/1           getjobtext [63]
[64]     0.0    0.00    0.00       1         gettext2 [64]
                0.00    0.00       1/2           ecgetredirs [54]
                0.00    0.00       1/1           taddlist [95]
                0.00    0.00       1/1           getredirs [253]
                0.00    0.00       1/1           tpush [292]
-----------------------------------------------
                                   1             par_cond [65]
                0.00    0.00       1/1           par_dinbrack [60]
[65]     0.0    0.00    0.00       1+1       par_cond [65]
                0.00    0.00       2/2           par_cond_1 [66]
                0.00    0.00       1/41          yylex [50]
                0.00    0.00       1/4           ecadjusthere [172]
                0.00    0.00       1/3           ecispace [181]
                                   1             par_cond [65]
-----------------------------------------------
                0.00    0.00       2/2           par_cond [65]
[66]     0.0    0.00    0.00       2         par_cond_1 [66]
                0.00    0.00       2/2           par_cond_2 [67]
-----------------------------------------------
                0.00    0.00       2/2           par_cond_1 [66]
[67]     0.0    0.00    0.00       2         par_cond_2 [67]
                0.00    0.00       5/41          yylex [50]
                0.00    0.00       1/1           par_cond_triple [80]
                0.00    0.00       1/1           par_cond_double [91]
-----------------------------------------------
                0.00    0.00       1/4           readoutput [25]
                0.00    0.00       1/4           igetmatch [7]
                0.00    0.00       2/4           ecgetredirs [54]
[68]     0.0    0.00    0.00       4         newlinklist [68]
                0.00    0.00       4/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00       5/11          setlang [79]
                0.00    0.00       6/11          createparamtable [42]
[69]     0.0    0.00    0.00      11         getsparam [69]
                0.00    0.00       6/8           getstrvalue [61]
                0.00    0.00      11/141         getvalue [117]
-----------------------------------------------
                0.00    0.00       1/1           execcmd <cycle 1> [20]
[70]     0.0    0.00    0.00       1         ecgetlist [70]
                0.00    0.00       2/242         dupstring [41]
                0.00    0.00       1/1           newsizedlist [87]
                0.00    0.00       3/10          ecgetstr [74]
-----------------------------------------------
                0.00    0.00       1/2           par_cmd <cycle 2> [51]
                0.00    0.00       1/2           par_simple [56]
[71]     0.0    0.00    0.00       2         par_redir [71]
                0.00    0.00       2/10          ecstrcode [55]
                0.00    0.00       4/41          yylex [50]
                0.00    0.00       2/4           ecadjusthere [172]
                0.00    0.00       2/3           ecispace [181]
-----------------------------------------------
                0.00    0.00       3/3           getstrvalue [61]
[72]     0.0    0.00    0.00       3         colonarrgetfn [72]
                0.00    0.00       3/3           zjoin [73]
-----------------------------------------------
                0.00    0.00       3/3           colonarrgetfn [72]
[73]     0.0    0.00    0.00       3         zjoin [73]
                0.00    0.00       3/269         hcalloc [40]
                0.00    0.00      24/25          strucpy [134]
-----------------------------------------------
                0.00    0.00       2/10          evalcond [12]
                0.00    0.00       2/10          ecgetredirs [54]
                0.00    0.00       3/10          ecgetlist [70]
                0.00    0.00       3/10          taddlist [95]
[74]     0.0    0.00    0.00      10         ecgetstr [74]
                0.00    0.00       2/242         dupstring [41]
-----------------------------------------------
                0.00    0.00       4/4           paramsubst <cycle 3> [22]
[75]     0.0    0.00    0.00       4         strcatsub [75]
                0.00    0.00       2/269         hcalloc [40]
-----------------------------------------------
                                   1             paramsubst <cycle 3> [22]
[76]     0.0    0.00    0.00       1         multsub <cycle 3> [76]
                0.00    0.00       1/269         hcalloc [40]
                0.00    0.00       1/1           sepjoin [88]
                0.00    0.00       1/3           countlinknodes [179]
                0.00    0.00       1/243         ugetnode [108]
                                   1             prefork <cycle 3> [27]
-----------------------------------------------
                0.00    0.00       1/1           paramsubst <cycle 3> [22]
[77]     0.0    0.00    0.00       1         parse_subst_string [77]
                0.00    0.00       1/242         dupstring [41]
                0.00    0.00       1/18          gettokstr [46]
                0.00    0.00       1/3           lexsave [190]
                0.00    0.00       1/242         untokenize [109]
                0.00    0.00       1/21          inputsetline [135]
                0.00    0.00       1/3           inpush [187]
                0.00    0.00       1/19          lexinit [139]
                0.00    0.00       1/3           strinbeg [194]
                0.00    0.00       1/723         ingetc [102]
                0.00    0.00       1/3           strinend [195]
                0.00    0.00       1/3           inpop [185]
                0.00    0.00       1/3           lexrestore [189]
-----------------------------------------------
                0.00    0.00       5/69          setnumvalue [97]
                0.00    0.00      64/69          assignsparam [81]
[78]     0.0    0.00    0.00      69         setstrvalue [78]
                0.00    0.00       1/1           setlang [79]
                0.00    0.00      58/59          strsetfn [125]
                0.00    0.00       3/74          zsfree [121]
                0.00    0.00       2/2           export_param [206]
                0.00    0.00       1/1           langsetfn [266]
                0.00    0.00       1/1           colonarrsetfn [233]
                0.00    0.00       1/1           termsetfn [291]
                0.00    0.00       1/2           finddir [207]
                0.00    0.00       1/1           homesetfn [255]
                0.00    0.00       1/1           mathevali [270]
                0.00    0.00       1/1           intvarsetfn [264]
                0.00    0.00       1/1           zerr [293]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[79]     0.0    0.00    0.00       1         setlang [79]
                0.00    0.00       5/11          getsparam [69]
-----------------------------------------------
                0.00    0.00       1/1           par_cond_2 [67]
[80]     0.0    0.00    0.00       1         par_cond_triple [80]
                0.00    0.00       2/10          ecstrcode [55]
                0.00    0.00       4/42          ecadd [127]
-----------------------------------------------
                0.00    0.00       2/64          set_pwd_env [98]
                0.00    0.00      27/64          add_autoparam [92]
                0.00    0.00      35/64          createparamtable [42]
[81]     0.0    0.00    0.00      64         assignsparam [81]
                0.00    0.00      64/69          setstrvalue [78]
                0.00    0.00     120/141         getvalue [117]
                0.00    0.00      64/92          isident [120]
                0.00    0.00      56/62          createparam [122]
-----------------------------------------------
                                   2             par_if <cycle 2> [83]
                0.00    0.00       2/3           parse_list [47]
[82]     0.0    0.00    0.00       4         par_list <cycle 2> [82]
                0.00    0.00       3/41          yylex [50]
                0.00    0.00       6/42          ecadd [127]
                0.00    0.00       4/5           set_list_code [166]
                                   6             par_sublist <cycle 2> [158]
-----------------------------------------------
                                   1             par_cmd <cycle 2> [51]
[83]     0.0    0.00    0.00       1         par_if <cycle 2> [83]
                0.00    0.00       3/41          yylex [50]
                0.00    0.00       2/42          ecadd [127]
                                   2             par_list <cycle 2> [82]
-----------------------------------------------
                                  11             prefork <cycle 3> [27]
[84]     0.0    0.00    0.00      11         stringsubst <cycle 3> [84]
                0.00    0.00       1/269         hcalloc [40]
                0.00    0.00       1/243         ugetnode [108]
                0.00    0.00       1/2           skipparens [216]
                                   3             paramsubst <cycle 3> [22]
                                   1             getoutput <cycle 3> [24]
-----------------------------------------------
                0.00    0.00       1/1           execcmd <cycle 1> [20]
[85]     0.0    0.00    0.00       1         addfd [85]
                0.00    0.00       1/1334        zhalloc [37]
                0.00    0.00       1/6           zclose [163]
                0.00    0.00       1/2           redup [214]
                0.00    0.00       1/4           movefd [175]
-----------------------------------------------
                0.00    0.00       1/1           try_source_file [89]
[86]     0.0    0.00    0.00       1         dyncat [86]
                0.00    0.00       1/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00       1/1           ecgetlist [70]
[87]     0.0    0.00    0.00       1         newsizedlist [87]
                0.00    0.00       1/1334        zhalloc [37]
-----------------------------------------------
                0.00    0.00       1/1           multsub <cycle 3> [76]
[88]     0.0    0.00    0.00       1         sepjoin [88]
                0.00    0.00       1/269         hcalloc [40]
                0.00    0.00       1/25          strucpy [134]
-----------------------------------------------
                0.00    0.00       1/1           source [16]
[89]     0.0    0.00    0.00       1         try_source_file [89]
                0.00    0.00       1/1           dyncat [86]
                0.00    0.00       1/1           strsfx [289]
-----------------------------------------------
                0.00    0.00       1/1           getstrvalue [61]
[90]     0.0    0.00    0.00       1         underscoregetfn [90]
                0.00    0.00       1/242         dupstring [41]
                0.00    0.00       1/242         untokenize [109]
-----------------------------------------------
                0.00    0.00       1/1           par_cond_2 [67]
[91]     0.0    0.00    0.00       1         par_cond_double [91]
                0.00    0.00       1/10          ecstrcode [55]
                0.00    0.00       2/42          ecadd [127]
-----------------------------------------------
                0.00    0.00      27/27          init_bltinmods [93]
[92]     0.0    0.00    0.00      27         add_autoparam [92]
                0.00    0.00      27/64          assignsparam [81]
                0.00    0.00      27/366         gethashnode2 [106]
                0.00    0.00      27/338         ztrdup [107]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[93]     0.0    0.00    0.00       1         init_bltinmods [93]
                0.00    0.00      27/27          add_autoparam [92]
                0.00    0.00      25/102         addbuiltin [119]
                0.00    0.00      25/25          add_autobin [131]
                0.00    0.00       9/9           add_dep [152]
                0.00    0.00       4/4           add_autocond [170]
                0.00    0.00       1/17          zinsertlinknode [146]
                0.00    0.00       1/1           register_module [279]
                0.00    0.00       1/1           load_module [268]
-----------------------------------------------
                0.00    0.00       1/1           evalcond [12]
[94]     0.0    0.00    0.00       1         pattry [94]
                0.00    0.00       1/57093       pattryrefs [8]
-----------------------------------------------
                0.00    0.00       1/1           gettext2 [64]
[95]     0.0    0.00    0.00       1         taddlist [95]
                0.00    0.00       3/10          ecgetstr [74]
                0.00    0.00       3/5           taddstr [168]
                0.00    0.00       3/6           taddchr [162]
-----------------------------------------------
                0.00    0.00       5/5           createparamtable [42]
[96]     0.0    0.00    0.00       5         setiparam [96]
                0.00    0.00       5/5           setnumvalue [97]
                0.00    0.00      10/141         getvalue [117]
                0.00    0.00       5/92          isident [120]
                0.00    0.00       5/62          createparam [122]
-----------------------------------------------
                0.00    0.00       5/5           setiparam [96]
[97]     0.0    0.00    0.00       5         setnumvalue [97]
                0.00    0.00       5/69          setstrvalue [78]
                0.00    0.00       5/5           intsetfn [165]
-----------------------------------------------
                0.00    0.00       1/1           createparamtable [42]
[98]     0.0    0.00    0.00       1         set_pwd_env [98]
                0.00    0.00       2/64          assignsparam [81]
                0.00    0.00       4/175         getparamnode [112]
                0.00    0.00       2/338         ztrdup [107]
-----------------------------------------------
                0.00    0.00   57093/57093       igetmatch [7]
[99]     0.0    0.00    0.00   57093         set_pat_start [99]
-----------------------------------------------
                0.00    0.00    1035/1035        gettok [49]
[100]    0.0    0.00    0.00    1035         nohw [100]
-----------------------------------------------
                0.00    0.00      25/816         gethashnode [132]
                0.00    0.00     366/816         gethashnode2 [106]
                0.00    0.00     425/816         addhashnode2 [105]
[101]    0.0    0.00    0.00     816         hasher [101]
-----------------------------------------------
                0.00    0.00       1/723         cmd_or_math_sub [232]
                0.00    0.00       1/723         isnumglob [265]
                0.00    0.00       1/723         parse_subst_string [77]
                0.00    0.00      14/723         skipcomm [287]
                0.00    0.00      73/723         gettokstr [46]
                0.00    0.00      84/723         dquote_parse [164]
                0.00    0.00     549/723         gettok [49]
[102]    0.0    0.00    0.00     723         ingetc [102]
                0.00    0.00      19/19          inputline [138]
-----------------------------------------------
                0.00    0.00       1/477         setunderscore [215]
                0.00    0.00       1/477         source [16]
                0.00    0.00       1/477         inpush [187]
                0.00    0.00       1/477         init_jobs [259]
                0.00    0.00       1/477         isnumglob [265]
                0.00    0.00       1/477         register_module [279]
                0.00    0.00       1/477         tpush [292]
                0.00    0.00       1/477         finddir [207]
                0.00    0.00       2/477         pushheap [192]
                0.00    0.00       2/477         createparamtable [42]
                0.00    0.00       3/477         lexsave [190]
                0.00    0.00       4/477         setupvals [43]
                0.00    0.00       4/477         add_autocond [170]
                0.00    0.00       7/477         mkarray [156]
                0.00    0.00       9/477         mkenvstr [154]
                0.00    0.00       9/477         colonsplit [234]
                0.00    0.00      15/477         znewlinklist [149]
                0.00    0.00      17/477         zinsertlinknode [146]
                0.00    0.00      18/477         init_parse [144]
                0.00    0.00      19/477         tricat [142]
                0.00    0.00      23/477         metafy [130]
                0.00    0.00     337/477         ztrdup [107]
[103]    0.0    0.00    0.00     477         zalloc [103]
-----------------------------------------------
                0.00    0.00       2/425         createaliastables [236]
                0.00    0.00      24/425         createreswdtable [242]
                0.00    0.00      61/425         createparam [122]
                0.00    0.00      81/425         createparamtable [42]
                0.00    0.00     102/425         addbuiltin [119]
                0.00    0.00     155/425         createoptiontable [241]
[104]    0.0    0.00    0.00     425         addhashnode [104]
                0.00    0.00     425/425         addhashnode2 [105]
-----------------------------------------------
                0.00    0.00     425/425         addhashnode [104]
[105]    0.0    0.00    0.00     425         addhashnode2 [105]
                0.00    0.00     425/816         hasher [101]
-----------------------------------------------
                0.00    0.00      27/366         add_autoparam [92]
                0.00    0.00      62/366         createparam [122]
                0.00    0.00     102/366         addbuiltin [119]
                0.00    0.00     175/366         getparamnode [112]
[106]    0.0    0.00    0.00     366         gethashnode2 [106]
                0.00    0.00     366/816         hasher [101]
-----------------------------------------------
                0.00    0.00       1/338         init_io [258]
                0.00    0.00       1/338         register_module [279]
                0.00    0.00       1/338         load_module [268]
                0.00    0.00       2/338         set_pwd_env [98]
                0.00    0.00       2/338         parseargs [277]
                0.00    0.00       4/338         createaliastables [236]
                0.00    0.00       8/338         add_autocond [170]
                0.00    0.00      15/338         add_dep [152]
                0.00    0.00      21/338         setupvals [43]
                0.00    0.00      27/338         add_autoparam [92]
                0.00    0.00      50/338         add_autobin [131]
                0.00    0.00      61/338         createparam [122]
                0.00    0.00     145/338         createparamtable [42]
[107]    0.0    0.00    0.00     338         ztrdup [107]
                0.00    0.00     337/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/243         execcmd <cycle 1> [20]
                0.00    0.00       1/243         stringsubst <cycle 3> [84]
                0.00    0.00       1/243         multsub <cycle 3> [76]
                0.00    0.00       6/243         singsub <cycle 3> [161]
                0.00    0.00     234/243         execbuiltin [29]
[108]    0.0    0.00    0.00     243         ugetnode [108]
-----------------------------------------------
                0.00    0.00       1/242         getoutput <cycle 3> [24]
                0.00    0.00       1/242         xpandredir [21]
                0.00    0.00       1/242         compgetmatch <cycle 3> [58]
                0.00    0.00       1/242         parse_subst_string [77]
                0.00    0.00       1/242         underscoregetfn [90]
                0.00    0.00       1/242         getjobtext [63]
                0.00    0.00       2/242         evalcond [12]
                0.00    0.00     234/242         zglob [35]
[109]    0.0    0.00    0.00     242         untokenize [109]
-----------------------------------------------
                0.00    0.00     241/241         prefork <cycle 3> [27]
[110]    0.0    0.00    0.00     241         filesub [110]
                0.00    0.00     241/241         filesubstr [111]
-----------------------------------------------
                0.00    0.00     241/241         filesub [110]
[111]    0.0    0.00    0.00     241         filesubstr [111]
-----------------------------------------------
                0.00    0.00       1/175         arrfixenv [224]
                0.00    0.00       4/175         set_pwd_env [98]
                0.00    0.00      25/175         createparamtable [42]
                0.00    0.00     145/175         fetchvalue [116]
[112]    0.0    0.00    0.00     175         getparamnode [112]
                0.00    0.00     175/366         gethashnode2 [106]
-----------------------------------------------
                0.00    0.00      14/168         skipcomm [287]
                0.00    0.00      77/168         gettokstr [46]
                0.00    0.00      77/168         dquote_parse [164]
[113]    0.0    0.00    0.00     168         add [113]
                0.00    0.00       1/1           hrealloc [256]
-----------------------------------------------
                0.00    0.00     156/156         igetmatch [7]
[114]    0.0    0.00    0.00     156         patmatchlen [114]
-----------------------------------------------
                0.00    0.00     155/155         scanhashtable [282]
[115]    0.0    0.00    0.00     155         setemulate [115]
-----------------------------------------------
                0.00    0.00       2/145         assignaparam [227]
                0.00    0.00       2/145         paramsubst <cycle 3> [22]
                0.00    0.00     141/145         getvalue [117]
[116]    0.0    0.00    0.00     145         fetchvalue [116]
                0.00    0.00     145/175         getparamnode [112]
-----------------------------------------------
                0.00    0.00      10/141         setiparam [96]
                0.00    0.00      11/141         getsparam [69]
                0.00    0.00     120/141         assignsparam [81]
[117]    0.0    0.00    0.00     141         getvalue [117]
                0.00    0.00     141/145         fetchvalue [116]
-----------------------------------------------
                0.00    0.00       1/117         parseargs [277]
                0.00    0.00       1/117         zsh_main [1]
                0.00    0.00       1/117         load_module [268]
                0.00    0.00       2/117         createaliasnode [200]
                0.00    0.00       6/117         add_dep [152]
                0.00    0.00      20/117         newhashtable [151]
                0.00    0.00      25/117         add_autobin [131]
                0.00    0.00      61/117         createparam [122]
[118]    0.0    0.00    0.00     117         zshcalloc [118]
-----------------------------------------------
                0.00    0.00      25/102         init_bltinmods [93]
                0.00    0.00      77/102         addbuiltins [219]
[119]    0.0    0.00    0.00     102         addbuiltin [119]
                0.00    0.00     102/366         gethashnode2 [106]
                0.00    0.00     102/425         addhashnode [104]
-----------------------------------------------
                0.00    0.00       1/92          assignaparam [227]
                0.00    0.00       5/92          setiparam [96]
                0.00    0.00      22/92          createparamtable [42]
                0.00    0.00      64/92          assignsparam [81]
[120]    0.0    0.00    0.00      92         isident [120]
-----------------------------------------------
                0.00    0.00       1/74          init_io [258]
                0.00    0.00       1/74          homesetfn [255]
                0.00    0.00       1/74          termsetfn [291]
                0.00    0.00       2/74          execcmd <cycle 1> [20]
                0.00    0.00       3/74          setstrvalue [78]
                0.00    0.00       3/74          addenv [176]
                0.00    0.00       4/74          freearray [249]
                0.00    0.00      59/74          strsetfn [125]
[121]    0.0    0.00    0.00      74         zsfree [121]
-----------------------------------------------
                0.00    0.00       1/62          assignaparam [227]
                0.00    0.00       5/62          setiparam [96]
                0.00    0.00      56/62          assignsparam [81]
[122]    0.0    0.00    0.00      62         createparam [122]
                0.00    0.00      62/366         gethashnode2 [106]
                0.00    0.00      61/61          assigngetset [123]
                0.00    0.00      61/117         zshcalloc [118]
                0.00    0.00      61/338         ztrdup [107]
                0.00    0.00      61/425         addhashnode [104]
-----------------------------------------------
                0.00    0.00      61/61          createparam [122]
[123]    0.0    0.00    0.00      61         assigngetset [123]
-----------------------------------------------
                0.00    0.00       1/60          setunderscore [215]
                0.00    0.00       1/60          isnumglob [265]
                0.00    0.00       1/60          createparamtable [42]
                0.00    0.00       2/60          popheap [191]
                0.00    0.00       3/60          bld_eprog [57]
                0.00    0.00      14/60          init_parse [144]
                0.00    0.00      38/60          hend [137]
[124]    0.0    0.00    0.00      60         zfree [124]
-----------------------------------------------
                0.00    0.00       1/59          langsetfn [266]
                0.00    0.00      58/59          setstrvalue [78]
[125]    0.0    0.00    0.00      59         strsetfn [125]
                0.00    0.00      59/74          zsfree [121]
-----------------------------------------------
                0.00    0.00      13/51          gettok [49]
                0.00    0.00      38/51          exalias [128]
[126]    0.0    0.00    0.00      51         nohwe [126]
-----------------------------------------------
                0.00    0.00       1/42          par_event [59]
                0.00    0.00       2/42          par_if <cycle 2> [83]
                0.00    0.00       2/42          par_cond_double [91]
                0.00    0.00       3/42          bld_eprog [57]
                0.00    0.00       4/42          par_cond_triple [80]
                0.00    0.00       6/42          par_list <cycle 2> [82]
                0.00    0.00       7/42          par_sublist <cycle 2> [158]
                0.00    0.00       7/42          par_pline <cycle 2> [157]
                0.00    0.00      10/42          par_simple [56]
[127]    0.0    0.00    0.00      42         ecadd [127]
-----------------------------------------------
                0.00    0.00      38/38          yylex [50]
[128]    0.0    0.00    0.00      38         exalias [128]
                0.00    0.00      38/51          nohwe [126]
                0.00    0.00      23/25          gethashnode [132]
                0.00    0.00      17/28          has_token [129]
-----------------------------------------------
                0.00    0.00       1/28          execcmd <cycle 1> [20]
                0.00    0.00      10/28          ecstrcode [55]
                0.00    0.00      17/28          exalias [128]
[129]    0.0    0.00    0.00      28         has_token [129]
-----------------------------------------------
                0.00    0.00       2/27          setupvals [43]
                0.00    0.00       3/27          zsh_main [1]
                0.00    0.00      22/27          createparamtable [42]
[130]    0.0    0.00    0.00      27         metafy [130]
                0.00    0.00      23/477         zalloc [103]
-----------------------------------------------
                0.00    0.00      25/25          init_bltinmods [93]
[131]    0.0    0.00    0.00      25         add_autobin [131]
                0.00    0.00      50/338         ztrdup [107]
                0.00    0.00      25/117         zshcalloc [118]
-----------------------------------------------
                0.00    0.00       2/25          execcmd <cycle 1> [20]
                0.00    0.00      23/25          exalias [128]
[132]    0.0    0.00    0.00      25         gethashnode [132]
                0.00    0.00      25/816         hasher [101]
-----------------------------------------------
                0.00    0.00       1/25          cmd_or_math_sub [232]
                0.00    0.00       1/25          isnumglob [265]
                0.00    0.00       2/25          gettok [49]
                0.00    0.00       2/25          dquote_parse [164]
                0.00    0.00      19/25          gettokstr [46]
[133]    0.0    0.00    0.00      25         inungetc [133]
-----------------------------------------------
                0.00    0.00       1/25          sepjoin [88]
                0.00    0.00      24/25          zjoin [73]
[134]    0.0    0.00    0.00      25         strucpy [134]
-----------------------------------------------
                0.00    0.00       1/21          parse_subst_string [77]
                0.00    0.00       2/21          parse_string [48]
                0.00    0.00      18/21          inputline [138]
[135]    0.0    0.00    0.00      21         inputsetline [135]
-----------------------------------------------
                0.00    0.00       3/19          strinbeg [194]
                0.00    0.00      16/19          loop [17]
[136]    0.0    0.00    0.00      19         hbegin [136]
-----------------------------------------------
                0.00    0.00       3/19          strinend [195]
                0.00    0.00      16/19          loop [17]
[137]    0.0    0.00    0.00      19         hend [137]
                0.00    0.00      38/60          zfree [124]
-----------------------------------------------
                0.00    0.00      19/19          ingetc [102]
[138]    0.0    0.00    0.00      19         inputline [138]
                0.00    0.00      19/19          shingetline [141]
                0.00    0.00      18/21          inputsetline [135]
-----------------------------------------------
                0.00    0.00       1/19          parse_subst_string [77]
                0.00    0.00       2/19          parse_string [48]
                0.00    0.00      16/19          loop [17]
[139]    0.0    0.00    0.00      19         lexinit [139]
-----------------------------------------------
                0.00    0.00      19/19          zhalloc [37]
[140]    0.0    0.00    0.00      19         mmap_heap_alloc [140]
-----------------------------------------------
                0.00    0.00      19/19          inputline [138]
[141]    0.0    0.00    0.00      19         shingetline [141]
                0.00    0.00      18/19          zrealloc [143]
-----------------------------------------------
                0.00    0.00      19/19          setupvals [43]
[142]    0.0    0.00    0.00      19         tricat [142]
                0.00    0.00      19/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/19          patcompile [52]
                0.00    0.00      18/19          shingetline [141]
[143]    0.0    0.00    0.00      19         zrealloc [143]
-----------------------------------------------
                0.00    0.00       2/18          parse_list [47]
                0.00    0.00      16/18          parse_event [53]
[144]    0.0    0.00    0.00      18         init_parse [144]
                0.00    0.00      18/477         zalloc [103]
                0.00    0.00      14/60          zfree [124]
-----------------------------------------------
                0.00    0.00       1/17          init_signals [260]
                0.00    0.00      16/17          loop [17]
[145]    0.0    0.00    0.00      17         intr [145]
-----------------------------------------------
                0.00    0.00       1/17          init_bltinmods [93]
                0.00    0.00       1/17          load_module [268]
                0.00    0.00      15/17          add_dep [152]
[146]    0.0    0.00    0.00      17         zinsertlinknode [146]
                0.00    0.00      17/477         zalloc [103]
-----------------------------------------------
                0.00    0.00      16/16          loop [17]
[147]    0.0    0.00    0.00      16         freeheap [147]
-----------------------------------------------
                0.00    0.00      15/15          parse_event [53]
[148]    0.0    0.00    0.00      15         clear_hdocs [148]
-----------------------------------------------
                0.00    0.00       1/15          parseargs [277]
                0.00    0.00       3/15          addhookdef [177]
                0.00    0.00       5/15          setupvals [43]
                0.00    0.00       6/15          add_dep [152]
[149]    0.0    0.00    0.00      15         znewlinklist [149]
                0.00    0.00      15/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/10          load_module [268]
                0.00    0.00       9/10          add_dep [152]
[150]    0.0    0.00    0.00      10         find_module [150]
-----------------------------------------------
                0.00    0.00       1/10          createbuiltintable [237]
                0.00    0.00       1/10          createcmdnamtable [238]
                0.00    0.00       1/10          createshfunctable [243]
                0.00    0.00       1/10          createreswdtable [242]
                0.00    0.00       1/10          createnameddirtable [240]
                0.00    0.00       1/10          createhisttable [239]
                0.00    0.00       1/10          createoptiontable [241]
                0.00    0.00       1/10          newparamtable [275]
                0.00    0.00       2/10          createaliastables [236]
[151]    0.0    0.00    0.00      10         newhashtable [151]
                0.00    0.00      20/117         zshcalloc [118]
-----------------------------------------------
                0.00    0.00       9/9           init_bltinmods [93]
[152]    0.0    0.00    0.00       9         add_dep [152]
                0.00    0.00      15/338         ztrdup [107]
                0.00    0.00      15/17          zinsertlinknode [146]
                0.00    0.00       9/10          find_module [150]
                0.00    0.00       6/15          znewlinklist [149]
                0.00    0.00       6/117         zshcalloc [118]
-----------------------------------------------
                0.00    0.00       9/9           mkenvstr [154]
[153]    0.0    0.00    0.00       9         copyenvstr [153]
-----------------------------------------------
                0.00    0.00       3/9           addenv [176]
                0.00    0.00       6/9           createparamtable [42]
[154]    0.0    0.00    0.00       9         mkenvstr [154]
                0.00    0.00       9/477         zalloc [103]
                0.00    0.00       9/9           copyenvstr [153]
-----------------------------------------------
                0.00    0.00       8/8           colonsplit [234]
[155]    0.0    0.00    0.00       8         ztrncpy [155]
-----------------------------------------------
                0.00    0.00       7/7           setupvals [43]
[156]    0.0    0.00    0.00       7         mkarray [156]
                0.00    0.00       7/477         zalloc [103]
-----------------------------------------------
                                   7             par_sublist2 <cycle 2> [159]
[157]    0.0    0.00    0.00       7         par_pline <cycle 2> [157]
                0.00    0.00       7/42          ecadd [127]
                                   7             par_cmd <cycle 2> [51]
-----------------------------------------------
                                   6             par_list <cycle 2> [82]
                0.00    0.00       1/3           par_event [59]
[158]    0.0    0.00    0.00       7         par_sublist <cycle 2> [158]
                0.00    0.00       7/42          ecadd [127]
                0.00    0.00       5/5           set_sublist_code [167]
                                   7             par_sublist2 <cycle 2> [159]
-----------------------------------------------
                                   7             par_sublist <cycle 2> [158]
[159]    0.0    0.00    0.00       7         par_sublist2 <cycle 2> [159]
                                   7             par_pline <cycle 2> [157]
-----------------------------------------------
                0.00    0.00       6/6           addenv [176]
[160]    0.0    0.00    0.00       6         findenv [160]
-----------------------------------------------
                                   1             getoutput <cycle 3> [24]
                                   1             compgetmatch <cycle 3> [58]
                                   1             paramsubst <cycle 3> [22]
                0.00    0.23       3/5           evalcond [12]
[161]    0.0    0.00    0.00       6         singsub <cycle 3> [161]
                0.00    0.00       6/243         ugetnode [108]
                                   6             prefork <cycle 3> [27]
-----------------------------------------------
                0.00    0.00       3/6           taddlist [95]
                0.00    0.00       3/6           getredirs [253]
[162]    0.0    0.00    0.00       6         taddchr [162]
-----------------------------------------------
                0.00    0.00       1/6           addfd [85]
                0.00    0.00       1/6           fixfds [208]
                0.00    0.00       4/6           movefd [175]
[163]    0.0    0.00    0.00       6         zclose [163]
-----------------------------------------------
                0.00    0.00       5/5           gettokstr [46]
[164]    0.0    0.00    0.00       5         dquote_parse [164]
                0.00    0.00      84/723         ingetc [102]
                0.00    0.00      77/168         add [113]
                0.00    0.00       2/25          inungetc [133]
                0.00    0.00       1/1           skipcomm [287]
                0.00    0.00       1/1           cmd_or_math_sub [232]
-----------------------------------------------
                0.00    0.00       5/5           setnumvalue [97]
[165]    0.0    0.00    0.00       5         intsetfn [165]
-----------------------------------------------
                0.00    0.00       1/5           par_event [59]
                0.00    0.00       4/5           par_list <cycle 2> [82]
[166]    0.0    0.00    0.00       5         set_list_code [166]
                0.00    0.00       1/1           ecdel [244]
-----------------------------------------------
                0.00    0.00       5/5           par_sublist <cycle 2> [158]
[167]    0.0    0.00    0.00       5         set_sublist_code [167]
-----------------------------------------------
                0.00    0.00       2/5           getredirs [253]
                0.00    0.00       3/5           taddlist [95]
[168]    0.0    0.00    0.00       5         taddstr [168]
-----------------------------------------------
                0.00    0.00       1/5           clobber_open [230]
                0.00    0.00       1/5           getoutput <cycle 3> [24]
                0.00    0.00       1/5           source [16]
                0.00    0.00       2/5           ispwd [212]
[169]    0.0    0.00    0.00       5         unmeta [169]
-----------------------------------------------
                0.00    0.00       4/4           init_bltinmods [93]
[170]    0.0    0.00    0.00       4         add_autocond [170]
                0.00    0.00       8/338         ztrdup [107]
                0.00    0.00       4/477         zalloc [103]
                0.00    0.00       4/4           addconddef [171]
-----------------------------------------------
                0.00    0.00       4/4           add_autocond [170]
[171]    0.0    0.00    0.00       4         addconddef [171]
                0.00    0.00       4/4           getconddef [173]
-----------------------------------------------
                0.00    0.00       1/4           ecdel [244]
                0.00    0.00       1/4           par_cond [65]
                0.00    0.00       2/4           par_redir [71]
[172]    0.0    0.00    0.00       4         ecadjusthere [172]
-----------------------------------------------
                0.00    0.00       4/4           addconddef [171]
[173]    0.0    0.00    0.00       4         getconddef [173]
-----------------------------------------------
                0.00    0.00       4/4           execpline <cycle 1> [205]
[174]    0.0    0.00    0.00       4         hasprocs [174]
-----------------------------------------------
                0.00    0.00       1/4           addfd [85]
                0.00    0.00       1/4           init_io [258]
                0.00    0.00       1/4           init_misc [19]
                0.00    0.00       1/4           source [16]
[175]    0.0    0.00    0.00       4         movefd [175]
                0.00    0.00       4/6           zclose [163]
-----------------------------------------------
                0.00    0.00       1/3           createparamtable [42]
                0.00    0.00       2/3           export_param [206]
[176]    0.0    0.00    0.00       3         addenv [176]
                0.00    0.00       6/6           findenv [160]
                0.00    0.00       3/9           mkenvstr [154]
                0.00    0.00       3/3           zputenv [198]
                0.00    0.00       3/74          zsfree [121]
-----------------------------------------------
                0.00    0.00       3/3           addhookdefs [220]
[177]    0.0    0.00    0.00       3         addhookdef [177]
                0.00    0.00       3/3           gethookdef [183]
                0.00    0.00       3/15          znewlinklist [149]
-----------------------------------------------
                                   8             copy_ecstr [178]
                0.00    0.00       3/3           bld_eprog [57]
[178]    0.0    0.00    0.00       3+8       copy_ecstr [178]
                                   8             copy_ecstr [178]
-----------------------------------------------
                0.00    0.00       1/3           execbuiltin [29]
                0.00    0.00       1/3           parseargs [277]
                0.00    0.00       1/3           multsub <cycle 3> [76]
[179]    0.0    0.00    0.00       3         countlinknodes [179]
-----------------------------------------------
                0.00    0.00       1/3           parseargs [277]
                0.00    0.00       2/3           source [16]
[180]    0.0    0.00    0.00       3         dosetopt [180]
                0.00    0.00       2/3           inittyptab [184]
-----------------------------------------------
                0.00    0.00       1/3           par_cond [65]
                0.00    0.00       2/3           par_redir [71]
[181]    0.0    0.00    0.00       3         ecispace [181]
-----------------------------------------------
                0.00    0.00       1/3           getjobtext [63]
                0.00    0.00       2/3           execode [4]
[182]    0.0    0.00    0.00       3         freeeprog [182]
-----------------------------------------------
                0.00    0.00       3/3           addhookdef [177]
[183]    0.0    0.00    0.00       3         gethookdef [183]
-----------------------------------------------
                0.00    0.00       1/3           setupvals [43]
                0.00    0.00       2/3           dosetopt [180]
[184]    0.0    0.00    0.00       3         inittyptab [184]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[185]    0.0    0.00    0.00       3         inpop [185]
                0.00    0.00       3/3           inpoptop [186]
-----------------------------------------------
                0.00    0.00       3/3           inpop [185]
[186]    0.0    0.00    0.00       3         inpoptop [186]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[187]    0.0    0.00    0.00       3         inpush [187]
                0.00    0.00       1/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       3/3           init_signals [260]
[188]    0.0    0.00    0.00       3         install_handler [188]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[189]    0.0    0.00    0.00       3         lexrestore [189]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[190]    0.0    0.00    0.00       3         lexsave [190]
                0.00    0.00       3/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/3           init_misc [19]
                0.00    0.00       1/3           source [16]
                0.00    0.00       1/3           createparamtable [42]
[191]    0.0    0.00    0.00       3         popheap [191]
                0.00    0.00       2/60          zfree [124]
-----------------------------------------------
                0.00    0.00       1/3           execstring [18]
                0.00    0.00       1/3           loop [17]
                0.00    0.00       1/3           createparamtable [42]
[192]    0.0    0.00    0.00       3         pushheap [192]
                0.00    0.00       2/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/3           getstrvalue [61]
                0.00    0.00       2/3           export_param [206]
[193]    0.0    0.00    0.00       3         strgetfn [193]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[194]    0.0    0.00    0.00       3         strinbeg [194]
                0.00    0.00       3/19          hbegin [136]
-----------------------------------------------
                0.00    0.00       1/3           parse_subst_string [77]
                0.00    0.00       2/3           parse_string [48]
[195]    0.0    0.00    0.00       3         strinend [195]
                0.00    0.00       3/19          hend [137]
-----------------------------------------------
                0.00    0.00       1/3           getjobtext [63]
                0.00    0.00       2/3           execode [4]
[196]    0.0    0.00    0.00       3         useeprog [196]
-----------------------------------------------
                0.00    0.00       1/3           setupvals [43]
                0.00    0.00       2/3           adjustwinsize [223]
[197]    0.0    0.00    0.00       3         zgetenv [197]
-----------------------------------------------
                0.00    0.00       3/3           addenv [176]
[198]    0.0    0.00    0.00       3         zputenv [198]
-----------------------------------------------
                0.00    0.00       2/2           mathparse [272]
[199]    0.0    0.00    0.00       2         checkunary [199]
-----------------------------------------------
                0.00    0.00       2/2           createaliastables [236]
[200]    0.0    0.00    0.00       2         createaliasnode [200]
                0.00    0.00       2/117         zshcalloc [118]
-----------------------------------------------
                0.00    0.00       2/2           createaliastables [236]
[201]    0.0    0.00    0.00       2         createaliastable [201]
-----------------------------------------------
                0.00    0.00       2/2           deletejob [203]
[202]    0.0    0.00    0.00       2         deletefilelist [202]
-----------------------------------------------
                0.00    0.00       2/2           waitjobs [217]
[203]    0.0    0.00    0.00       2         deletejob [203]
                0.00    0.00       2/2           deletefilelist [202]
                0.00    0.00       2/2           freejob [209]
-----------------------------------------------
                0.00    0.00       1/2           evalcond [12]
                0.00    0.00       1/2           getoutput <cycle 3> [24]
[204]    0.0    0.00    0.00       2         ecrawstr [204]
-----------------------------------------------
                                   2             execlist <cycle 1> [11]
[205]    0.0    0.00    0.00       2         execpline <cycle 1> [205]
                0.00    0.00       4/4           hasprocs [174]
                0.00    0.00       2/2           initjob [210]
                0.00    0.00       2/2           waitjobs [217]
                                   2             execpline2 <cycle 1> [62]
-----------------------------------------------
                0.00    0.00       2/2           setstrvalue [78]
[206]    0.0    0.00    0.00       2         export_param [206]
                0.00    0.00       2/3           addenv [176]
                0.00    0.00       2/3           strgetfn [193]
-----------------------------------------------
                0.00    0.00       1/2           createnameddirtable [240]
                0.00    0.00       1/2           setstrvalue [78]
[207]    0.0    0.00    0.00       2         finddir [207]
                0.00    0.00       1/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       2/2           execcmd <cycle 1> [20]
[208]    0.0    0.00    0.00       2         fixfds [208]
                0.00    0.00       1/6           zclose [163]
                0.00    0.00       1/2           redup [214]
-----------------------------------------------
                0.00    0.00       2/2           deletejob [203]
[209]    0.0    0.00    0.00       2         freejob [209]
-----------------------------------------------
                0.00    0.00       2/2           execpline <cycle 1> [205]
[210]    0.0    0.00    0.00       2         initjob [210]
                0.00    0.00       2/2           initnewjob [211]
-----------------------------------------------
                0.00    0.00       2/2           initjob [210]
[211]    0.0    0.00    0.00       2         initnewjob [211]
-----------------------------------------------
                0.00    0.00       2/2           setupvals [43]
[212]    0.0    0.00    0.00       2         ispwd [212]
                0.00    0.00       2/5           unmeta [169]
-----------------------------------------------
                0.00    0.00       2/2           patcompile [52]
[213]    0.0    0.00    0.00       2         patadd [213]
-----------------------------------------------
                0.00    0.00       1/2           addfd [85]
                0.00    0.00       1/2           fixfds [208]
[214]    0.0    0.00    0.00       2         redup [214]
-----------------------------------------------
                0.00    0.00       2/2           execcmd <cycle 1> [20]
[215]    0.0    0.00    0.00       2         setunderscore [215]
                0.00    0.00       1/60          zfree [124]
                0.00    0.00       1/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/2           stringsubst <cycle 3> [84]
                0.00    0.00       1/2           paramsubst <cycle 3> [22]
[216]    0.0    0.00    0.00       2         skipparens [216]
-----------------------------------------------
                0.00    0.00       2/2           execpline <cycle 1> [205]
[217]    0.0    0.00    0.00       2         waitjobs [217]
                0.00    0.00       2/2           deletejob [203]
-----------------------------------------------
                0.00    0.00       2/2           mathparse [272]
[218]    0.0    0.00    0.00       2         zzlex [218]
                0.00    0.00       1/1           lexconstant [267]
-----------------------------------------------
                0.00    0.00       1/1           createbuiltintable [237]
[219]    0.0    0.00    0.00       1         addbuiltins [219]
                0.00    0.00      77/102         addbuiltin [119]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[220]    0.0    0.00    0.00       1         addhookdefs [220]
                0.00    0.00       3/3           addhookdef [177]
-----------------------------------------------
                0.00    0.00       1/1           adjustwinsize [223]
[221]    0.0    0.00    0.00       1         adjustcolumns [221]
-----------------------------------------------
                0.00    0.00       1/1           adjustwinsize [223]
[222]    0.0    0.00    0.00       1         adjustlines [222]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[223]    0.0    0.00    0.00       1         adjustwinsize [223]
                0.00    0.00       2/3           zgetenv [197]
                0.00    0.00       1/1           adjustlines [222]
                0.00    0.00       1/1           adjustcolumns [221]
-----------------------------------------------
                0.00    0.00       1/1           colonarrsetfn [233]
[224]    0.0    0.00    0.00       1         arrfixenv [224]
                0.00    0.00       1/175         getparamnode [112]
                0.00    0.00       1/1           emptycmdnamtable [245]
-----------------------------------------------
                0.00    0.00       1/1           bin_print [28]
[225]    0.0    0.00    0.00       1         arrlen [225]
-----------------------------------------------
                0.00    0.00       1/1           setarrvalue [283]
[226]    0.0    0.00    0.00       1         arrsetfn [226]
-----------------------------------------------
                0.00    0.00       1/1           createparamtable [42]
[227]    0.0    0.00    0.00       1         assignaparam [227]
                0.00    0.00       2/145         fetchvalue [116]
                0.00    0.00       1/92          isident [120]
                0.00    0.00       1/1           setarrvalue [283]
                0.00    0.00       1/62          createparam [122]
-----------------------------------------------
                0.00    0.00       1/1           load_module [268]
[228]    0.0    0.00    0.00       1         boot_module [228]
                0.00    0.00       1/1           boot_zshQsmain [229]
-----------------------------------------------
                0.00    0.00       1/1           boot_module [228]
[229]    0.0    0.00    0.00       1         boot_zshQsmain [229]
-----------------------------------------------
                0.00    0.00       1/1           execcmd <cycle 1> [20]
[230]    0.0    0.00    0.00       1         clobber_open [230]
                0.00    0.00       1/5           unmeta [169]
-----------------------------------------------
                0.00    0.00       1/1           execcmd <cycle 1> [20]
[231]    0.0    0.00    0.00       1         closem [231]
-----------------------------------------------
                0.00    0.00       1/1           dquote_parse [164]
[232]    0.0    0.00    0.00       1         cmd_or_math_sub [232]
                0.00    0.00       1/723         ingetc [102]
                0.00    0.00       1/25          inungetc [133]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[233]    0.0    0.00    0.00       1         colonarrsetfn [233]
                0.00    0.00       1/1           colonsplit [234]
                0.00    0.00       1/1           arrfixenv [224]
                0.00    0.00       1/1           freearray [249]
-----------------------------------------------
                0.00    0.00       1/1           colonarrsetfn [233]
[234]    0.0    0.00    0.00       1         colonsplit [234]
                0.00    0.00       9/477         zalloc [103]
                0.00    0.00       8/8           ztrncpy [155]
-----------------------------------------------
                0.00    0.00       1/1           getstrvalue [61]
[235]    0.0    0.00    0.00       1         convbase [235]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[236]    0.0    0.00    0.00       1         createaliastables [236]
                0.00    0.00       4/338         ztrdup [107]
                0.00    0.00       2/10          newhashtable [151]
                0.00    0.00       2/2           createaliastable [201]
                0.00    0.00       2/2           createaliasnode [200]
                0.00    0.00       2/425         addhashnode [104]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[237]    0.0    0.00    0.00       1         createbuiltintable [237]
                0.00    0.00       1/10          newhashtable [151]
                0.00    0.00       1/1           addbuiltins [219]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[238]    0.0    0.00    0.00       1         createcmdnamtable [238]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[239]    0.0    0.00    0.00       1         createhisttable [239]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[240]    0.0    0.00    0.00       1         createnameddirtable [240]
                0.00    0.00       1/10          newhashtable [151]
                0.00    0.00       1/2           finddir [207]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[241]    0.0    0.00    0.00       1         createoptiontable [241]
                0.00    0.00     155/425         addhashnode [104]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[242]    0.0    0.00    0.00       1         createreswdtable [242]
                0.00    0.00      24/425         addhashnode [104]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[243]    0.0    0.00    0.00       1         createshfunctable [243]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           set_list_code [166]
[244]    0.0    0.00    0.00       1         ecdel [244]
                0.00    0.00       1/4           ecadjusthere [172]
-----------------------------------------------
                0.00    0.00       1/1           arrfixenv [224]
[245]    0.0    0.00    0.00       1         emptycmdnamtable [245]
                0.00    0.00       1/1           emptyhashtable [246]
-----------------------------------------------
                0.00    0.00       1/1           emptycmdnamtable [245]
[246]    0.0    0.00    0.00       1         emptyhashtable [246]
                0.00    0.00       1/1           resizehashtable [280]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[247]    0.0    0.00    0.00       1         emulate [247]
                0.00    0.00       1/1           scanhashtable [282]
-----------------------------------------------
                                   1             execcmd <cycle 1> [20]
[248]    0.0    0.00    0.00       1         execif <cycle 1> [248]
                                   1             execlist <cycle 1> [11]
-----------------------------------------------
                0.00    0.00       1/1           colonarrsetfn [233]
[249]    0.0    0.00    0.00       1         freearray [249]
                0.00    0.00       4/74          zsfree [121]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[250]    0.0    0.00    0.00       1         get_usage [250]
-----------------------------------------------
                0.00    0.00       1/1           createparamtable [42]
[251]    0.0    0.00    0.00       1         getbaudrate [251]
-----------------------------------------------
                0.00    0.00       1/1           parseargs [277]
[252]    0.0    0.00    0.00       1         getlinknode [252]
-----------------------------------------------
                0.00    0.00       1/1           gettext2 [64]
[253]    0.0    0.00    0.00       1         getredirs [253]
                0.00    0.00       3/6           taddchr [162]
                0.00    0.00       2/5           taddstr [168]
-----------------------------------------------
                0.00    0.00       1/1           getstrvalue [61]
[254]    0.0    0.00    0.00       1         homegetfn [254]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[255]    0.0    0.00    0.00       1         homesetfn [255]
                0.00    0.00       1/74          zsfree [121]
-----------------------------------------------
                0.00    0.00       1/1           add [113]
[256]    0.0    0.00    0.00       1         hrealloc [256]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[257]    0.0    0.00    0.00       1         init_eprog [257]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[258]    0.0    0.00    0.00       1         init_io [258]
                0.00    0.00       1/74          zsfree [121]
                0.00    0.00       1/338         ztrdup [107]
                0.00    0.00       1/4           movefd [175]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[259]    0.0    0.00    0.00       1         init_jobs [259]
                0.00    0.00       1/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[260]    0.0    0.00    0.00       1         init_signals [260]
                0.00    0.00       3/3           install_handler [188]
                0.00    0.00       1/1           signal_mask [286]
                0.00    0.00       1/17          intr [145]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[261]    0.0    0.00    0.00       1         inithist [261]
-----------------------------------------------
                0.00    0.00       1/1           setupvals [43]
[262]    0.0    0.00    0.00       1         initlextabs [262]
-----------------------------------------------
                0.00    0.00       1/1           getstrvalue [61]
[263]    0.0    0.00    0.00       1         intvargetfn [263]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[264]    0.0    0.00    0.00       1         intvarsetfn [264]
-----------------------------------------------
                0.00    0.00       1/1           gettok [49]
[265]    0.0    0.00    0.00       1         isnumglob [265]
                0.00    0.00       1/477         zalloc [103]
                0.00    0.00       1/723         ingetc [102]
                0.00    0.00       1/25          inungetc [133]
                0.00    0.00       1/60          zfree [124]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[266]    0.0    0.00    0.00       1         langsetfn [266]
                0.00    0.00       1/59          strsetfn [125]
-----------------------------------------------
                0.00    0.00       1/1           zzlex [218]
[267]    0.0    0.00    0.00       1         lexconstant [267]
                0.00    0.00       1/1           zstrtol [296]
-----------------------------------------------
                0.00    0.00       1/1           init_bltinmods [93]
[268]    0.0    0.00    0.00       1         load_module [268]
                0.00    0.00       1/1           modname_ok [273]
                0.00    0.00       1/10          find_module [150]
                0.00    0.00       1/1           module_linked [274]
                0.00    0.00       1/117         zshcalloc [118]
                0.00    0.00       1/338         ztrdup [107]
                0.00    0.00       1/17          zinsertlinknode [146]
                0.00    0.00       1/1           setup_module [284]
                0.00    0.00       1/1           boot_module [228]
-----------------------------------------------
                0.00    0.00       1/1           mathevali [270]
[269]    0.0    0.00    0.00       1         matheval [269]
                0.00    0.00       1/1           mathevall [271]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[270]    0.0    0.00    0.00       1         mathevali [270]
                0.00    0.00       1/1           matheval [269]
-----------------------------------------------
                0.00    0.00       1/1           matheval [269]
[271]    0.0    0.00    0.00       1         mathevall [271]
                0.00    0.00       1/1           mathparse [272]
-----------------------------------------------
                0.00    0.00       1/1           mathevall [271]
[272]    0.0    0.00    0.00       1         mathparse [272]
                0.00    0.00       2/2           zzlex [218]
                0.00    0.00       2/2           checkunary [199]
                0.00    0.00       1/1           push [278]
-----------------------------------------------
                0.00    0.00       1/1           load_module [268]
[273]    0.0    0.00    0.00       1         modname_ok [273]
-----------------------------------------------
                0.00    0.00       1/1           load_module [268]
[274]    0.0    0.00    0.00       1         module_linked [274]
-----------------------------------------------
                0.00    0.00       1/1           createparamtable [42]
[275]    0.0    0.00    0.00       1         newparamtable [275]
                0.00    0.00       1/10          newhashtable [151]
-----------------------------------------------
                0.00    0.00       1/1           parseargs [277]
[276]    0.0    0.00    0.00       1         optlookupc [276]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[277]    0.0    0.00    0.00       1         parseargs [277]
                0.00    0.00       2/338         ztrdup [107]
                0.00    0.00       1/15          znewlinklist [149]
                0.00    0.00       1/3           countlinknodes [179]
                0.00    0.00       1/117         zshcalloc [118]
                0.00    0.00       1/1           getlinknode [252]
                0.00    0.00       1/1           optlookupc [276]
                0.00    0.00       1/3           dosetopt [180]
-----------------------------------------------
                0.00    0.00       1/1           mathparse [272]
[278]    0.0    0.00    0.00       1         push [278]
-----------------------------------------------
                0.00    0.00       1/1           init_bltinmods [93]
[279]    0.0    0.00    0.00       1         register_module [279]
                0.00    0.00       1/477         zalloc [103]
                0.00    0.00       1/338         ztrdup [107]
-----------------------------------------------
                0.00    0.00       1/1           emptyhashtable [246]
[280]    0.0    0.00    0.00       1         resizehashtable [280]
-----------------------------------------------
                0.00    0.00       1/1           zexit [294]
[281]    0.0    0.00    0.00       1         runhookdef [281]
-----------------------------------------------
                0.00    0.00       1/1           emulate [247]
[282]    0.0    0.00    0.00       1         scanhashtable [282]
                0.00    0.00     155/155         setemulate [115]
-----------------------------------------------
                0.00    0.00       1/1           assignaparam [227]
[283]    0.0    0.00    0.00       1         setarrvalue [283]
                0.00    0.00       1/1           arrsetfn [226]
-----------------------------------------------
                0.00    0.00       1/1           load_module [268]
[284]    0.0    0.00    0.00       1         setup_module [284]
                0.00    0.00       1/1           setup_zshQsmain [285]
-----------------------------------------------
                0.00    0.00       1/1           setup_module [284]
[285]    0.0    0.00    0.00       1         setup_zshQsmain [285]
-----------------------------------------------
                0.00    0.00       1/1           init_signals [260]
[286]    0.0    0.00    0.00       1         signal_mask [286]
-----------------------------------------------
                0.00    0.00       1/1           dquote_parse [164]
[287]    0.0    0.00    0.00       1         skipcomm [287]
                0.00    0.00      14/723         ingetc [102]
                0.00    0.00      14/168         add [113]
-----------------------------------------------
                0.00    0.00       1/1           execcmd <cycle 1> [20]
[288]    0.0    0.00    0.00       1         spawnpipes [288]
-----------------------------------------------
                0.00    0.00       1/1           try_source_file [89]
[289]    0.0    0.00    0.00       1         strsfx [289]
-----------------------------------------------
                0.00    0.00       1/1           getstrvalue [61]
[290]    0.0    0.00    0.00       1         termgetfn [290]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[291]    0.0    0.00    0.00       1         termsetfn [291]
                0.00    0.00       1/74          zsfree [121]
-----------------------------------------------
                0.00    0.00       1/1           gettext2 [64]
[292]    0.0    0.00    0.00       1         tpush [292]
                0.00    0.00       1/477         zalloc [103]
-----------------------------------------------
                0.00    0.00       1/1           setstrvalue [78]
[293]    0.0    0.00    0.00       1         zerr [293]
-----------------------------------------------
                0.00    0.00       1/1           init_misc [19]
[294]    0.0    0.00    0.00       1         zexit [294]
                0.00    0.00       1/1           runhookdef [281]
-----------------------------------------------
                0.00    0.00       1/1           zsh_main [1]
[295]    0.0    0.00    0.00       1         zopenmax [295]
-----------------------------------------------
                0.00    0.00       1/1           lexconstant [267]
[296]    0.0    0.00    0.00       1         zstrtol [296]
-----------------------------------------------
                0.00    0.00       1/1           igetmatch [7]
[297]    0.0    0.00    0.00       1         ztrlen [297]
-----------------------------------------------

 This table describes the call tree of the program, and was sorted by
 the total amount of time spent in each function and its children.

 Each entry in this table consists of several lines.  The line with the
 index number at the left hand margin lists the current function.
 The lines above it list the functions that called this function,
 and the lines below it list the functions this one called.
 This line lists:
     index	A unique number given to each element of the table.
		Index numbers are sorted numerically.
		The index number is printed next to every function name so
		it is easier to look up where the function in the table.

     % time	This is the percentage of the `total' time that was spent
		in this function and its children.  Note that due to
		different viewpoints, functions excluded by options, etc,
		these numbers will NOT add up to 100%.

     self	This is the total amount of time spent in this function.

     children	This is the total amount of time propagated into this
		function by its children.

     called	This is the number of times the function was called.
		If the function called itself recursively, the number
		only includes non-recursive calls, and is followed by
		a `+' and the number of recursive calls.

     name	The name of the current function.  The index number is
		printed after it.  If the function is a member of a
		cycle, the cycle number is printed between the
		function's name and the index number.


 For the function's parents, the fields have the following meanings:

     self	This is the amount of time that was propagated directly
		from the function into this parent.

     children	This is the amount of time that was propagated from
		the function's children into this parent.

     called	This is the number of times this parent called the
		function `/' the total number of times the function
		was called.  Recursive calls to the function are not
		included in the number after the `/'.

     name	This is the name of the parent.  The parent's index
		number is printed after it.  If the parent is a
		member of a cycle, the cycle number is printed between
		the name and the index number.

 If the parents of the function cannot be determined, the word
 `<spontaneous>' is printed in the `name' field, and all the other
 fields are blank.

 For the function's children, the fields have the following meanings:

     self	This is the amount of time that was propagated directly
		from the child into the function.

     children	This is the amount of time that was propagated from the
		child's children to the function.

     called	This is the number of times the function called
		this child `/' the total number of times the child
		was called.  Recursive calls by the child are not
		listed in the number after the `/'.

     name	This is the name of the child.  The child's index
		number is printed after it.  If the child is a
		member of a cycle, the cycle number is printed
		between the name and the index number.

 If there are any cycles (circles) in the call graph, there is an
 entry for the cycle-as-a-whole.  This entry shows who called the
 cycle (as parents) and the members of the cycle (as children.)
 The `+' recursive calls entry shows the number of function calls that
 were internal to the cycle, and the calls entry for each member shows,
 for that member, how many times it was called from other members of
 the cycle.

\f
Index by function name

 [113] add                   [132] gethashnode            [53] parse_event
 [131] add_autobin           [106] gethashnode2           [47] parse_list
 [170] add_autocond          [183] gethookdef             [48] parse_string
  [92] add_autoparam          [63] getjobtext             [77] parse_subst_string
 [152] add_dep                [30] getkeystring          [277] parseargs
 [119] addbuiltin            [252] getlinknode           [213] patadd (pattern.c)
 [219] addbuiltins             [6] getmatch               [52] patcompile
 [171] addconddef             [24] getoutput             [114] patmatchlen
 [176] addenv                [112] getparamnode (params.c) [94] pattry
  [85] addfd (exec.c)        [253] getredirs              [10] pattrylen
 [104] addhashnode            [69] getsparam               [8] pattryrefs
 [105] addhashnode2           [61] getstrvalue           [191] popheap
 [177] addhookdef             [64] gettext2 (text.c)      [27] prefork
 [220] addhookdefs            [49] gettok                [278] push (math.c)
 [221] adjustcolumns (utils.c) [46] gettokstr (lex.c)    [192] pushheap
 [222] adjustlines (utils.c) [117] getvalue               [25] readoutput
 [223] adjustwinsize          [36] globlist              [214] redup
 [224] arrfixenv             [129] has_token             [279] register_module
 [225] arrlen                 [31] hasbraces              [33] remnulargs
 [226] arrsetfn              [101] hasher                [280] resizehashtable (hashtable.c)
 [227] assignaparam          [174] hasprocs               [15] run_init_scripts
 [123] assigngetset (params.c) [34] haswilds             [281] runhookdef
  [81] assignsparam          [136] hbegin                [282] scanhashtable
  [28] bin_print              [40] hcalloc                [88] sepjoin
  [57] bld_eprog (parse.c)   [137] hend                   [23] sepsplit
 [228] boot_module (module.c) [254] homegetfn            [166] set_list_code (parse.c)
 [229] boot_zshQsmain        [255] homesetfn              [99] set_pat_start (glob.c)
 [199] checkunary (math.c)   [256] hrealloc               [98] set_pwd_env
 [148] clear_hdocs (parse.c)   [7] igetmatch (glob.c)    [167] set_sublist_code (parse.c)
 [230] clobber_open (exec.c) [102] ingetc                [283] setarrvalue
 [231] closem                 [93] init_bltinmods        [115] setemulate (options.c)
 [232] cmd_or_math_sub (lex.c) [257] init_eprog           [96] setiparam
  [72] colonarrgetfn         [258] init_io                [79] setlang (params.c)
 [233] colonarrsetfn         [259] init_jobs              [97] setnumvalue
 [234] colonsplit             [19] init_misc              [78] setstrvalue
  [58] compgetmatch (glob.c) [144] init_parse (parse.c)  [215] setunderscore
 [235] convbase              [260] init_signals          [284] setup_module (module.c)
 [178] copy_ecstr (parse.c)  [261] inithist              [285] setup_zshQsmain
 [153] copyenvstr (params.c) [210] initjob                [43] setupvals
 [179] countlinknodes        [262] initlextabs           [141] shingetline
 [200] createaliasnode       [211] initnewjob (jobs.c)   [286] signal_mask
 [201] createaliastable      [184] inittyptab            [161] singsub
 [236] createaliastables     [185] inpop                 [287] skipcomm (lex.c)
 [237] createbuiltintable    [186] inpoptop (input.c)    [216] skipparens
 [238] createcmdnamtable     [187] inpush                 [16] source
 [239] createhisttable       [138] inputline (input.c)   [288] spawnpipes (exec.c)
 [240] createnameddirtable   [135] inputsetline (input.c) [44] split_env_string (params.c)
 [241] createoptiontable      [38] insertlinknode         [75] strcatsub (subst.c)
 [122] createparam           [188] install_handler       [193] strgetfn
  [42] createparamtable      [145] intr                  [194] strinbeg
 [242] createreswdtable      [165] intsetfn (params.c)   [195] strinend
 [243] createshfunctable     [263] intvargetfn            [84] stringsubst (subst.c)
 [202] deletefilelist        [264] intvarsetfn           [125] strsetfn (params.c)
 [203] deletejob             [133] inungetc              [289] strsfx
 [180] dosetopt              [120] isident               [134] strucpy
 [164] dquote_parse (lex.c)  [265] isnumglob (lex.c)     [162] taddchr (text.c)
  [41] dupstring             [212] ispwd                  [95] taddlist (text.c)
  [86] dyncat                [266] langsetfn             [168] taddstr (text.c)
 [127] ecadd (parse.c)       [267] lexconstant (math.c)  [290] termgetfn
 [172] ecadjusthere (parse.c) [139] lexinit              [291] termsetfn
 [244] ecdel (parse.c)       [189] lexrestore            [292] tpush (text.c)
  [70] ecgetlist             [190] lexsave               [142] tricat
  [54] ecgetredirs           [268] load_module            [89] try_source_file
  [74] ecgetstr               [17] loop                  [108] ugetnode
 [181] ecispace (parse.c)    [269] matheval               [90] underscoregetfn
 [204] ecrawstr              [270] mathevali             [169] unmeta
  [55] ecstrcode (parse.c)   [271] mathevall (math.c)    [109] untokenize
 [245] emptycmdnamtable (hashtable.c) [272] mathparse (math.c) [196] useeprog
 [246] emptyhashtable        [130] metafy                [217] waitjobs
 [247] emulate               [156] mkarray                [32] wordcount
  [12] evalcond              [154] mkenvstr (params.c)    [21] xpandredir
 [128] exalias               [140] mmap_heap_alloc (mem.c) [50] yylex
  [29] execbuiltin           [273] modname_ok (module.c) [103] zalloc
  [20] execcmd (exec.c)      [274] module_linked         [163] zclose
  [13] execcond (exec.c)     [175] movefd                [293] zerr
 [248] execif                 [76] multsub (subst.c)     [294] zexit
  [11] execlist              [151] newhashtable          [124] zfree
   [4] execode                [68] newlinklist           [197] zgetenv
 [205] execpline (exec.c)    [275] newparamtable          [35] zglob
  [62] execpline2 (exec.c)    [87] newsizedlist           [37] zhalloc
  [14] execsimple (exec.c)   [100] nohw (hist.c)         [146] zinsertlinknode
  [18] execstring            [126] nohwe (hist.c)         [73] zjoin
 [206] export_param          [276] optlookupc            [149] znewlinklist
 [116] fetchvalue             [51] par_cmd (parse.c)     [295] zopenmax
 [110] filesub                [65] par_cond (parse.c)    [198] zputenv
 [111] filesubstr             [66] par_cond_1 (parse.c)  [143] zrealloc
 [150] find_module (module.c) [67] par_cond_2 (parse.c)  [121] zsfree
 [207] finddir                [91] par_cond_double (parse.c) [1] zsh_main
 [160] findenv (params.c)     [80] par_cond_triple (parse.c) [118] zshcalloc
  [26] findsep (utils.c)      [60] par_dinbrack (parse.c) [296] zstrtol
 [208] fixfds (exec.c)        [59] par_event (parse.c)   [107] ztrdup
 [249] freearray              [83] par_if (parse.c)      [297] ztrlen
 [182] freeeprog              [82] par_list (parse.c)    [155] ztrncpy
 [147] freeheap              [157] par_pline (parse.c)     [9] ztrsub
 [209] freejob                [71] par_redir (parse.c)   [218] zzlex (math.c)
  [39] get_match_ret (glob.c) [56] par_simple (parse.c)    [3] <cycle 1>
 [250] get_usage             [158] par_sublist (parse.c)  [45] <cycle 2>
 [251] getbaudrate           [159] par_sublist2 (parse.c)  [5] <cycle 3>
 [173] getconddef             [22] paramsubst

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23 16:26       ` Clint Adams
@ 2005-04-23 17:12         ` Bart Schaefer
  2005-04-24  0:33           ` Peter Stephenson
  2005-04-24  0:47           ` PATCH: " Bart Schaefer
  0 siblings, 2 replies; 11+ messages in thread
From: Bart Schaefer @ 2005-04-23 17:12 UTC (permalink / raw)
  To: zsh-workers

On Apr 23, 12:26pm, Clint Adams wrote:
}
} > What's calling pattryrefs() 28000+ times?  Is that how many lines there
} > are in /tmp/blah?
} 
} 231 lines, but 57093 chars.  pattrylen() seems to be called 57092 times
} by igetmatch.

OK, that makes sense.  igetmatch() has a for() loop that, when asked to
find every possible match within the string (e.g. by ${...//...}), calls
the pattern comparison once at every possible matching position.  Since
the pattern is only one character long (/,/), it calls it once for each
character in the string.

But pattry() recomputes the unmetafied length of the *entire* string on
each call.  So that length computation is going to have to be factored
out of pattry(), possibly by storing it in the Patprog the way that's
done for set_pat_start() and set_pat_end().

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-23 17:12         ` Bart Schaefer
@ 2005-04-24  0:33           ` Peter Stephenson
  2005-04-24  0:47           ` PATCH: " Bart Schaefer
  1 sibling, 0 replies; 11+ messages in thread
From: Peter Stephenson @ 2005-04-24  0:33 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> But pattry() recomputes the unmetafied length of the *entire* string on
> each call.  So that length computation is going to have to be factored
> out of pattry(), possibly by storing it in the Patprog the way that's
> done for set_pat_start() and set_pat_end().

The simplest thing to do is to pass an extra argument to pattrylen().
It's always a number readily calculable locally in the caller.

As the note says, it would be much simpler to have an unmetafied string
and its length.  Unfortunately, apart from complist(), that affects a
large number of calls to pattry() which currently pass a metafied
string.  Hmm, we could temporarily unmetafy in pattry(); that's not
called on internal loops, unlike igetmatch() (where we'd just need to
unmetafy once per call), so that's not so inefficient.

Index: Src/glob.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/glob.c,v
retrieving revision 1.39
diff -u -r1.39 glob.c
--- Src/glob.c	16 Mar 2005 11:51:15 -0000	1.39
+++ Src/glob.c	24 Apr 2005 00:27:34 -0000
@@ -2223,11 +2223,12 @@
 {
     char *s = *sp, *t;
     /*
-     * Note that ioff and ml count characters in the character
+     * Note that ioff and uml count characters in the character
      * set (Meta's are not included), while l counts characters in the
-     * string.
+     * metafied string.  umlen is a counter for (unmetafied) character
+     * lengths.
      */
-    int ioff, l = strlen(*sp), ml = ztrlen(*sp), matched = 1;
+    int ioff, l = strlen(*sp), uml = ztrlen(*sp), matched = 1, umlen;
 
     repllist = NULL;
 
@@ -2273,9 +2274,9 @@
 		     * ... now we know whether it's worth looking for the
 		     * shortest, which we do by brute force.
 		     */
-		    for (t = s; t < s + mlen; METAINC(t)) {
+		    for (t = s, umlen = 0; t < s + mlen; METAINC(t), umlen++) {
 			set_pat_end(p, *t);
-			if (pattrylen(p, s, t - s, 0)) {
+			if (pattrylen(p, s, t - s, umlen, 0)) {
 			    mlen = patmatchlen();
 			    break;
 			}
@@ -2290,9 +2291,10 @@
 	    /* Smallest possible match at tail of string:  *
 	     * move back down string until we get a match. *
 	     * There's no optimization here.               */
-	    for (ioff = ml, t = s + l; t >= s; t--, ioff--) {
+	    for (ioff = uml, t = s + l, umlen = 0; t >= s;
+		 t--, ioff--, umlen++) {
 		set_pat_start(p, t-s);
-		if (pattrylen(p, t, -1, ioff)) {
+		if (pattrylen(p, t, s + l - t, umlen, ioff)) {
 		    *sp = get_match_ret(*sp, t - s, l, fl, replstr);
 		    return 1;
 		}
@@ -2305,9 +2307,10 @@
 	    /* Largest possible match at tail of string:       *
 	     * move forward along string until we get a match. *
 	     * Again there's no optimisation.                  */
-	    for (ioff = 0, t = s; t < s + l; ioff++, t++) {
+	    for (ioff = 0, t = s, umlen = uml; t < s + l;
+		 ioff++, t++, umlen--) {
 		set_pat_start(p, t-s);
-		if (pattrylen(p, t, -1, ioff)) {
+		if (pattrylen(p, t, s + l - t, umlen, ioff)) {
 		    *sp = get_match_ret(*sp, t-s, l, fl, replstr);
 		    return 1;
 		}
@@ -2329,19 +2332,22 @@
 	    if (fl & SUB_GLOBAL)
 		repllist = newlinklist();
 	    ioff = 0;		/* offset into string */
+	    umlen = uml;
 	    do {
 		/* loop over all matches for global substitution */
 		matched = 0;
-		for (; t < s + l; t++, ioff++) {
+		for (; t < s + l; t++, ioff++, umlen--) {
 		    /* Find the longest match from this position. */
 		    set_pat_start(p, t-s);
-		    if (pattrylen(p, t, -1, ioff)) {
+		    if (pattrylen(p, t, s + l - t, umlen, ioff)) {
 			char *mpos = t + patmatchlen();
 			if (!(fl & SUB_LONG) && !(p->flags & PAT_PURES)) {
 			    char *ptr;
-			    for (ptr = t; ptr < mpos; METAINC(ptr)) {
+			    int umlen2;
+			    for (ptr = t, umlen2 = 0; ptr < mpos;
+				 METAINC(ptr), umlen2++) {
 				set_pat_end(p, *ptr);
-				if (pattrylen(p, t, ptr - t, ioff)) {
+				if (pattrylen(p, t, ptr - t, umlen2, ioff)) {
 				    mpos = t + patmatchlen();
 				    break;
 				}
@@ -2370,7 +2376,7 @@
 			 * which is already marked for replacement.
 			 */
 			matched = 1;
-			for ( ; t < mpos; t++, ioff++)
+			for ( ; t < mpos; t++, ioff++, umlen--)
 			    if (*t == Meta)
 				t++;
 			break;
@@ -2397,23 +2403,26 @@
 	    /* Longest/shortest at end, matching substrings.       */
 	    if (!(fl & SUB_LONG)) {
 		set_pat_start(p, l);
-		if (pattrylen(p, s + l, -1, ml) && !--n) {
+		if (pattrylen(p, s + l, 0, 0, uml) && !--n) {
 		    *sp = get_match_ret(*sp, l, l, fl, replstr);
 		    return 1;
 		}
 	    }
-	    for (ioff = ml - 1, t = s + l - 1; t >= s; t--, ioff--) {
+	    for (ioff = uml - 1, t = s + l - 1, umlen = 1; t >= s;
+		 t--, ioff--, umlen++) {
 		if (t > s && t[-1] == Meta)
 		    t--;
 		set_pat_start(p, t-s);
-		if (pattrylen(p, t, -1, ioff) && !--n) {
+		if (pattrylen(p, t, s + l - t, umlen, ioff) && !--n) {
 		    /* Found the longest match */
 		    char *mpos = t + patmatchlen();
 		    if (!(fl & SUB_LONG) && !(p->flags & PAT_PURES)) {
 			char *ptr;
-			for (ptr = t; ptr < mpos; METAINC(ptr)) {
+			int umlen2;
+			for (ptr = t, umlen2 = 0; ptr < mpos;
+			     METAINC(ptr), umlen2++) {
 			    set_pat_end(p, *ptr);
-			    if (pattrylen(p, t, ptr - t, ioff)) {
+			    if (pattrylen(p, t, ptr - t, umlen2, ioff)) {
 				mpos = t + patmatchlen();
 				break;
 			    }
@@ -2424,7 +2433,7 @@
 		}
 	    }
 	    set_pat_start(p, l);
-	    if ((fl & SUB_LONG) && pattrylen(p, s + l, -1, ml) && !--n) {
+	    if ((fl & SUB_LONG) && pattrylen(p, s + l, 0, 0, uml) && !--n) {
 		*sp = get_match_ret(*sp, l, l, fl, replstr);
 		return 1;
 	    }
Index: Src/pattern.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/pattern.c,v
retrieving revision 1.24
diff -u -r1.24 pattern.c
--- Src/pattern.c	19 Nov 2004 15:15:31 -0000	1.24
+++ Src/pattern.c	24 Apr 2005 00:28:03 -0000
@@ -1496,7 +1496,7 @@
 mod_export int
 pattry(Patprog prog, char *string)
 {
-    return pattryrefs(prog, string, -1, 0, NULL, NULL, NULL);
+    return pattryrefs(prog, string, -1, -1, 0, NULL, NULL, NULL);
 }
 
 /*
@@ -1507,19 +1507,22 @@
 
 /**/
 mod_export int
-pattrylen(Patprog prog, char *string, int len, int offset)
+pattrylen(Patprog prog, char *string, int len, int unmetalen, int offset)
 {
-    return pattryrefs(prog, string, len, offset, NULL, NULL, NULL);
+    return pattryrefs(prog, string, len, unmetalen, offset, NULL, NULL, NULL);
 }
 
 /*
- * Test prog against string with given length stringlen, which
- * may be -1 to indicate a null-terminated string.  The input
- * string is metafied; the length is the raw string length, not the
- * number of possibly metafied characters.
+ * Test prog against string with given lengths.  The input
+ * string is metafied; stringlen is the raw string length, and
+ * unmetalen the number of characters in the original string (some
+ * of which may now be metafied).  Either value may be -1
+ * to indicate a null-terminated string which will be counted.  Note
+ * there may be a severe penalty for this if a lot of matching is done
+ * on one string.
  *
  * offset is the position in the original string (not seen by
- * the patter module) at which we are trying to match.
+ * the pattern module) at which we are trying to match.
  * This is added in to the positions recorded in patbeginp and patendp
  * when we are looking for substrings.  Currently this only happens
  * in the parameter substitution code.
@@ -1535,10 +1538,11 @@
 
 /**/
 mod_export int
-pattryrefs(Patprog prog, char *string, int stringlen, int patoffset,
+pattryrefs(Patprog prog, char *string, int stringlen, int unmetalen,
+	   int patoffset,
 	   int *nump, int *begp, int *endp)
 {
-    int i, maxnpos = 0, ret, needfullpath, unmetalen, unmetalenp;
+    int i, maxnpos = 0, ret, needfullpath, unmetalenp;
     int origlen;
     char **sp, **ep, *tryalloced, *ptr;
     char *progstr = (char *)prog + prog->startoff;
@@ -1564,7 +1568,8 @@
     needfullpath = (patflags & PAT_HAS_EXCLUDP) && pathpos;
 
     /* Get the length of the full string when unmetafied. */
-    unmetalen = ztrsub(string + stringlen, string);
+    if (unmetalen < 0)
+	unmetalen = ztrsub(string + stringlen, string);
     if (needfullpath)
 	unmetalenp = ztrsub(pathbuf + pathpos, pathbuf);
     else
Index: Src/Zle/complist.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/complist.c,v
retrieving revision 1.67
diff -u -r1.67 complist.c
--- Src/Zle/complist.c	24 Feb 2005 15:32:42 -0000	1.67
+++ Src/Zle/complist.c	24 Apr 2005 00:28:30 -0000
@@ -601,7 +601,7 @@
 
     for (pc = c->pats; pc; pc = pc->next)
 	if ((!pc->prog || !group || pattry(pc->prog, group)) &&
-	    pattryrefs(pc->pat, n, -1, 0, &nrefs, begpos, endpos)) {
+	    pattryrefs(pc->pat, n, -1, -1, 0, &nrefs, begpos, endpos)) {
 	    if (pc->cols[1]) {
 		patcols = pc->cols;
 
@@ -639,7 +639,7 @@
 
     for (pc = c->pats; pc; pc = pc->next)
 	if ((!pc->prog || !group || pattry(pc->prog, group)) &&
-	    pattryrefs(pc->pat, n, -1, 0, &nrefs, begpos, endpos)) {
+	    pattryrefs(pc->pat, n, -1, -1, 0, &nrefs, begpos, endpos)) {
 	    if (pc->cols[1]) {
 		patcols = pc->cols;
 
-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[flat|nested] 11+ messages in thread

* PATCH: Re: replacement slowdown
  2005-04-23 17:12         ` Bart Schaefer
  2005-04-24  0:33           ` Peter Stephenson
@ 2005-04-24  0:47           ` Bart Schaefer
  2005-04-24  3:32             ` Bart Schaefer
  1 sibling, 1 reply; 11+ messages in thread
From: Bart Schaefer @ 2005-04-24  0:47 UTC (permalink / raw)
  To: zsh-workers

On Apr 23,  5:12pm, Bart Schaefer wrote:
}
} But pattry() recomputes the unmetafied length of the *entire* string on
} each call.  So that length computation is going to have to be factored
} out of pattry(), possibly by storing it in the Patprog

Here's a patch that does this.  The speed with this patch is back to
approximately the same as 4.0.6 on 20 repeats of processing the same
string, plus I think I caught a few more places that should have been
using METAINC().

Line numbers may be off slightly due to the state of the CVS sandbox in
which I was working.

Index: Src/zsh.h
===================================================================
RCS file: /extra/cvsroot/zsh/zsh-4.0/Src/zsh.h,v
retrieving revision 1.26
diff -c -r1.26 zsh.h
--- Src/zsh.h	14 Apr 2005 04:33:51 -0000	1.26
+++ Src/zsh.h	23 Apr 2005 18:15:03 -0000
@@ -1113,6 +1124,12 @@
     int			flags;	   /* PAT_* flags */
     int			patnpar;   /* number of active parentheses */
     char		patstartch;
+    /* The following is for optimization of repeated comparisons against
+     * The same target string.
+     */
+    char *		repeatstr;
+    long		unmetalen;
+    long		unmetalenp;
 };
 
 /* Flags used in pattern matchers (Patprog) and passed down to patcompile */
Index: Src/pattern.c
===================================================================
RCS file: /extra/cvsroot/zsh/zsh-4.0/Src/pattern.c,v
retrieving revision 1.11
diff -c -r1.11 pattern.c
--- Src/pattern.c	6 Dec 2004 16:51:18 -0000	1.11
+++ Src/pattern.c	23 Apr 2005 19:35:10 -0000
@@ -463,6 +463,8 @@
     p->size = patsize;
     p->patmlen = len;
     p->patnpar = patnpar-1;
+    p->repeatstr = 0;
+    p->unmetalen = p->unmetalenp = 0;
 
     if (!strp) {
 	pscan = (Upat)(patout + startoff);
@@ -1564,11 +1566,16 @@
     needfullpath = (patflags & PAT_HAS_EXCLUDP) && pathpos;
 
     /* Get the length of the full string when unmetafied. */
-    unmetalen = ztrsub(string + stringlen, string);
-    if (needfullpath)
-	unmetalenp = ztrsub(pathbuf + pathpos, pathbuf);
-    else
-	unmetalenp = 0;
+    if (prog->repeatstr) {
+	unmetalen = prog->unmetalen;
+	unmetalenp = prog->unmetalenp;
+    } else {
+	unmetalen = ztrsub(string + stringlen, string);
+	if (needfullpath)
+	    unmetalenp = ztrsub(pathbuf + pathpos, pathbuf);
+	else
+	    unmetalenp = 0;
+    }
 
     DPUTS(needfullpath && (patflags & (PAT_PURES|PAT_ANY)),
 	  "rum sort of file exclusion");
Index: Src/glob.c
===================================================================
RCS file: /extra/cvsroot/zsh/zsh-4.0/Src/glob.c,v
retrieving revision 1.17
diff -c -r1.17 glob.c
--- Src/glob.c	26 Mar 2005 16:14:05 -0000	1.17
+++ Src/glob.c	24 Apr 2005 00:33:47 -0000
@@ -2218,6 +2218,30 @@
 }
 
 /**/
+static void
+set_pat_repeat(Patprog p, char *string, int stringlen)
+{
+    int needfullpath = (p->flags & PAT_HAS_EXCLUDP) && pathpos;
+
+    p->repeatstr = string;
+    if (!string) {
+	p->unmetalen = p->unmetalenp = 0;
+	return;
+    }
+    if (stringlen < 0)
+	stringlen = strlen(string);
+
+    p->unmetalen = ztrsub(string + stringlen, string);
+    if (needfullpath)
+	p->unmetalenp = ztrsub(pathbuf + pathpos, pathbuf);
+    else
+	p->unmetalenp = 0;
+}
+
+#define PATDECR(p) (p->unmetalen--)
+#define PATINCR(p) (p->unmetalen++)
+
+/**/
 static int
 igetmatch(char **sp, Patprog p, int fl, int n, char *replstr)
 {
@@ -2273,13 +2297,15 @@
 		     * ... now we know whether it's worth looking for the
 		     * shortest, which we do by brute force.
 		     */
-		    for (t = s; t < s + mlen; METAINC(t)) {
+		    set_pat_repeat(p, s, 0);
+		    for (t = s; t < s + mlen; METAINC(t), PATINCR(p)) {
 			set_pat_end(p, *t);
 			if (pattrylen(p, s, t - s, 0)) {
 			    mlen = patmatchlen();
 			    break;
 			}
 		    }
+		    set_pat_repeat(p, 0, 0);
 		}
 		*sp = get_match_ret(*sp, 0, mlen, fl, replstr);
 		return 1;
@@ -2290,30 +2316,38 @@
 	    /* Smallest possible match at tail of string:  *
 	     * move back down string until we get a match. *
 	     * There's no optimization here.               */
-	    for (ioff = ml, t = s + l; t >= s; t--, ioff--) {
+	    set_pat_repeat(p, (t = s + l), -1);
+	    for (ioff = ml; t >= s; t--, PATINCR(p), ioff--) {
+		if (t > s && t[-1] == Meta)
+		    t--;
 		set_pat_start(p, t-s);
 		if (pattrylen(p, t, -1, ioff)) {
 		    *sp = get_match_ret(*sp, t - s, l, fl, replstr);
+		    set_pat_repeat(p, 0, 0);
 		    return 1;
 		}
 		if (t > s+1 && t[-2] == Meta)
 		    t--;
 	    }
+	    set_pat_repeat(p, 0, 0);
 	    break;
 
 	case (SUB_END|SUB_LONG):
 	    /* Largest possible match at tail of string:       *
 	     * move forward along string until we get a match. *
 	     * Again there's no optimisation.                  */
-	    for (ioff = 0, t = s; t < s + l; ioff++, t++) {
+	    set_pat_repeat(p, (t = s), -1);
+	    for (ioff = 0; t < s + l; ioff++, METAINC(t), PATDECR(p)) {
 		set_pat_start(p, t-s);
 		if (pattrylen(p, t, -1, ioff)) {
 		    *sp = get_match_ret(*sp, t-s, l, fl, replstr);
+		    set_pat_repeat(p, 0, 0);
 		    return 1;
 		}
 		if (*t == Meta)
 		    t++;
 	    }
+	    set_pat_repeat(p, 0, 0);
 	    break;
 
 	case SUB_SUBSTR:
@@ -2332,20 +2366,24 @@
 	    do {
 		/* loop over all matches for global substitution */
 		matched = 0;
-		for (; t < s + l; t++, ioff++) {
+		set_pat_repeat(p, t, -1);
+		for (; t < s + l; METAINC(t), PATDECR(p), ioff++) {
 		    /* Find the longest match from this position. */
 		    set_pat_start(p, t-s);
 		    if (pattrylen(p, t, -1, ioff)) {
 			char *mpos = t + patmatchlen();
 			if (!(fl & SUB_LONG) && !(p->flags & PAT_PURES)) {
 			    char *ptr;
-			    for (ptr = t; ptr < mpos; METAINC(ptr)) {
+			    set_pat_repeat(p, t, 0);
+			    for (ptr = t; ptr < mpos;
+				 METAINC(ptr), PATINCR(p)) {
 				set_pat_end(p, *ptr);
 				if (pattrylen(p, t, ptr - t, ioff)) {
 				    mpos = t + patmatchlen();
 				    break;
 				}
 			    }
+			    set_pat_repeat(p, t, -1);
 			}
 			if (!--n || (n <= 0 && (fl & SUB_GLOBAL))) {
 			    *sp = get_match_ret(*sp, t-s, mpos-s, fl, replstr);
@@ -2362,6 +2400,7 @@
 				 */
 				continue;
 			    } else {
+				set_pat_repeat(p, 0, 0);
 				return 1;
 			    }
 			}
@@ -2379,6 +2418,7 @@
 			t++;
 		}
 	    } while (matched);
+	    set_pat_repeat(p, 0, 0);
 	    /*
 	     * check if we can match a blank string, if so do it
 	     * at the start.  Goodness knows if this is a good idea
@@ -2402,7 +2442,8 @@
 		    return 1;
 		}
 	    }
-	    for (ioff = ml - 1, t = s + l - 1; t >= s; t--, ioff--) {
+	    set_pat_repeat(p, (t = s + l - 1), -1);
+	    for (ioff = ml - 1; t >= s; --t, PATINCR(p), ioff--) {
 		if (t > s && t[-1] == Meta)
 		    t--;
 		set_pat_start(p, t-s);
@@ -2411,7 +2452,9 @@
 		    char *mpos = t + patmatchlen();
 		    if (!(fl & SUB_LONG) && !(p->flags & PAT_PURES)) {
 			char *ptr;
-			for (ptr = t; ptr < mpos; METAINC(ptr)) {
+			set_pat_repeat(p, t, 0);
+			for (ptr = t; ptr < mpos;
+			     METAINC(ptr), PATINCR(p)) {
 			    set_pat_end(p, *ptr);
 			    if (pattrylen(p, t, ptr - t, ioff)) {
 				mpos = t + patmatchlen();
@@ -2420,9 +2463,11 @@
 			}
 		    }
 		    *sp = get_match_ret(*sp, t-s, mpos-s, fl, replstr);
+		    set_pat_repeat(p, 0, 0);
 		    return 1;
 		}
 	    }
+	    set_pat_repeat(p, 0, 0);
 	    set_pat_start(p, l);
 	    if ((fl & SUB_LONG) && pattrylen(p, s + l, -1, ml) && !--n) {
 		*sp = get_match_ret(*sp, l, l, fl, replstr);


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-24  0:47           ` PATCH: " Bart Schaefer
@ 2005-04-24  3:32             ` Bart Schaefer
  2005-04-24 16:46               ` Bart Schaefer
  0 siblings, 1 reply; 11+ messages in thread
From: Bart Schaefer @ 2005-04-24  3:32 UTC (permalink / raw)
  To: zsh-workers

On Apr 24,  1:33am, Peter Stephenson wrote:
}
} The simplest thing to do is to pass an extra argument to pattrylen().

On Apr 24, 12:47am, Bart Schaefer wrote:
} 
} Here's a patch that does this [by storing it in the Patprog]
} plus I think I caught a few more places that should have been
} using METAINC().

I agree Peter's solution is simpler, but I think it ought to get merged
with my extra METAINC()s and related changes.  Maybe the needfullpath
part of mine is irrelevant.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: replacement slowdown
  2005-04-24  3:32             ` Bart Schaefer
@ 2005-04-24 16:46               ` Bart Schaefer
  0 siblings, 0 replies; 11+ messages in thread
From: Bart Schaefer @ 2005-04-24 16:46 UTC (permalink / raw)
  To: zsh-workers

On Apr 24,  3:32am, Bart Schaefer wrote:
}
} I agree Peter's solution is simpler, but I think it ought to get merged
} with my extra METAINC()s and related changes.

Here's that patch:

Index: Src/glob.c
--- ../zsh-forge/current/Src/glob.c	Sun Apr 24 09:22:59 2005
+++ Src/glob.c	Sun Apr 24 09:41:32 2005
@@ -2293,6 +2293,8 @@
 	     * There's no optimization here.               */
 	    for (ioff = uml, t = s + l, umlen = 0; t >= s;
 		 t--, ioff--, umlen++) {
+		if (t > s && t[-1] == Meta)
+		    t--;
 		set_pat_start(p, t-s);
 		if (pattrylen(p, t, s + l - t, umlen, ioff)) {
 		    *sp = get_match_ret(*sp, t - s, l, fl, replstr);
@@ -2308,7 +2310,7 @@
 	     * move forward along string until we get a match. *
 	     * Again there's no optimisation.                  */
 	    for (ioff = 0, t = s, umlen = uml; t < s + l;
-		 ioff++, t++, umlen--) {
+		 ioff++, METAINC(t), umlen--) {
 		set_pat_start(p, t-s);
 		if (pattrylen(p, t, s + l - t, umlen, ioff)) {
 		    *sp = get_match_ret(*sp, t-s, l, fl, replstr);
@@ -2336,7 +2338,7 @@
 	    do {
 		/* loop over all matches for global substitution */
 		matched = 0;
-		for (; t < s + l; t++, ioff++, umlen--) {
+		for (; t < s + l; METAINC(t), ioff++, umlen--) {
 		    /* Find the longest match from this position. */
 		    set_pat_start(p, t-s);
 		    if (pattrylen(p, t, s + l - t, umlen, ioff)) {


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2005-04-24 16:47 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-22 23:23 replacement slowdown Clint Adams
2005-04-23  3:14 ` Bart Schaefer
2005-04-23  3:19   ` Clint Adams
2005-04-23 16:07     ` Bart Schaefer
2005-04-23 16:26       ` Clint Adams
2005-04-23 17:12         ` Bart Schaefer
2005-04-24  0:33           ` Peter Stephenson
2005-04-24  0:47           ` PATCH: " Bart Schaefer
2005-04-24  3:32             ` Bart Schaefer
2005-04-24 16:46               ` Bart Schaefer
2005-04-23 16:25     ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).