package com.rcpcompany.utils.logging; import java.util.HashMap; import java.util.Map; /** * To be decomented... * * @author "Tonny Madsen, The RCP Company� */ public interface ITimeUtils { public static class Factory { private Factory() { } private static int i = 0; public static void run(Runnable r) { final String ANON = "anon" + (i++); start(ANON); run(ANON, r); end(ANON); } private static Map<String, Long> accumulatedTimes = new HashMap<String, Long>(); public static void start(String name) { accumulatedTimes.put(name, Long.valueOf(0)); } public static void run(String name, Runnable r) { Long l = accumulatedTimes.get(name); if (l == null) { start(name); l = accumulatedTimes.get(name); } final long startTime = System.nanoTime(); try { r.run(); } finally { final long endTime = System.nanoTime(); l += (endTime - startTime); accumulatedTimes.put(name, l); } } public static void end(String name) { final Long l = accumulatedTimes.remove(name); if (l == null) // LogUtils.error(null, "No time by name '" + name + // "'"); return; final int oldLevels = LogUtils.DEBUG_STRACK_LEVELS; LogUtils.DEBUG_STRACK_LEVELS = 0; // LogUtils.debug(null, name + ": " + l + " ns"); LogUtils.DEBUG_STRACK_LEVELS = oldLevels; } } }