使用这些命令,您应该能够对启动时间进行基准测试,包括 rc 文件的来源(+ 一次打印调用,不会增加太多开销):
time zsh -i -c "print -n"
time bash -i -c "echo -n"
Run Code Online (Sandbox Code Playgroud)
.zshrc在我的 cygwin 安装中有 1000 多行这需要 0.3 秒。不,它真的不是高端机器(iCore2Duo P8700)。
关于提示渲染时间:
在bash有可能time的内置命令。但是,我不知道是否有可能$PS1作为提示进行渲染。
在zsh它的另一种方式圆,与print -P $PS1 $RPS1您可以使您及时与打印命令。(man zshbuiltins:“ [print] -P 执行提示扩展”)。但似乎时间不适用于内置命令。这就是为什么我把这个混在一起的原因:
cumul=0; for i ({0..99}) {
start=$(date +%s.%N)
end=$(date +%s.%N)
(( cumul+= (end-start) ))
}
overhead=$((cumul/100.))
cumul=0; for i ({0..99}) {
start=$(date +%s.%N)
print -P $PS1 $RPS1
end=$(date +%s.%N)
(( cumul+= (end-start) ))
}
print $((cumul/100. - overhead))
Run Code Online (Sandbox Code Playgroud)
首先,这测量了由date命令引起的开销。为了更好的统计,它做了 100 次。然后print -P $PS1 $RPS1包含,也执行100次,减去第一部分确定的开销。连续调用表明您不能信任 1ms 数字,但 10ms 数字似乎可靠。以秒为单位的预期值就足够了。
但是,正如@Michael Kjörling 已经在评论中提到的,提示应该立即呈现。因此,您应该考虑如何优化提示或考虑到,根据我的经验,提示呈现时间(如您的问题)只是提示显示时间的一小部分。(我在这里主要讲的是 Z shell,但我假设在 bash 中也有类似的概念。)因为在显示提示之前还有其他函数会被执行。这是我立即想到的:
precmd: 每次提示前执行;用于which precmd查看您的情况sharedhistory启用了该选项,~/.zsh_history则会读取文件(或您命名的任何文件)。特别是如果您的主目录位于远程文件系统上,则可能会导致显着延迟。当 NFS 服务器负载过重时,我也会在显示提示之前的几秒钟内偶尔观察一下。详细分析外部程序/内部函数的时间需求的工具是zsh/zprof模块,由
zmodload zsh/zprof
Run Code Online (Sandbox Code Playgroud)
来自man zshmodules:“加载时,zsh/zprof 会导致对 shell 函数进行分析。分析结果可以通过该模块提供的 zprof 内置命令获得。”
| 归档时间: |
|
| 查看次数: |
2449 次 |
| 最近记录: |