24 декабря, 2016 | Автор:
Naik | Категория:
Java,
Без рубрики |
Нет комментариев »
Иногда возникает потребность измерить время работы определенного фрагмента кода в вашем проекте.
Можно, конечно, писать так:
long start = System.currentTimeMillis();
//тут замеряемый код
System.out.println(System.currentTimeMillis() - start);
Но такой подход быстро надоедает. Я выделил замер времени в отдельный класс
TimeMeter, теперь можно удобно останавливать несколько раз таймер и измерять время, если нужно измерить промежуточные значения. Можно также использовать несколько экземпляров таймера.
Реализация:
public class TimeMeter {
private long start;
private long stop;
public TimeMeter(){
start = now();
}
public void stop(){
stop = now();
}
@Override
public String toString() {
return getDuration() + " msec";
}
public long getDuration(){
return (stop == 0 ? now() : stop) - start;
}
private long now(){
return System.currentTimeMillis();
}
}
Самый простой вариант использования:
TimeMeter timeMeter = new TimeMeter();
//тут замеряемый код
System.out.println(timeMeter);
Таймер с несколькими остановками и замерами времени:
TimeMeter timeMeter = new TimeMeter();
//тут замеряемый код 1
timeMeter.stop();
System.out.println(timeMeter);
//тут замеряемый код 2
timeMeter.stop();
System.out.println(timeMeter);
Глобальный и внутренние таймеры:
TimeMeter totalTimeMeter = new TimeMeter();
for (int i = 0; i < 100; i++) {
TimeMeter timeMeter = new TimeMeter();
//тут замеряемый код
System.out.println("time " + i + ": " + timeMeter);
}
System.out.println("total time: " + totalTimeMeter);
p.s. Можете придумать и сделать свою версию, здесь простор для творчества.
Добавить комментарий