小智 37
oh-my-zsh在我的笔记本电脑上启动大约需要 1.5 秒。 我写了一些我采取的步骤,以将其缩短到大约 0.25 秒。
另一个好心人总结了将我的更改集成到您的 oh-my-zsh副本所需的步骤。
最大的问题是compinit在 fpath 完全定义后被调用了一大堆额外的时间,而不是仅仅一次。我在我的oh-my-zshgithub分支上进行了这些更改。这些更改已在 github 上进行了讨论,它们似乎对一些人运行良好。希望这些更改将oh-my-zsh在不久的将来合并。
kyl*_*iss 31
虽然 ZSH 有自己公平的减速份额,但如果您在看到该Last Login:行之前发现终端窗口有一段时间是空白的,则您将需要清除日志文件以查看速度改进。从 OSX Lion 开始,这仍然是一个问题,需要每隔几个月进行一次。跛脚,我知道。
命令是:
sudo rm -rf /private/var/log/asl/*.asl
Run Code Online (Sandbox Code Playgroud)
当然,你需要事先阅读这篇文章,这样你才能确切地知道发生了什么,因为运行任何所说的都sudo rm需要考虑。我把它放在这里只是因为你使用 ZSH 证明你有能力使用命令行启动。
小智 8
你是用预装的/bin/zsh还是其他的?我问,因为我通过 fink 安装的 zsh 由于包含zsh 模板而启动非常慢,而 vanilla 会立即启动。
使用显式转储文件 ( compinit -d dumpfile)运行会使其运行得更快吗?手册页指出
下一次调用 compinit 将读取转储文件而不是执行完全初始化。
现在 oh-my-zsh 在查询状态之前检查特殊的 git 配置选项 oh-my-zsh.hide-status。所以运行
git 配置 oh-my-zsh.hide-status 1
在有问题的存储库上。
Zsh 本身在 0.1 秒内启动,对我来说已经足够了。我刚刚注意到,当我接近 50,000 个命令历史记录标记时,加载第一个提示变得更像是 3 秒。
我不知道你们是如何找到所有这些导致启动缓慢的其他原因的,但我的猜测正是我的第一个猜测。我做了一个mv ~/.zsh_history zsh_history_backup和 bam,3 秒启动现在是 0.1 秒启动。奇怪的是,/usr/bin/time /bin/zsh -i -c exit未能捕获加载历史记录所需的时间。
但是,如果您的 zsh 历史记录中没有数以万计的命令,那么这不是它。我~/.zsh_history测量了 1.8MB。很可能不小心将一大块东西作为命令粘贴到终端中,这也会使历史迅速膨胀(尽管这是非常需要避免的事情,因为它显然具有极大的破坏性)。
小智 6
就我而言,NVM 让它变慢了。
原始代码(在 .bash_profile,.zshrc 加载我的 bash_profile)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Run Code Online (Sandbox Code Playgroud)
我已将其更改为:
export NVM_DIR="$HOME/.nvm"
#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
alias nvm="unalias nvm; [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; nvm $@"
Run Code Online (Sandbox Code Playgroud)
添加了别名(最后一行),所以我只会在尝试使用它时加载 NVM。它将加载时间从 1.5 秒减少到 0.2 秒。
/usr/bin/time zsh -i -c exit #If you want to time yours
Run Code Online (Sandbox Code Playgroud)