Замерить время работы программы, Анонимный класс, Пример использования лямбда выражения
currentTimeMillis() - возвращает время в миллисекундах прошедшее с 0:00 01 января 1970 года
Верить данным измерениям можно, если вычисления занимают сотни миллисекунд! long startTime = System.currentTimeMillis();
// ... Действие, вычисление которого занимают сотни миллисекунд!
long endTime = System.currentTimeMillis();
long difMs = endTime - startTime;
long min = difMs / (1000 * 60);
long sec = (difMs / 1000) - (min * 60);
System.out.println("Программа завершена за " + min + " min " + sec + " s!"); Или так:
[expand title=»Подробное получение записи с лямбда выражением»]
import java.math.BigDecimal;
public class Timer {
/**
* Измеряет время выполнения метода run экземпляра класса,
* реализующего функциональный интерфейс Runnable
* */
public long measureTime(Runnable runnable) {
long startTime = System.currentTimeMillis();
runnable.run();
return System.currentTimeMillis() - startTime;
}
private static class BigDecimalPower implements Runnable {
@Override
public void run() {
new BigDecimal("1234567").pow(100_000);
}
}
public static void main(String[] args) {
Timer timer = new Timer();
long time = timer.measureTime(new BigDecimalPower());
System.out.println(time);
}
} Можно воспользоваться более короткой формой записи с анонимным классом для создания экземпляра класса, реализующего интерфейс Runnable с помощью декларирования класса прямо в теле метода:
public static void main(String[] args) {
Timer timer = new Timer();
long time = timer.measureTime(new Runnable() {
@Override
public void run() {
new BigDecimal("1234567").pow(100_000);
}
});
System.out.println(time);
} Или еще более короткой формой записи с помощью лямбда выражения
public static void main(String[] args) {
Timer timer = new Timer();
long time = timer.measureTime(() -> new BigDecimal("1234567").pow(100_000));
System.out.println(time);
} [/expand]
public class Timer {
public long measureTime(Runnable runnable) {
long startTime = System.currentTimeMillis();
runnable.run();
return System.currentTimeMillis() - startTime;
}
public static void main(String[] args) {
Timer timer = new Timer();
long time = timer.measureTime(() -> new BigDecimal("1234567").pow(100_000));
System.out.println(time);
}
} 

