This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.1.x by this push:
new adef1ca444 Move performance test to separate class
adef1ca444 is described below
commit adef1ca444d0bd955f0600a79a2111a374145322
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Jan 3 19:37:56 2024 +0000
Move performance test to separate class
---
.../apache/tomcat/util/buf/TestMessageBytes.java | 95 ----------------------
...Bytes.java => TestMessageBytesPerformance.java} | 50 +-----------
2 files changed, 1 insertion(+), 144 deletions(-)
diff --git a/test/org/apache/tomcat/util/buf/TestMessageBytes.java
b/test/org/apache/tomcat/util/buf/TestMessageBytes.java
index df8718e007..f9af7fd19d 100644
--- a/test/org/apache/tomcat/util/buf/TestMessageBytes.java
+++ b/test/org/apache/tomcat/util/buf/TestMessageBytes.java
@@ -16,40 +16,10 @@
*/
package org.apache.tomcat.util.buf;
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.CharsetEncoder;
-import java.nio.charset.CodingErrorAction;
-import java.nio.charset.StandardCharsets;
-
-import org.junit.Assert;
-import org.junit.Assume;
import org.junit.Test;
-import org.apache.tomcat.util.compat.JreCompat;
-
public class TestMessageBytes {
- private static final String CONVERSION_STRING =
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
- "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF";
-
- private static final int CONVERSION_LOOPS = 1000000;
-
@Test
public void testToStringFromNull() {
MessageBytes mb = MessageBytes.newInstance();
@@ -96,69 +66,4 @@ public class TestMessageBytes {
mb.recycle();
mb.toChars();
}
-
-
- /*
- * Checks the the optimized code is faster than the non-optimized code.
- */
- @Test
- public void testConversionPerformance() {
-
- // ISO_8859_1 conversion appears to be optimised in Java 16 onwards
- Assume.assumeFalse(JreCompat.isJre16Available());
-
- long optimized = -1;
- long nonOptimized = -1;
-
- /*
- * One loop is likely to be enough as the optimised code is
- * significantly (3x to 4x on markt's desktop) faster than the
- * non-optimised code. Loop three times allows once to warn up the JVM
- * once to run the test and once more in case of unexpected CI /GC
- * slowness. The test will exit early if possible.
- *
- * MessageBytes only optimises conversion for ISO_8859_1
- */
- for (int i = 0; i < 3; i++) {
- optimized = doTestOptimisedConversionPerformance();
- nonOptimized = doTestConversionPerformance();
-
- System.out.println(" Optimized: " + optimized +
"\nNon-optimized: " + nonOptimized);
- if (optimized * 2 < nonOptimized) {
- break;
- }
- }
-
- Assert.assertTrue("Non-optimised code was faster (" + nonOptimized +
"ns) compared to optimized (" +
- optimized + "ns)", optimized < nonOptimized);
- }
-
-
- private long doTestOptimisedConversionPerformance() {
- MessageBytes mb = MessageBytes.newInstance();
-
- long start = System.nanoTime();
- for (int i = 0; i < CONVERSION_LOOPS; i++) {
- mb.recycle();
- mb.setCharset(StandardCharsets.ISO_8859_1);
- mb.setString(CONVERSION_STRING);
- mb.toBytes();
- }
- return System.nanoTime() - start;
- }
-
-
- private long doTestConversionPerformance() {
- long start = System.nanoTime();
- for (int i = 0; i < CONVERSION_LOOPS; i++) {
- CharsetEncoder encoder =
StandardCharsets.ISO_8859_1.newEncoder().onMalformedInput(
-
CodingErrorAction.REPORT).onUnmappableCharacter(CodingErrorAction.REPORT);
- try {
- encoder.encode(CharBuffer.wrap(CONVERSION_STRING));
- } catch (CharacterCodingException cce) {
- Assert.fail();
- }
- }
- return System.nanoTime() - start;
- }
}
diff --git a/test/org/apache/tomcat/util/buf/TestMessageBytes.java
b/test/org/apache/tomcat/util/buf/TestMessageBytesPerformance.java
similarity index 83%
copy from test/org/apache/tomcat/util/buf/TestMessageBytes.java
copy to test/org/apache/tomcat/util/buf/TestMessageBytesPerformance.java
index df8718e007..248652152e 100644
--- a/test/org/apache/tomcat/util/buf/TestMessageBytes.java
+++ b/test/org/apache/tomcat/util/buf/TestMessageBytesPerformance.java
@@ -28,7 +28,7 @@ import org.junit.Test;
import org.apache.tomcat.util.compat.JreCompat;
-public class TestMessageBytes {
+public class TestMessageBytesPerformance {
private static final String CONVERSION_STRING =
"0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
+
@@ -50,54 +50,6 @@ public class TestMessageBytes {
private static final int CONVERSION_LOOPS = 1000000;
- @Test
- public void testToStringFromNull() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.toString();
- }
-
-
- @Test
- public void testToBytesFromNull() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.toBytes();
- }
-
-
- @Test
- public void testToCharsFromNull() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.toChars();
- }
-
-
- @Test
- public void testToStringAfterRecycle() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.setString("foo");
- mb.recycle();
- mb.toString();
- }
-
-
- @Test
- public void testToBytesAfterRecycle() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.setString("foo");
- mb.recycle();
- mb.toBytes();
- }
-
-
- @Test
- public void testToCharsAfterRecycle() {
- MessageBytes mb = MessageBytes.newInstance();
- mb.setString("foo");
- mb.recycle();
- mb.toChars();
- }
-
-
/*
* Checks the the optimized code is faster than the non-optimized code.
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]