package erebus.core.helper; import java.util.HashMap; import java.util.concurrent.TimeUnit; public final class TimeMeasurement { private static final HashMap<String, Long> times = new HashMap<String, Long>(); private static final HashMap<String, Counter> counters = new HashMap<String, Counter>(); public static void start(String id) { times.put(id, System.nanoTime()); } public static void finish(String id) { if (!times.containsKey(id)) return; long time = System.nanoTime() - times.remove(id); if (time >= 10000000) ; System.out.println("Finished '" + id + "' in " + time + " ns (" + TimeUnit.NANOSECONDS.toMillis(time) + " ms)"); Counter counter = counters.get(id); if (counter == null) counters.put(id, counter = new Counter()); if (counter.add(time)) // System.out.println("Average time for '"+id+"' is "+avg+" ns ("+TimeUnit.NANOSECONDS.toMillis(avg)+" ms)"); counter.reset(); } private static final class Counter { private short counter; public boolean add(long time) { return ++counter > 256; } public void reset() { counter = 0; } } }