我试图使用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。
任何人都可以帮我弄清楚为什么会有这些差异以及我在这里缺少什么?
答案 0 :(得分:1)
我不认为zsh有时间命令。可能是错的,但是DUMP X;
看起来像是“运行此shell命令”,因此它正在搜索-c
的路径,并且可能找到了您在bash中运行的time
。
可能的区别在于格式化。尝试将相同的/usr/bin/time
传递给zsh调用。
http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html没有显示内置的时间。你正在以两种方式运行sane命令(取决于你的路径中的内容)。