You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/03/05 14:27:13 UTC
[commons-pool] 04/04: More precise measurements
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git
commit 69b2b4d84319b901e318ff14a954431884668c1d
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Mar 5 09:10:36 2023 -0500
More precise measurements
---
.../commons/pool2/performance/PerformanceTest.java | 45 +++++++++++-----------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
index 0fddf1dd..ea29789e 100644
--- a/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
+++ b/src/test/java/org/apache/commons/pool2/performance/PerformanceTest.java
@@ -17,6 +17,7 @@
package org.apache.commons.pool2.performance;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
@@ -34,22 +35,22 @@ public class PerformanceTest {
class PerfTask implements Callable<TaskStats> {
final TaskStats taskStats = new TaskStats();
- long borrowTimeMillis;
- long returnTimeMillis;
+ long borrowTimeNanos;
+ long returnTimeNanos;
@Override
public TaskStats call() {
runOnce(); // warmup
for (int i = 0; i < nrIterations; i++) {
runOnce();
- taskStats.totalBorrowTime += borrowTimeMillis;
- taskStats.totalReturnTime += returnTimeMillis;
+ taskStats.totalBorrowNanos += borrowTimeNanos;
+ taskStats.totalReturnNanos += returnTimeNanos;
taskStats.nrSamples++;
if (logLevel >= 2) {
final String name = "thread" + Thread.currentThread().getName();
System.out.println("result " + taskStats.nrSamples + '\t' +
- name + '\t' + "borrow time: " + borrowTimeMillis + '\t' +
- "return time: " + returnTimeMillis + '\t' + "waiting: " +
+ name + '\t' + "borrow time: " + Duration.ofNanos(borrowTimeNanos) + '\t' +
+ "return time: " + Duration.ofNanos(returnTimeNanos) + '\t' + "waiting: " +
taskStats.waiting + '\t' + "complete: " +
taskStats.complete);
}
@@ -66,9 +67,9 @@ public class PerformanceTest {
" waiting: " + taskStats.waiting +
" complete: " + taskStats.complete);
}
- final long bbeginMillis = System.currentTimeMillis();
+ final long bbeginNanos = System.nanoTime();
final Integer o = pool.borrowObject();
- final long bendMillis = System.currentTimeMillis();
+ final long bendNanos = System.nanoTime();
taskStats.waiting--;
if (logLevel >= 3) {
@@ -78,13 +79,13 @@ public class PerformanceTest {
" complete: " + taskStats.complete);
}
- final long rbeginMillis = System.currentTimeMillis();
+ final long rbeginNanos = System.nanoTime();
pool.returnObject(o);
- final long rendMillis = System.currentTimeMillis();
+ final long rendNanos = System.nanoTime();
Thread.yield();
taskStats.complete++;
- borrowTimeMillis = bendMillis - bbeginMillis;
- returnTimeMillis = rendMillis - rbeginMillis;
+ borrowTimeNanos = bendNanos - bbeginNanos;
+ returnTimeNanos = rendNanos - rbeginNanos;
} catch (final Exception e) {
e.printStackTrace();
}
@@ -93,8 +94,8 @@ public class PerformanceTest {
private static class TaskStats {
public int waiting;
public int complete;
- public long totalBorrowTime;
- public long totalReturnTime;
+ public long totalBorrowNanos;
+ public long totalReturnNanos;
public int nrSamples;
}
@@ -177,25 +178,25 @@ public class PerformanceTest {
if (taskStats != null) {
aggregate.complete += taskStats.complete;
aggregate.nrSamples += taskStats.nrSamples;
- aggregate.totalBorrowTime += taskStats.totalBorrowTime;
- aggregate.totalReturnTime += taskStats.totalReturnTime;
+ aggregate.totalBorrowNanos += taskStats.totalBorrowNanos;
+ aggregate.totalReturnNanos += taskStats.totalReturnNanos;
aggregate.waiting += taskStats.waiting;
}
}
}
+ final Duration totalBorrowDuration = Duration.ofNanos(aggregate.totalBorrowNanos);
+ final Duration totalReturnDuration = Duration.ofNanos(aggregate.totalReturnNanos);
System.out.println("-----------------------------------------");
System.out.println("nrIterations: " + iterations);
System.out.println("nrThreads: " + nrThreads);
System.out.println("maxTotal: " + maxTotal);
System.out.println("maxIdle: " + maxIdle);
System.out.println("nrSamples: " + aggregate.nrSamples);
- System.out.println("totalBorrowTime: " + aggregate.totalBorrowTime);
- System.out.println("totalReturnTime: " + aggregate.totalReturnTime);
- System.out.println("avg BorrowTime: " +
- aggregate.totalBorrowTime / aggregate.nrSamples);
- System.out.println("avg ReturnTime: " +
- aggregate.totalReturnTime / aggregate.nrSamples);
+ System.out.println("totalBorrowTime: " + totalBorrowDuration);
+ System.out.println("totalReturnTime: " + totalReturnDuration);
+ System.out.println("avg BorrowTime: " + totalBorrowDuration.dividedBy(aggregate.nrSamples));
+ System.out.println("avg ReturnTime: " + totalReturnDuration.dividedBy(aggregate.nrSamples));
threadPool.shutdown();
}