You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2022/09/09 11:50:22 UTC
[james-mime4j] 02/05: MIME4J-317 Improve message writing (JMH + optimized copy)
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org