Было бы неплохо, если бы у java была лучшая функциональная поддержка, так что действие, которое нужно измерить, можно было бы обернуть в блок:
measure {
// your operation here
}
В java это можно сделать с помощью анонимные функции, которые выглядят слишком подробными
public interface Timer {
void wrap();
}
public class Logger {
public static void logTime(Timer timer) {
long start = System.currentTimeMillis();
timer.wrap();
System.out.println("" + (System.currentTimeMillis() - start) + "ms");
}
public static void main(String a[]) {
Logger.logTime(new Timer() {
public void wrap() {
// Your method here
timeConsumingOperation();
}
});
}
public static void timeConsumingOperation() {
for (int i = 0; i<=10000; i++) {
System.out.println("i=" +i);
}
}
}