跟踪并计时 shell 初始化的每一步

跟踪并计时 shell 初始化的每一步

以下命令为我提供了完整的步骤跟踪

zsh -i -c -x exit > trace 2>&1

我希望它也能捕捉到,在每个具体步骤旁边(例如作为第一列),该步骤花费了多长时间。

Zsh 是否提供了一种简单的方法来做到这一点?

答案1

您可以轻松获得接近的内容(使用相当新的版本):每个步骤的时间戳。来自的文档-x

输出前面是 $PS4 的值,其格式如中所述迅速扩张

你可以把一个时间戳在跟踪前缀中。%.为您提供纳秒精度,zsh ≥5.6,仅微秒精度在 5.0.6 和 5.5.x 之间。我认为在早期版本中,没有%D,您只能获得第二精度。

PS4='+%D{%s.%9.}:%N:%i>' zsh -x …

然后,您可以对跟踪进行后处理以计算连续时间戳之间的差异。

<trace awk -F: '{printf "+%.09f", $1 - t; t=$1; $1=""; print}'

相关内容