我应该在时间函数上使用“real”或“user + sys”吗?

时间:2012-05-17 12:03:51

标签: linux time

我在Linux上使用time命令时理解“real”,“user”和“sys”之间的区别,如另一个帖子所述:What do 'real', 'user' and 'sys' mean in the output of time(1)?

现在我正在研究Python,Java和C的性能之间的一个小比较,我想知道我应该使用哪个报告。

“User + sys”似乎更现实,但是在将C与Java进行比较时不会导致问题,例如,导致JVM知道如何优化多处理器/线程的代码而GCC不会“T?

另外,如果我确保在后台没有运行其他繁重的进程,那么“真实”是不够现实?

1 个答案:

答案 0 :(得分:2)

答案将取决于“(Python | Java | C)的性能”。在许多情况下,用户真正关心的是经过的墙上时间,对应于real。假设您以多种语言合理地编写了一些代码,其中一种语言可以自动并行化以使用您的4个内核。如果这使得用户等待回复的时间更少,那么我说这是一个公平的比较。当然它对于那台特定的机器是有效的,单核机器上的结果可能会有所不同。如果应用程序导致页面错误,则会使用户等待。对于用户来说,如果你说如果他们需要等待更长时间,那么应用程序会花费更少的周期,这对你没有帮助。

您测量的任何方式,请务必多次重复测试,因为运行之间可能存在很多差异。由于JIT编译,Java之类的语言也需要一个程序在它达到最高速度之前运行一段时间(但是再次:如果你的程序根据定义非常短并且不允许Java虚拟机变形,那么它就好了对Java来说太糟糕了)。测试性能非常棘手,即使是经验丰富的开发人员也容易误解结果或测量不是他们真正想要的。