Измерьте время процессора, потраченное на часть кода в JAVA

В настоящее время я пытаюсь измерить реальное время процессора для части моего кода в 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?

заранее спасибо

2 ответа

Решение

Методы System а также Runtime класс поможет вам Посмотрите на:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html

Например: вы можете использовать: System.currentTimeMillis(); который возвращает время в миллисекундах, до и после вашей программы! (в начале или в конце main метод!)

Должен ли я использовать внешний тест Java?

Да, пожалуйста. Jprofiler измеряет реальное прошедшее время среди других полезных показателей.

Другие вопросы по тегам