Я создаю простую игру на Android и хочу проверить продолжительность выполнения некоторых функций.
Для этого я написал класс (TimeLog
), который сохраняет экземпляр System.nanotime()
в поле Double при создании экземпляра.Класс, конечно, имеет метод end()
, который вычитает время, которое он получил при создании экземпляра, к текущему System.nanotime()
.
. Проблема в том, что если я пытаюсь измерить продолжительность метода, который иногда содержит другие методыВнутренние методы занимают больше времени, чем метод, который их содержит.Я не понимаю, где я ошибаюсь.
Вот пример:
void myFunc(){
TimeLog out = new TimeLog();
inner1();
inner2();
out.end();
}
void inner1(){
TimeLog in1 = new TimeLog();
//something...
in1.end();
}
void inner2(){
TimeLog in2 = new TimeLog();
//something...
in2.end();
}
Main(){
myFunc();
}
Иногда in1 или in2 возвращают более высокие значения, чем out.
Вот TimeLog:
public class Timelog
{
private double startTime;
private double duration;
public TimeLog (){
startTime = System.nanoTime();
}
public void end(){
duration = (int)(System.nanoTime() - startTime);
}
public void log(){
Log.d("TIMELOG", ":" + duration);
}
}