mirror of
https://github.com/pyenv/pyenv.git
synced 2024-11-14 20:39:55 -05:00
Workaround for performance issue with conda.txt
The performance issue must be caused by too many I/O requests to `conda.txt` from fgrep. This inline expansion should work to reduce # of read to the `conda.txt`. original performance: ``` % git rev-parse HEAD4f76be6a12
% time bash -c 'pyenv rehash' bash -c 'pyenv rehash' 0.05s user 0.02s system 76% cpu 0.089 total ``` previous commit: ==> 4x slower than original ``` % git rev-parse HEAD4469d51ef7
% time bash -c 'pyenv rehash' bash -c 'pyenv rehash' 0.06s user 0.03s system 25% cpu 0.358 total ``` with this workaround: ==> almost same as original ``` % git rev-parse HEAD 3ffe91bdbc69220eaecf6e2088229cc27366c3f3 % time bash -c 'pyenv rehash' bash -c 'pyenv rehash' 0.05s user 0.00s system 68% cpu 0.082 total ```
This commit is contained in:
parent
4469d51ef7
commit
d8559b9749
1 changed files with 7 additions and 3 deletions
|
@ -11,9 +11,13 @@ conda_exists() {
|
|||
[ -n "${condas}" ]
|
||||
}
|
||||
|
||||
conda_shim() {
|
||||
sed -e 's/#.*//' "${BASH_SOURCE%/*}/conda.txt" | fgrep -q -x "${1##*/}"
|
||||
}
|
||||
shims=()
|
||||
for shim in $(cat "${BASH_SOURCE%/*}/conda.txt"); do
|
||||
if [ -n "${shim%%#*}" ]; then
|
||||
shims[${#shims[*]}]="${shim})return 0;;"
|
||||
fi
|
||||
done
|
||||
eval "conda_shim(){ case \"\$1\" in ${shims[@]} *)return 1;;esac;}"
|
||||
|
||||
# override `make_shims` to avoid conflict between pyenv-virtualenv's `envs.bash`
|
||||
# https://github.com/yyuu/pyenv-virtualenv/blob/v20160716/etc/pyenv.d/rehash/envs.bash
|
||||
|
|
Loading…
Reference in a new issue