gpt4 book ai didi

profiling - 如何分析 Fish shell init?

转载 作者:行者123 更新时间:2023-12-04 14:37:10 26 4
gpt4 key购买 nike

有没有办法查看当我启动一个新 shell 时每件事花费了多少时间(例如一些正在运行的函数等)。
是否可以?
我唯一能想到的帮助就是做这样的事情:

~
λ time fish -i -c exit

________________________________________________________
Executed in 142.29 millis fish external
usr time 76.19 millis 68.00 micros 76.12 millis
sys time 61.52 millis 469.00 micros 61.05 millis
然后试图取出东西并再次测量......虽然并不理想。

最佳答案

Fish 具有内置的分析功能。
从fish 3.2开始,它有--profile仅分析您提供的命令和 --profile-startup在此之前分析启动时间 --profile将两者结合在一起。
使用喜欢

fish --profile-startup /tmp/fish.profile -i -c exit
这将创建一个名为“/tmp/fish.profile”的文件,看起来像
Time    Sum Command
415 2505 > builtin source /usr/share/fish/config.fish
15 15 -> set -g IFS \n\ \t
6 6 -> set -qg __fish_added_user_paths
4 4 -> set -g __fish_added_user_paths
1 4 -> if not set -q __fish_initialized...
3 3 --> not set -q __fish_initialized
3 3 -> function __fish_default_command_not_found_handler...
4 72 -> if status --is-interactive...
第一列是命令本身花费的时间(以微秒为单位,所以 1000000 是 1s),第二列是它和它的所有部分(包括函数调用和命令替换)花费的时间,第三列是命令加上一个指示这是调用堆栈的深处。
看最大的一次投资 sort -nk2 /tmp/fish.profile很有用 - 这按第二列排序,因此它将最后显示大票项目(即最接近下一个提示)。
请注意,这也显示了 fish 的内部启动 - 即 set -g IFS例如是 fish 内部的东西,但这往往很快,所以它不会突出。

关于profiling - 如何分析 Fish shell init?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63290042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com