我目前正在尝试测量我在 java 中的一部分代码的实际经过的 cpu 时间。我读到了你必须使用的 CPU 时间
cpuTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
但实际上,当我尝试在那段代码中测量它时,当经过的时间等于零时会引发错误......(在我看来,以纳秒精度来说这是不可能的)。while 循环可以很大也可以很小(大约 10 条指令)。
long startTime = ManagementFactory.getThreadMXBean()
.getCurrentThreadCpuTime();
// reset with seed solution for each neighborRule and
// each pivoting rule
t.setCurrentBestSolution(seedSolution);
while (t.chooseNextImprovingNeighborSolution(pivotingRule,
neighborRule));
long endTime = ManagementFactory.getThreadMXBean()
.getCurrentThreadCpuTime();
if (endTime - startTime == 0) {
System.err.println(pivotingRule + ":" + neighborRule);
System.err.println("END TIME:" + endTime);
System.err.println("START TIME:" + startTime);
}
任何的想法 ?我没有正确使用 CPUThread 部分吗?我应该使用外部 Java 基准测试器吗?
提前致谢