This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 05b967e29e Try and make test more reliable when running with other
tests
05b967e29e is described below
commit 05b967e29e54a69592305e1170554b1d7e731c48
Author: Mark Thomas <[email protected]>
AuthorDate: Tue Sep 3 18:46:28 2024 +0100
Try and make test more reliable when running with other tests
When run on its own, the optimised code is consistently faster.
---
.../catalina/util/TestParameterMapPerformance.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/test/org/apache/catalina/util/TestParameterMapPerformance.java
b/test/org/apache/catalina/util/TestParameterMapPerformance.java
index a9bf7e9f34..fe2ea9bf79 100644
--- a/test/org/apache/catalina/util/TestParameterMapPerformance.java
+++ b/test/org/apache/catalina/util/TestParameterMapPerformance.java
@@ -26,8 +26,9 @@ import org.junit.Test;
public class TestParameterMapPerformance {
- private final int numTests = 5;
- private final int numTestIterations = 1000000;
+ private static final int NUM_TESTS = 10;
+ private static final int NUM_SKIP = 4;
+ private static final int NUM_TEST_ITERATIONS = 1000000;
private ParameterMap<Integer,Object> baseParams;
private ParameterMap<Integer,Object> testParams;
@@ -44,16 +45,16 @@ public class TestParameterMapPerformance {
baseParams.setLocked(true);
// warmup
- for (int i = 0; i < numTestIterations; i++) {
+ for (int i = 0; i < NUM_TEST_ITERATIONS; i++) {
useStandardConstructor();
useOptimizedMapConstructor();
}
List<Long> standardDurations = new ArrayList<>();
- for (int i = 0; i < numTests; i++) {
+ for (int i = 0; i < NUM_TESTS; i++) {
System.gc();
long startStandard = System.currentTimeMillis();
- for (int j = 0; j < numTestIterations; j++) {
+ for (int j = 0; j < NUM_TEST_ITERATIONS; j++) {
useStandardConstructor();
}
long duration = System.currentTimeMillis() - startStandard;
@@ -64,13 +65,13 @@ public class TestParameterMapPerformance {
* The CI systems tend to produce outliers that lead to false failures
so skip the longest two runs.
*/
long standardTotalDuration =
- standardDurations.stream().sorted().limit(numTests -
2).reduce(Long::sum).get().longValue();
+ standardDurations.stream().sorted().limit(NUM_TESTS -
2).reduce(Long::sum).get().longValue();
List<Long> optimizedDurations = new ArrayList<>();
- for (int i = 0; i < numTests; i++) {
+ for (int i = 0; i < NUM_TESTS; i++) {
System.gc();
long startOptimized = System.currentTimeMillis();
- for (int j = 0; j < numTestIterations; j++) {
+ for (int j = 0; j < NUM_TEST_ITERATIONS; j++) {
useOptimizedMapConstructor();
}
long duration = System.currentTimeMillis() - startOptimized;
@@ -81,7 +82,7 @@ public class TestParameterMapPerformance {
* The CI systems tend to produce outliers that lead to false failures
so skip the longest two runs.
*/
long optimizedTotalDuration =
- optimizedDurations.stream().sorted().limit(numTests -
2).reduce(Long::sum).get().longValue();
+ optimizedDurations.stream().sorted().limit(NUM_TESTS -
NUM_SKIP).reduce(Long::sum).get().longValue();
Assert.assertTrue("Standard: " + standardTotalDuration + "ms,
Optimized: " + optimizedTotalDuration + "ms",
optimizedTotalDuration < standardTotalDuration);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]