diff options
Diffstat (limited to 'benchmarks/ProtoBench.java')
-rw-r--r-- | benchmarks/ProtoBench.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/benchmarks/ProtoBench.java b/benchmarks/ProtoBench.java index 1dffe1c1..6717ffa2 100644 --- a/benchmarks/ProtoBench.java +++ b/benchmarks/ProtoBench.java @@ -33,12 +33,15 @@ package com.google.protocolbuffers; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileOutputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.lang.reflect.Method; import com.google.protobuf.ByteString; import com.google.protobuf.CodedInputStream; +import com.google.protobuf.CodedOutputStream; import com.google.protobuf.Message; public class ProtoBench { @@ -88,6 +91,16 @@ public class ProtoBench { final ByteArrayInputStream inputStream = new ByteArrayInputStream(inputData); final ByteString inputString = ByteString.copyFrom(inputData); final Message sampleMessage = defaultMessage.newBuilderForType().mergeFrom(inputString).build(); + FileOutputStream devNullTemp = null; + CodedOutputStream reuseDevNullTemp = null; + try { + devNullTemp = new FileOutputStream("/dev/null"); + reuseDevNullTemp = CodedOutputStream.newInstance(devNullTemp); + } catch (FileNotFoundException e) { + // ignore: this is probably Windows, where /dev/null does not exist + } + final FileOutputStream devNull = devNullTemp; + final CodedOutputStream reuseDevNull = reuseDevNullTemp; benchmark("Serialize to byte string", inputData.length, new Action() { public void execute() { sampleMessage.toByteString(); } }); @@ -99,6 +112,19 @@ public class ProtoBench { sampleMessage.writeTo(new ByteArrayOutputStream()); } }); + if (devNull != null) { + benchmark("Serialize to /dev/null with FileOutputStream", inputData.length, new Action() { + public void execute() throws IOException { + sampleMessage.writeTo(devNull); + } + }); + benchmark("Serialize to /dev/null reusing FileOutputStream", inputData.length, new Action() { + public void execute() throws IOException { + sampleMessage.writeTo(reuseDevNull); + reuseDevNull.flush(); // force the write to the OutputStream + } + }); + } benchmark("Deserialize from byte string", inputData.length, new Action() { public void execute() throws IOException { defaultMessage.newBuilderForType().mergeFrom(inputString).build(); |