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

Reply via email to