我将 prezto 与 一起使用zsh
,发现启动新 shell 有点慢。 (注意,在将我的配置转移到其他较慢的系统之前,我正在尝试在快速系统上进行优化。)
基准测试time zsh -i -c exit
:
- 0.046
bash
:. - 0.080:
zsh
无 prezto。 - 0.092:
zsh
带有 prezto,但未加载模块。 - 0.138:
zsh
使用 prezto,并加载所有“默认”模块,除了completion
. - 0.308:
zsh
使用 prezto,并加载所有“默认”模块。
首先,zsh
比bash
加载慢 74%。我可以接受 73% 的进一步减速(使用 prezto 和除完成加载之外的所有模块),但 285% 的减速(使用所有模块)有点太多了。
其中一些补全是有用的,所以有没有办法选择性地禁用其中一些?我听说过这个别处,尽管我不确定这是否只是为了提高制表符完成速度,还是为了提高外壳加载速度。 (如果我可以有选择地禁用完成,这将允许我分析并找出导致速度减慢的原因。)
答案1
看来 prezto 正在从 加载模块/usr/lib/prezto/modules/completion
。启用所有功能后,我删除了 的内容/usr/lib/prezto/modules/completion/init.zsh
,这再次给了我第二快的加载时间。然后,我开始系统地删除该文件中的行,并且可以隔离导致速度减慢的单行。
unsetopt CASE_GLOB
注意,在我的具体情况下,速度减慢是由compinit
我的~/.zshrc
.据推测,prezto 也在关闭情况下运行compinit
,导致加载时间增加两倍。