CPU 时间,或 Java 中用于计算机科学实验的用户时间



在评估我的算法所花费的时间时,我应该在 Java 中使用 CPU 还是用户时间?我在这里使用了信息:如何获取 CPU、系统和用户时间进行基准测试,以获得这些值......

来吧:

"User time" is the time spent running your application's own code.
"System time" is the time spent running OS code on behalf of your application (such as for I/O).

我们也经常提到"CPU 时间":

"CPU time" is user time plus system time. It's the total time spent using a CPU for your application.

哪个最适合CS实验?

当然,

这取决于您的算法。

如果您的算法本身不执行 I/O,则用户时间是衡量其好坏的最准确指标。

但是,如果您的算法执行例如基于磁盘的排序,则包含 I/O 的时间更合适。

请注意,Java VM 本身也运行自己的代码,最值得注意的是 GC,从操作系统的角度来看,它也算作用户时间,所以如果你想真正彻底,你可以尝试通过记录 GC 运行时间并从操作系统测量的用户时间中减去它们来最小化 GC 的影响。 (另一方面, 你可以争辩说,如果两种算法在相同的条件下运行,并且一种算法触发的GC运行比另一种多得多,那就是算法本身的错误。

更新:对不起,我刚刚阅读了您链接的页面,当然,如果您测量线程的用户时间,则上述内容不适用,仅当您查看整个(重量级)过程的用户时间时。

通常,

时间流逝是唯一重要的事情。 如果您可以编写一个使用多个内核(这会增加 CPU 时间)但减少用户等待时间的程序,这是可取的。运行时间包括 IO、用户和系统时间。

相关内容

  • 没有找到相关文章

最新更新