Насколько точен расчет времени выполнения? - PullRequest
1 голос
/ 22 декабря 2011

Мне было интересно, если этот метод расчета времени выполнения метода является точным:

public class GetExecutionTimes {

  public static void main(String args[]) {
    long startTime = System.currentTimeMillis();
    GetExecutionTimes ext = new GetExecutionTimes();
    ext.callMethod();
    long endTime = System.currentTimeMillis();
    System.out.println("Total elapsed time in execution of"
        + " method callMethod() is :" + (endTime - startTime));
  }

  public void callMethod() {
    System.out.println("Calling method");
    for (int i = 1; i <= 10; i++) {
      System.out.println("Value of counter is " + i);
    }
  }
}

Более конкретно: будет ли разница во времени одинаковой, если я выполню в других условиях?

Если нет, то как я могу сделать этот расчет более точным?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Есть несколько аспектов Java, которые затрудняют написание микропроцессоров. Сборка мусора и сборка точно в срок - два из них.

Я бы посоветовал следующее в качестве очень хорошей отправной точки: Как мне написать корректный микростандарт в Java?

0 голосов
/ 22 декабря 2011

Если вы пытаетесь использовать только метод callMethod(), вы должны переместить вызов конструктора перед регистрацией времени начала.

Вы должны также использовать nanoTime() вместо currentTimeMillis()поскольку письмо подвержено ошибкам из-за изменений в местных часах (например, настройки летнего времени или кто-то на машине просто меняет время).

Точность будет зависеть от вашей платформы и не обязательно в единицах измеренияназвания функций предполагают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...