我有几个我想比较性能的程序变体。两者都执行基本相同的任务。
一个人在 C 和内存中完成所有工作。另一个调用外部实用程序并执行文件 IO。
我如何可靠地比较它们?
1) 使用“时间”获取“CPU 时间”有利于调用 system() 和执行 IO 的第二种变体。即使我将“系统”时间添加到“用户”时间,它仍然不会计算在 wait() 上阻塞的时间。
2) 我不能只为它们计时,因为它们在服务器上运行,并且可以随时从 CPU 上推出。平均 1000 次实验是一个软选项,因为我不知道我的服务器是如何使用的——它是集群上的虚拟机,有点复杂。
3)分析器没有帮助,因为它们会给我时间花在代码上,这再次有利于执行 system() 的版本
我需要将这些程序消耗的所有 CPU 时间累加起来,包括用户、内核、IO 和孩子的递归时间。
我预计这是一个常见问题,但似乎仍然没有找到解决方案。
(用 times() 解决 - 见下文。谢谢大家)