GNU和zsh时间命令之间的差异

时间:2016-06-29 17:59:36

标签: bash time zsh gnu

我试图使用GNU和zsh time命令的最大内存输出,并试图调和我在输出中看到的差异。我的最终目标是捕获运行不同大小数据集的程序的峰值RAM使用率。要使用zsh,我一直关注this example

$ zsh -i -c 'time ls' > hold
ls --color=auto   0.00s  user 0.00s system 40% cpu 0.002 total
avg shared (code):         0 KB
avg unshared (data/stack): 0 KB
total (sum):               0 KB
max memory:                0 MB
page faults from disk:     0
other page faults:         335

有了GNU时间,我明白了......

$ /usr/bin/time -f %M ls > hold
3632

认为这个GNU时间告诉我ls使用了3.6 KB的RAM,但是zsh版本没有使用。当我重复这个以获得更加强硬的命令时,我也会有所不同......

$zsh -i -c 'time program > hold'
program  > hold   16.36s  user 0.64s system 99% cpu 17.063 total
avg shared (code):         0 KB
avg unshared (data/stack): 0 KB
total (sum):               0 KB
max memory:                94 MB
page faults from disk:     0
other page faults:         25361

当我观看顶部屏幕时,看起来RES列的峰值出现在94 MB,尽管VIRT列为127 MB。按GNU时间......

$ /usr/bin/time -f %M my_program > hold
387088

或~387 MB。

任何人都可以帮我弄清楚为什么会有这些差异以及我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

我不认为zsh有时间命令。可能是错的,但是DUMP X;看起来像是“运行此shell命令”,因此它正在搜索-c的路径,并且可能找到了您在bash中运行的time

可能的区别在于格式化。尝试将相同的/usr/bin/time传递给zsh调用。

http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html没有显示内置的时间。你正在以两种方式运行sane命令(取决于你的路径中的内容)。