Я иду с простым ответом. Работает для меня.
long startTime = System.currentTimeMillis();
doReallyLongThing();
long endTime = System.currentTimeMillis();
System.out.println("That took " + (endTime - startTime) + " milliseconds");
Это работает очень хорошо. Разрешение, очевидно, только на миллисекунду, вы можете сделать лучше с System.nanoTime (). Есть некоторые ограничения для обоих (срезы расписания системной операционной системы и т. Д.), Но это работает очень хорошо.
Среднее значение за пару прогонов (тем лучше), и вы получите приличную идею.