diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java index edf4fec42b..aa07bb2841 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimer.java @@ -11,6 +11,8 @@ */ public class BenchmarkTimer { + private static final int WARMUP_CALLS = 100; + public static class BenchmarkMultiTimer extends BenchmarkTimer { ConcurrentHashMap timeAtResume = new ConcurrentHashMap<>(); ConcurrentHashMap isPaused = new ConcurrentHashMap<>(); @@ -23,8 +25,8 @@ public void resume(int thread) { } public void pause(int thread) { if (!isPaused.get(thread)) { - numberOfCalls.incrementAndGet(); - totalTime.addAndGet(System.nanoTime() - timeAtResume.get(thread)); + if (numberOfCalls.incrementAndGet() > WARMUP_CALLS) + totalTime.addAndGet(System.nanoTime() - timeAtResume.get(thread)); isPaused.put(thread, true); } } @@ -62,8 +64,8 @@ public void resume(){ public void pause(){ if(isPaused==false){ - totalTime.addAndGet(System.nanoTime() - timeAtResume); - numberOfCalls.incrementAndGet(); + if (numberOfCalls.incrementAndGet() > WARMUP_CALLS) + totalTime.addAndGet(System.nanoTime() - timeAtResume); isPaused = true; } } @@ -84,13 +86,13 @@ public double getSeconds(){ } public double getMillisecondsPerCall() { - return numberOfCalls.get() > 0 ? getMilliseconds() / numberOfCalls.get() : 0; + return numberOfCalls.get() > WARMUP_CALLS ? getMilliseconds() / (numberOfCalls.get() - WARMUP_CALLS) : 0; } @Override public String toString() { return String.format("%-15s : #Calls %12d, Total = %12.2f sec, Unit = %12.3f msec", - getName(), numberOfCalls.get(), getSeconds(), getMillisecondsPerCall()); + getName(), numberOfCalls.get()-WARMUP_CALLS, getSeconds(), getMillisecondsPerCall()); } }