// returns minimal time needed static long benchForNSeconds(S desc, Runnable r, int n) { long start = sysNow(), min = -1, print = sysNow(); int seconds = 1; long count = 0; while (seconds <= n) { long time = sysNow(); r.run(); ++count; long now = sysNow(); time = now-time; min = min < 0 ? time : min(min, time); if (now >= start+seconds*1000) { printAndSetConsoleTitle(min + " ms: " + desc + " (" + seconds + "/" + n + " s, last=" + time + " ms, n=" + count + ")"); ++seconds; } } ret min; }