diff options
author | Yilun Chong <yilunchong@google.com> | 2018-02-09 11:47:00 -0800 |
---|---|---|
committer | Yilun Chong <yilunchong@google.com> | 2018-02-09 11:47:00 -0800 |
commit | 6cd4ec497239070c1513c9dd05fc88cd3ecc57fd (patch) | |
tree | b4feba6edbbc0b57caa6381e7bb5bf62d14af257 /benchmarks/java | |
parent | 07f023188e929019f506e9b390dde70539ea857f (diff) |
Sync internal benchmark changes
Diffstat (limited to 'benchmarks/java')
-rwxr-xr-x | benchmarks/java/src/main/java/com/google/protobuf/ProtoBench.java | 10 | ||||
-rwxr-xr-x | benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java (renamed from benchmarks/java/src/main/java/com/google/protobuf/ProtoBenchCaliper.java) | 90 |
2 files changed, 73 insertions, 27 deletions
diff --git a/benchmarks/java/src/main/java/com/google/protobuf/ProtoBench.java b/benchmarks/java/src/main/java/com/google/protobuf/ProtoBench.java index f8d3b797..f35b180a 100755 --- a/benchmarks/java/src/main/java/com/google/protobuf/ProtoBench.java +++ b/benchmarks/java/src/main/java/com/google/protobuf/ProtoBench.java @@ -97,7 +97,7 @@ public class ProtoBench { return false; } argsList.add("-DdataFile=" + file); - argsList.add("com.google.protobuf.ProtoBenchCaliper"); + argsList.add("com.google.protobuf.ProtoCaliperBenchmark"); try { String args[] = new String[argsList.size()]; @@ -142,19 +142,14 @@ public class ProtoBench { private static List<String> getCaliperOption(final BenchmarkDataset benchmarkDataset) { List<String> temp = new ArrayList<String>(); if (benchmarkDataset.getMessageName().equals("benchmarks.proto3.GoogleMessage1")) { - temp.add("-DbenchmarkMessageType=GOOGLE_MESSAGE1_PROTO3"); } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage1")) { - temp.add("-DbenchmarkMessageType=GOOGLE_MESSAGE1_PROTO2"); } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage2")) { - temp.add("-DbenchmarkMessageType=GOOGLE_MESSAGE2"); } else if (benchmarkDataset.getMessageName(). equals("benchmarks.google_message3.GoogleMessage3")) { - temp.add("-DbenchmarkMessageType=GOOGLE_MESSAGE3"); temp.add("-Cinstrument.runtime.options.timingInterval=3000ms"); temp.add("-Cinstrument.runtime.options.measurements=20"); } else if (benchmarkDataset.getMessageName(). equals("benchmarks.google_message4.GoogleMessage4")) { - temp.add("-DbenchmarkMessageType=GOOGLE_MESSAGE4"); temp.add("-Cinstrument.runtime.options.timingInterval=1500ms"); temp.add("-Cinstrument.runtime.options.measurements=20"); } else { @@ -172,6 +167,9 @@ public class ProtoBench { } public static byte[] readAllBytes(String filename) throws IOException { + if (filename.equals("")) { + return new byte[0]; + } RandomAccessFile file = new RandomAccessFile(new File(filename), "r"); byte[] content = new byte[(int) file.length()]; file.readFully(content); diff --git a/benchmarks/java/src/main/java/com/google/protobuf/ProtoBenchCaliper.java b/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java index a7027586..7dff16dc 100755 --- a/benchmarks/java/src/main/java/com/google/protobuf/ProtoBenchCaliper.java +++ b/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java @@ -13,14 +13,16 @@ import com.google.protobuf.benchmarks.Benchmarks.BenchmarkDataset; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.BufferedWriter; +import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; +import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; -public class ProtoBenchCaliper { +public class ProtoCaliperBenchmark { public enum BenchmarkMessageType { GOOGLE_MESSAGE1_PROTO3 { @Override ExtensionRegistry getExtensionRegistry() { return ExtensionRegistry.newInstance(); } @@ -49,45 +51,44 @@ public class ProtoBenchCaliper { @Override ExtensionRegistry getExtensionRegistry() { ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - benchmarks.google_message3.BenchmarkMessage38.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage37.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage36.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage35.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage34.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage33.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage32.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage31.registerAllExtensions(extensions); - benchmarks.google_message3.BenchmarkMessage3.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage38.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage37.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage36.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage35.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage34.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage33.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage32.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage31.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage3.registerAllExtensions(extensions); return extensions; } @Override Message getDefaultInstance() { - return benchmarks.google_message3.BenchmarkMessage3.GoogleMessage3.getDefaultInstance(); + return com.google.protobuf.benchmarks.BenchmarkMessage3.GoogleMessage3.getDefaultInstance(); } }, GOOGLE_MESSAGE4 { @Override ExtensionRegistry getExtensionRegistry() { ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - benchmarks.google_message4.BenchmarkMessage43.registerAllExtensions(extensions); - benchmarks.google_message4.BenchmarkMessage42.registerAllExtensions(extensions); - benchmarks.google_message4.BenchmarkMessage41.registerAllExtensions(extensions); - benchmarks.google_message4.BenchmarkMessage4.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage43.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage42.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage41.registerAllExtensions(extensions); + com.google.protobuf.benchmarks.BenchmarkMessage4.registerAllExtensions(extensions); return extensions; } @Override Message getDefaultInstance() { - return benchmarks.google_message4.BenchmarkMessage4.GoogleMessage4.getDefaultInstance(); + return com.google.protobuf.benchmarks.BenchmarkMessage4.GoogleMessage4.getDefaultInstance(); } }; abstract ExtensionRegistry getExtensionRegistry(); abstract Message getDefaultInstance(); } - - @Param + private BenchmarkMessageType benchmarkMessageType; - @Param + @Param("") private String dataFile; private byte[] inputData; @@ -99,11 +100,39 @@ public class ProtoBenchCaliper { private List<ByteString> inputStringList; private List<Message> sampleMessageList; private long counter; + + private BenchmarkMessageType getMessageType() throws IOException { + if (benchmarkDataset.getMessageName().equals("benchmarks.proto3.GoogleMessage1")) { + return BenchmarkMessageType.GOOGLE_MESSAGE1_PROTO3; + } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage1")) { + return BenchmarkMessageType.GOOGLE_MESSAGE1_PROTO2; + } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage2")) { + return BenchmarkMessageType.GOOGLE_MESSAGE2; + } else if (benchmarkDataset.getMessageName(). + equals("benchmarks.google_message3.GoogleMessage3")) { + return BenchmarkMessageType.GOOGLE_MESSAGE3; + } else if (benchmarkDataset.getMessageName(). + equals("benchmarks.google_message4.GoogleMessage4")) { + return BenchmarkMessageType.GOOGLE_MESSAGE4; + } else { + throw new IllegalStateException("Invalid DataFile! There's no testing message named " + + benchmarkDataset.getMessageName()); + } + } @BeforeExperiment void setUp() throws IOException { - inputData = ProtoBench.readAllBytes(dataFile); - benchmarkDataset = BenchmarkDataset.parseFrom(inputData); + if (!dataFile.equals("")) { + RandomAccessFile file = new RandomAccessFile(new File(dataFile), "r"); + inputData = new byte[(int) file.length()]; + file.readFully(inputData); + benchmarkDataset = BenchmarkDataset.parseFrom(inputData); + benchmarkMessageType = getMessageType(); + } else { + inputData = new byte[0]; + benchmarkDataset = BenchmarkDataset.parseFrom(inputData); + benchmarkMessageType = BenchmarkMessageType.GOOGLE_MESSAGE2; + } defaultMessage = benchmarkMessageType.getDefaultInstance(); extensions = benchmarkMessageType.getExtensionRegistry(); inputDataList = new ArrayList<byte[]>(); @@ -127,6 +156,9 @@ public class ProtoBenchCaliper { @Benchmark void serializeToByteString(int reps) throws IOException { + if (sampleMessageList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { sampleMessageList.get((int) (counter % sampleMessageList.size())).toByteString(); counter++; @@ -135,6 +167,9 @@ public class ProtoBenchCaliper { @Benchmark void serializeToByteArray(int reps) throws IOException { + if (sampleMessageList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { sampleMessageList.get((int) (counter % sampleMessageList.size())).toByteArray(); counter++; @@ -143,6 +178,9 @@ public class ProtoBenchCaliper { @Benchmark void serializeToMemoryStream(int reps) throws IOException { + if (sampleMessageList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { ByteArrayOutputStream output = new ByteArrayOutputStream(); sampleMessageList.get((int) (counter % sampleMessageList.size())).writeTo(output); @@ -152,6 +190,9 @@ public class ProtoBenchCaliper { @Benchmark void deserializeFromByteString(int reps) throws IOException { + if (inputStringList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { benchmarkMessageType.getDefaultInstance().getParserForType().parseFrom( inputStringList.get((int) (counter % inputStringList.size())), extensions); @@ -161,6 +202,9 @@ public class ProtoBenchCaliper { @Benchmark void deserializeFromByteArray(int reps) throws IOException { + if (inputDataList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { benchmarkMessageType.getDefaultInstance().getParserForType().parseFrom( inputDataList.get((int) (counter % inputDataList.size())), extensions); @@ -170,6 +214,9 @@ public class ProtoBenchCaliper { @Benchmark void deserializeFromMemoryStream(int reps) throws IOException { + if (inputStreamList.size() == 0) { + return; + } for (int i = 0; i < reps; i++) { benchmarkMessageType.getDefaultInstance().getParserForType().parseFrom( inputStreamList.get((int) (counter % inputStreamList.size())), extensions); @@ -195,3 +242,4 @@ public class ProtoBenchCaliper { } } } + |