From a22aadc040cbd16c425a7bb23f8dc34df45ca925 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 22 Dec 2025 16:59:21 -0500 Subject: [PATCH] add benchmark total --- .../org/jlab/utils/benchmark/Benchmark.java | 8 ++--- .../jlab/utils/benchmark/BenchmarkTimer.java | 32 ++++++++----------- .../utils/benchmark/BenchmarkTimerTotal.java | 30 +++++++++++++++++ 3 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimerTotal.java diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java index 4f6034413b..b17c1264f7 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/Benchmark.java @@ -25,10 +25,10 @@ public static Benchmark getInstance(){ public void printTimer(int seconds){ TimerTask timerTask = new TimerTask() { - @Override - public void run() { System.out.println(getInstance()); } + @Override + public void run() { System.out.println(benchmarkInstance); } }; - updateTimer = new Timer("Benchmark"); + updateTimer = new Timer("Benchmark", true); updateTimer.scheduleAtFixedRate(timerTask, 0, 1000*seconds); } @@ -62,7 +62,7 @@ public BenchmarkTimer getTimer(String name){ } public BenchmarkTimer getTotal(String name) { - BenchmarkTimer total = new BenchmarkTimer(name); + BenchmarkTimerTotal total = new BenchmarkTimerTotal(name); for (BenchmarkTimer b : timerStore.values()) total.add(b); return total; 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 0f824ea6ba..d3f56a0743 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 @@ -5,16 +5,17 @@ * @author gavalian */ public class BenchmarkTimer { - + private String timerName = "generic"; - private long totalTime = 0; - private long timeAtResume = 0; - private int numberOfCalls = 0; + private long timeAtResume = 0; private Boolean isPaused = true; - - public BenchmarkTimer(){} - - public BenchmarkTimer(String name){ + + protected int numberOfCalls = 0; + protected long totalTime = 0; + + public BenchmarkTimer() {} + + public BenchmarkTimer(String name) { timerName = name; } @@ -38,11 +39,6 @@ public void pause(){ } } - public void add(BenchmarkTimer b) { - totalTime += b.totalTime; - numberOfCalls += b.numberOfCalls; - } - public void reset(){ totalTime = 0; timeAtResume = 0; @@ -59,12 +55,10 @@ public double getSeconds(){ } @Override - public String toString(){ - StringBuilder str = new StringBuilder(); + public String toString() { double timePerCall = 0.0; - if(numberOfCalls!=0) timePerCall = this.getMiliseconds()/numberOfCalls; - str.append(String.format("TIMER (%-12s) : N Calls %12d, Total Time = %12.2f sec, Unit Time = %12.3f msec", - this.getName(),numberOfCalls,this.getSeconds(),timePerCall)); - return str.toString(); + if (numberOfCalls != 0) timePerCall = getMiliseconds() / numberOfCalls; + return String.format("TIMER (%-12s) : N Calls %12d, Total Time = %12.2f sec, Unit Time = %12.3f msec", + getName(), numberOfCalls, getSeconds(), timePerCall); } } diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimerTotal.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimerTotal.java new file mode 100644 index 0000000000..86d650f9e2 --- /dev/null +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/benchmark/BenchmarkTimerTotal.java @@ -0,0 +1,30 @@ +package org.jlab.utils.benchmark; + +import java.util.ArrayList; + +/** + * + * @author baltzell + */ +public class BenchmarkTimerTotal extends BenchmarkTimer { + + ArrayList benchmarks = new ArrayList<>(); + + public BenchmarkTimerTotal(String name) { + super(name); + } + + @Override + public String toString() { + double timePerCall = 0.0; + if (numberOfCalls != 0) timePerCall = getMiliseconds() / numberOfCalls * benchmarks.size(); + return String.format("TIMER (%-12s) : N Calls %12d, Total Time = %12.2f sec, Unit Time = %12.3f msec", + getName(), numberOfCalls, getSeconds(), timePerCall); + } + + public void add(BenchmarkTimer b) { + benchmarks.add(b); + totalTime += b.totalTime; + numberOfCalls += b.numberOfCalls; + } +}