【发布时间】:2019-04-10 14:56:29
【问题描述】:
我需要创建一个简单的 Java 应用程序,它只返回一个数字:估计的 CPU 性能。例如,当我在具有 4 个内核的机器上运行它时,我将获得大约两倍于使用 2 个内核运行的数字。这个应用程序应该使用 100% CPU 几秒钟来测量它。我真的不担心准确性。
我真的很惊讶我找不到任何已经这样做的 Java 库。当然也有其他语言的工具,但在我的环境中只有 Java 被认可。
我目前的想法是在我的代码中使用来自SciMark 2.0 的类并从多个线程运行它,但是这个工具看起来非常混乱(例如,类名以小写字母开头),我需要编写自定义代码来运行这些线程并结合结果。
我能不能更好地解决这个问题?
【问题讨论】:
-
CPU 性能同时做什么?您实际尝试测量的内容可能很重要。执行此操作的正常方法是测量完成任务的总时间。
-
如果您使用的是 linux,只需从
/proc/cpuinfo读取bogomips值 -
@markspace 我不在乎。正如我所说,准确性对我来说根本不重要,只是粗略的数字。理想情况下,我正在寻找具有任何假设的现成解决方案。将有各种任务要执行,因为这些是 Jenkins 代理
-
@rkosegi 我不能为此使用
/proc/cpuinfo,该基准测试必须按需运行(VM 性能可能会在不重启的情况下发生变化) -
那我就对手头的任务进行基准测试,并记录它的性能。如果该性能随时间发生变化,那么您可以调查该变化。这更好,因为它衡量的是您实际任务的时间,而不是一些任意的基准。
标签: java benchmarking