Просмотр исходного кода

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 HEAD
4f76be6a12
% 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 HEAD
4469d51ef7
% 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
3ffe91bdbc
% time bash -c 'pyenv rehash'
bash -c 'pyenv rehash'  0.05s user 0.00s system 68% cpu 0.082 total
```
pull/670/head
Yamashita, Yuu 10 лет назад
Родитель
Сommit
d8559b9749
1 измененных файлов: 7 добавлений и 3 удалений
  1. +7
    -3
      pyenv.d/rehash/conda.bash

+ 7
- 3
pyenv.d/rehash/conda.bash Просмотреть файл

@ -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

Загрузка…
Отмена
Сохранить