前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iTerm2 冷启动提速

iTerm2 冷启动提速

作者头像
AlphaHinex
发布2024-04-09 20:19:41
1170
发布2024-04-09 20:19:41
举报
文章被收录于专栏:周拱壹卒周拱壹卒

iTerm2 在升级系统之后,冷启动(开机后第一次启动)的速度异常的慢,需要几十秒才能进入可用状态。之后无论是开新窗口还是退出重进的速度都还挺正常的。

虽然升级系统之前冷启动速度也不快,但并没有慢到这么令人难以忍受。

经过几轮较量,最终恢复了秒级冷启动。将过程和尝试的办法记录如下。

TL;DR: Final Round —— git

效果最明显的改动:将系统自带的 Apple Git 替换为 Homebrew[1] 中的 Git:

参考资料:

  • macOS开机iterm2 + oh my zsh会显示xcodebuild[2]
  • vi-mode plugin makes zsh painfully slow in OSX Mavericks[3]

Round 0:zprof

要解决慢的问题,首先得知道慢在什么地方了。

系统使用的默认 shell 是 zsh[4]zsh 中有一个性能监控模块 22.35 The zsh/zprof Module[5],可以输出所有函数的调用时间。

~/.zshrc 文件的最前面加上:

最后面加上:

之后每次打开 iTerm2 时,就会看到一个类似下面的统计信息:

统计信息分为两部分:

  1. 概述:按每个函数自身的总耗时(self 下的第一列。timeself 分别有三列)降序排序,单位是毫秒
  2. 详情:列出了每个被调用的函数的详细信息

可以看到,耗时排名前几位的:nvmcondaoh my zsh

参考资料:

  • 解决zsh启动速度慢的优化方法[6]

Round 1:nvm

因为只是偶尔需要使用 nvm 切换 node 版本,故在 .zshrc 中添加懒加载脚本,将 nvm 的初始化从每次打开终端延迟到首次使用相关命令时。

.zshrc 中注掉如下内容:

.zshrc 中添加如下内容:

一顿操作之后,除了 zprof 中看不到 nvm 相关函数了,冷启动速度并无太大起色。

参考资料:

  • 我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化[7]
  • How to fix nvm slowing down terminal initialisation[8]

Round 2:conda

之前安装 miniconda[9] 之后,每次进入终端会激活 base 环境,当时只是简单粗暴的在 .zshrc 中添加了一条 conda deactivate 命令,所以在 zprof 中可以看到 __conda_activate 还是执行并且消耗了不少时间。

~/.condarc 中添加如下行取消 conda 的自动激活,并去掉 conda deactive 命令:

再次打开 iTerm2,zprof 中已经没有了 conda 相关的函数,但冷启动速度依然很慢。

参考资料:

  • 一打开终端就默认进入conda的base环境,取消方法[10]

Round 3:oh my zsh

一直以为 iTerm2 在使用了 oh my zsh 之后冷启动慢是因为启动的时候会去进行 omz 的自动更新导致的,根据使用的版本,在 .zshrc 中关闭自动更新:

老版本:

新版本:

事实证明,冷启动慢跟这个也没有关系。

参考资料:

  • 关闭Oh my zsh自动更新[11]

Round 4:xcodebuild

过了三招,此时 zprof 的结果中已经没有了什么耗时大户,然而冷启动时间依然慢的令人发指。

iTerm2 冷启动时,标题栏确有出现过 xcode 相关的字样,参照 每个终端命令后触发xcodebuild[12] 中提到的方式接受了 xcodebuild 的许可:

依旧没有什么改变。不过二楼的回复内容,最终引导我走向 Final Round 彻底解决了 iTerm2 冷启动速度慢的问题。

参考资料

[1]

Homebrew: https://brew.sh/

[2]

macOS开机iterm2 + oh my zsh会显示xcodebuild: https://blog.csdn.net/lxyoucan/article/details/116259842

[3]

vi-mode plugin makes zsh painfully slow in OSX Mavericks: https://github.com/ohmyzsh/ohmyzsh/issues/2189

[4]

zsh: https://alphahinex.github.io/2020/12/13/zsh/

[5]

22.35 The zsh/zprof Module: https://zsh.sourceforge.io/Doc/Release/Zsh-Modules.html#The-zsh_002fzprof-Module

[6]

解决zsh启动速度慢的优化方法: https://zhuanlan.zhihu.com/p/68303393

[7]

我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化: https://blog.skk.moe/post/make-oh-my-zsh-fly/

[8]

How to fix nvm slowing down terminal initialisation: https://www.growingwiththeweb.com/2018/01/slow-nvm-init.html

[9]

miniconda: https://alphahinex.github.io/2024/01/14/jupyter-lab-in-action/

[10]

一打开终端就默认进入conda的base环境,取消方法: https://blog.csdn.net/weixin_43698781/article/details/124154268

[11]

关闭Oh my zsh自动更新: https://juejin.cn/post/6923448225571700750

[12]

每个终端命令后触发xcodebuild: https://qastack.cn/apple/119864/xcodebuild-firing-after-every-terminal-command

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 周拱壹卒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TL;DR: Final Round —— git
  • Round 0:zprof
  • Round 1:nvm
  • Round 2:conda
  • Round 3:oh my zsh
  • Round 4:xcodebuild
相关产品与服务
应用性能监控
应用性能监控(Application Performance Management,APM)是一款应用性能管理平台,基于实时多语言应用探针全量采集技术,为您提供分布式性能分析和故障自检能力。APM 协助您在复杂的业务系统里快速定位性能问题,降低 MTTR(平均故障恢复时间),实时了解并追踪应用性能,提升用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档