以下命令为我提供了完整的步骤跟踪
zsh -i -c -x exit > trace 2>&1
Run Code Online (Sandbox Code Playgroud)
我希望它能够在每个精确步骤旁边(例如作为第一列)捕获该步骤花费的时间。
Zsh 是否提供了一种简单的方法来做到这一点?
您可以轻松获得接近的内容(使用相当新的版本):每个步骤的时间戳。来自以下文档-x:
\n\n\n输出前面是 $PS4 的值,其格式如提示扩展中所述。
\n
您可以在跟踪前缀中添加时间戳。%.使用 zsh \xe2\x89\xa55.6 为您提供纳秒精度,仅微秒精度在 5.0.6 和 5.5.x 之间。我认为在早期版本中,没有%D,您只能获得第二精度。
PS4=\'+%D{%s.%9.}:%N:%i>\' zsh -x \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\n然后,您可以对跟踪进行后处理以计算连续时间戳之间的差异。
\n\n<trace awk -F: \'{printf "+%.09f", $1 - t; t=$1; $1=""; print}\'\nRun Code Online (Sandbox Code Playgroud)\n