This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-mime4j.git
commit e480ed3d80e2c35acbb4efcc4de60e619398bd9a Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Tue Jun 21 08:24:22 2022 +0700 MIME4J-317 Improve message writing (JMH + optimized copy) JMHLongMultipartReadBench.benchmark5 avgt 10 46.152 ± 3.084 us/op JMHLongMultipartReadBench.benchmark5:·gc.alloc.rate avgt 10 1972.992 ± 121.382 MB/sec JMHLongMultipartReadBench.benchmark5 avgt 10 37.964 ± 0.430 us/op JMHLongMultipartReadBench.benchmark5:·gc.alloc.rate avgt 10 517.658 ± 5.853 MB/sec --- .../james/mime4j/JMHLongMultipartReadBench.java | 32 ++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/benchmark/src/main/java/org/apache/james/mime4j/JMHLongMultipartReadBench.java b/benchmark/src/main/java/org/apache/james/mime4j/JMHLongMultipartReadBench.java index f2521fd6..f9fd5135 100644 --- a/benchmark/src/main/java/org/apache/james/mime4j/JMHLongMultipartReadBench.java +++ b/benchmark/src/main/java/org/apache/james/mime4j/JMHLongMultipartReadBench.java @@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit; import org.apache.james.mime4j.dom.Header; import org.apache.james.mime4j.dom.MessageBuilder; import org.apache.james.mime4j.message.DefaultMessageBuilder; +import org.apache.james.mime4j.message.DefaultMessageWriter; import org.apache.james.mime4j.message.SimpleContentHandler; import org.apache.james.mime4j.parser.AbstractContentHandler; import org.apache.james.mime4j.parser.ContentHandler; @@ -45,9 +46,11 @@ import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import org.openjdk.jmh.runner.options.TimeValue; +import org.openjdk.jmh.util.NullOutputStream; public class JMHLongMultipartReadBench { private static final byte[] CONTENT = loadMessage("long-multipart.msg"); + private static final byte[] BUFFER = new byte[4096]; @Test public void launchBenchmark() throws Exception { @@ -108,10 +111,10 @@ public class JMHLongMultipartReadBench { ContentHandler contentHandler = new AbstractContentHandler() { }; - MimeStreamParser parser = new MimeStreamParser(); - parser.setContentHandler(contentHandler); - parser.parse(new ByteArrayInputStream(CONTENT)); - parser.stop(); + MimeStreamParser parser = new MimeStreamParser(); + parser.setContentHandler(contentHandler); + parser.parse(new ByteArrayInputStream(CONTENT)); + parser.stop(); } @Benchmark @@ -120,8 +123,7 @@ public class JMHLongMultipartReadBench { @Override public void body(BodyDescriptor bd, InputStream is) throws IOException { - byte[] b = new byte[4096]; - while (is.read(b) != -1); + while (is.read(BUFFER) != -1) ; } @Override @@ -129,11 +131,11 @@ public class JMHLongMultipartReadBench { } }; - MimeStreamParser parser = new MimeStreamParser(); - parser.setContentDecoding(true); - parser.setContentHandler(contentHandler); - parser.parse(new ByteArrayInputStream(CONTENT)); - parser.stop(); + MimeStreamParser parser = new MimeStreamParser(); + parser.setContentDecoding(true); + parser.setContentHandler(contentHandler); + parser.parse(new ByteArrayInputStream(CONTENT)); + parser.stop(); } @Benchmark @@ -141,4 +143,12 @@ public class JMHLongMultipartReadBench { MessageBuilder builder = new DefaultMessageBuilder(); builder.parseMessage(new ByteArrayInputStream(CONTENT)); } + + @Benchmark + public void benchmark5(Blackhole bh) throws Exception{ + MessageBuilder builder = new DefaultMessageBuilder(); + Message message = builder.parseMessage(new ByteArrayInputStream(CONTENT)); + new DefaultMessageWriter().writeMessage(message, new NullOutputStream()); + message.dispose(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org