Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

excessive memory usage?



I received this bug report last week.  Due to lack of time,
I haven't had a chance to look into it thoroughly, but I
just tried it out, and it did suck up (rather slowly) about
42 megs (temporarily) before it finally completed.

I'm guessing that this happens during compadd.  So is this
evidence of some inefficiency or is all that memory necessary?

As for the second issue, I grabbed a vera.index that is probably
more recent (it has 9109 lines), and zsh happily completes from all
of the 6380 unique values.  I assume that his 7617->5996 effect
is also from duplicate values.

----- Forwarded message -----

Hi,

I have ~/.zshfunc directory in $fpath, and I made _dict file and put it
there. That file contained:

#compdef dict
_arguments '*:dictword:_dictwords'

The file _dictwords in the same directory contained:

#autoload

local expl dictwords

dictwords=($(awk '{print $1}' /usr/share/dictd/*.index))

_wanted dictwords expl dictword \
  compadd -M 'm:{a-zA-Z}={A-Za-z} r:|=*' "$@" - "$dictwords[@]"

The intent was to get 'dict <TAB>' to complete words from dictd's
dictionaries.

I also tried this to define $dictwords:

(( $+_cache_dictwords )) || \
  : ${(A)_cache_dictwords:=${${(f)"$(</usr/share/dictd/wn.index)"}%%[   ]*}}

dictwords=("$_cache_dictwords[@]")

(wn.index is the largest file from there)

The result was the same for both cases, pressing 'dict <TAB>' produced an
unusable shell (^C or ^\ didn't exit), which sucked up loads of memory, 42MB
at one time (and then I killed it).

% awk '{print $1}' /usr/share/dictd/*.index | wc -lc
 143539 1203636

1.2MB of data shouldn't take that much memory to get parsed. :)
Note that it worked when I used just one smaller index file:

% awk '{print $1}' /usr/share/dictd/vera.index | wc -lc
   7617   35197

But, after typing 'dict <TAB>', zsh said:

zsh: do you wish to see all 5996 possibilities?

The array was limited to ~6000 entries?

Please fix this, TIA.

----- End forwarded message -----



Messages sorted by: Reverse Date, Date, Thread, Author