В настоящее время я пытаюсь измерить реальное истекшее время процессора для части моего кода на java. Я читал это, чтобы получить процессорное время, вам нужно использовать
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?
заранее спасибо