Странное время обработки при повторных вызовах функций. Чем это можно объяснить?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Странное время обработки при повторных вызовах функций. Чем это можно объяснить?

Сообщение Гость »

Учитывая приведенный ниже код и его выходные данные, что может объяснить, что выполнение «1:» занимает в 80 раз больше времени? Если запустить в режиме отладки, разница сокращается в 40 раз. Тем не менее разница существенная.
Моей первой оценкой была JIT или другая оптимизация компилятора. Но это можно исключить, добавив несколько вызовов «timeNow()» и «println» (раскомментируйте раздел с комментариями).
Кроме того, я добавил следующие флаги, пытаясь их отключить:
-Djava.compiler=NONE
-XX:-TieredCompilation

Любые объяснения или предположения будут оценены по достоинству.
public class Test {
private static long lastTimestamp = -1;

/**
* Returns the elapsed time in microseconds since the last call to this method.
*
* @return Elapsed time in microseconds if this is not the first call, otherwise
* returns -1 to indicate the first call.
*/
public static long timeNow() {
long currentTime = System.nanoTime();
if (lastTimestamp == -1) {
// This is the first call
lastTimestamp = currentTime;
return -1; // Indicate that this is the first call
} else {
long elapsedTime = currentTime - lastTimestamp;
lastTimestamp = currentTime;
return elapsedTime / 1000; // Return elapsed time in microseconds
}
}

public static void main(String[] args) {
timeNow();

// timeNow();
// timeNow();
// timeNow();
//
// System.out.println("print");
// System.out.println("print");
// System.out.println("print");

System.out.println("0: " + timeNow());
System.out.println("1: " + timeNow());
System.out.println("2: " + timeNow());
System.out.println("3: " + timeNow());

}
}

Выход: (повторяется несколько раз с одинаковыми результатами)
0: 2
1: 17897
2: 334
3: 217



Подробнее здесь: https://stackoverflow.com/questions/784 ... plain-this
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»