【发布时间】:2009-02-24 21:52:51
【问题描述】:
我有一个程序以两种不同的模式运行。我想比较两种模式的运行时间和内存要求。使用time 可以轻松确定运行时间。事实上,在这种情况下,它真的很容易,因为程序会在测试结束时报告 CPU 时间和挂钟时间。但是,确定内存使用情况有点困难。
如何获取进程在其整个生命周期内的内存使用情况的详细信息?我想知道最大使用量和平均值。事实上,理想情况下,我想要一些运行期间内存使用情况的图表。
【问题讨论】:
我有一个程序以两种不同的模式运行。我想比较两种模式的运行时间和内存要求。使用time 可以轻松确定运行时间。事实上,在这种情况下,它真的很容易,因为程序会在测试结束时报告 CPU 时间和挂钟时间。但是,确定内存使用情况有点困难。
如何获取进程在其整个生命周期内的内存使用情况的详细信息?我想知道最大使用量和平均值。事实上,理想情况下,我想要一些运行期间内存使用情况的图表。
【问题讨论】:
time 具有详细模式,可为您提供最大和平均驻留集大小。(驻留集大小是进程内存中保存在 RAM 中的部分)。
$ /usr/bin/time -v command_that_needs_to_measured |& grep resident
Maximum resident set size (kbytes): 6596
Average resident set size (kbytes): 0
记得使用二进制/usr/bin/time,它有一个-v 选项。您可以通过运行man time 查看其文档。如果你没有指定它的路径,bash 的内置 time 将运行,没有有一个 -v 选项。您可以在 bash 手册页或运行 help time 查看其文档。
【讨论】:
Valgrind 的 massif 工具可以为您提供一段时间内的内存使用情况图表。见http://valgrind.org/docs/manual/ms-manual.html
【讨论】: