大多数在线法官都有某种系统来测量执行时间和内存消耗。 此处显示了一个示例。它是如何完成的?是否有一个简单的 UNIX 实用程序可以用来在我自己的程序上运行类似的测试?
Valgrind 及其所有工具将为您提供一些信息:
cachegrind
- 缓存模拟器callgrind
- 调用图跟踪 - 允许获取调用成本并显示程序中发生的情况massif
- 有关堆内存使用情况的信息memcheck
- 内存泄漏检查此外,您还可以使用更复杂的软件,例如Intel VTune。
如果您对底层细节和真正的硬件计数器感兴趣,请查看 perfmon2,它有机会在未来的某个时候进入主流内核。
并搜索旧问题 - 有很多关于这个主题的帖子。
上次我需要分析 Unix 程序时,我使用了 gcc 和 gprof。它为我提供了我需要的信息。
您可以使用
timeout
命令为您的程序设置时间限制。
对于空间检查,您可以循环运行它。 pmap $(pgrep -f -u username program) | sed -n -e 's/ total \+//p'
获取程序当前的内存使用情况。