我有一个程序在两种不同的模式下运行。我想比较这两种模式在运行时和内存需求方面的差异。使用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