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 <ma...@apache.org> 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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org