2 package com.google.protobuf;
4 import com.
google.caliper.BeforeExperiment;
14 import java.io.ByteArrayInputStream;
15 import java.io.ByteArrayOutputStream;
16 import java.io.BufferedWriter;
18 import java.io.FileNotFoundException;
19 import java.io.FileOutputStream;
20 import java.io.FileWriter;
21 import java.io.IOException;
22 import java.io.RandomAccessFile;
23 import java.util.ArrayList;
24 import java.util.List;
31 @VmOptions(
"-XX:-TieredCompilation")
34 GOOGLE_MESSAGE1_PROTO3 {
39 .getDefaultInstance();
42 GOOGLE_MESSAGE1_PROTO2 {
43 @Override ExtensionRegistry getExtensionRegistry() {
return ExtensionRegistry.newInstance(); }
45 Message getDefaultInstance() {
47 .getDefaultInstance();
51 @Override ExtensionRegistry getExtensionRegistry() {
return ExtensionRegistry.newInstance(); }
53 Message getDefaultInstance() {
54 return com.
google.
protobuf.benchmarks.BenchmarkMessage2.GoogleMessage2.getDefaultInstance();
59 ExtensionRegistry getExtensionRegistry() {
60 ExtensionRegistry extensions = ExtensionRegistry.newInstance();
61 com.
google.
protobuf.benchmarks.BenchmarkMessage38.registerAllExtensions(extensions);
62 com.
google.
protobuf.benchmarks.BenchmarkMessage37.registerAllExtensions(extensions);
63 com.
google.
protobuf.benchmarks.BenchmarkMessage36.registerAllExtensions(extensions);
64 com.
google.
protobuf.benchmarks.BenchmarkMessage35.registerAllExtensions(extensions);
65 com.
google.
protobuf.benchmarks.BenchmarkMessage34.registerAllExtensions(extensions);
66 com.
google.
protobuf.benchmarks.BenchmarkMessage33.registerAllExtensions(extensions);
67 com.
google.
protobuf.benchmarks.BenchmarkMessage32.registerAllExtensions(extensions);
68 com.
google.
protobuf.benchmarks.BenchmarkMessage31.registerAllExtensions(extensions);
69 com.
google.
protobuf.benchmarks.BenchmarkMessage3.registerAllExtensions(extensions);
73 Message getDefaultInstance() {
74 return com.
google.
protobuf.benchmarks.BenchmarkMessage3.GoogleMessage3.getDefaultInstance();
79 ExtensionRegistry getExtensionRegistry() {
80 ExtensionRegistry extensions = ExtensionRegistry.newInstance();
81 com.
google.
protobuf.benchmarks.BenchmarkMessage43.registerAllExtensions(extensions);
82 com.
google.
protobuf.benchmarks.BenchmarkMessage42.registerAllExtensions(extensions);
83 com.
google.
protobuf.benchmarks.BenchmarkMessage41.registerAllExtensions(extensions);
84 com.
google.
protobuf.benchmarks.BenchmarkMessage4.registerAllExtensions(extensions);
88 Message getDefaultInstance() {
89 return com.
google.
protobuf.benchmarks.BenchmarkMessage4.GoogleMessage4.getDefaultInstance();
93 abstract ExtensionRegistry getExtensionRegistry();
94 abstract Message getDefaultInstance();
99 private String dataFile;
101 private
byte[] inputData;
102 private BenchmarkDataset benchmarkDataset;
105 private List<
byte[]> inputDataList;
106 private List<ByteArrayInputStream> inputStreamList;
111 if (benchmarkDataset.getMessageName().equals(
"benchmarks.proto3.GoogleMessage1")) {
113 }
else if (benchmarkDataset.getMessageName().equals(
"benchmarks.proto2.GoogleMessage1")) {
115 }
else if (benchmarkDataset.getMessageName().equals(
"benchmarks.proto2.GoogleMessage2")) {
117 }
else if (benchmarkDataset.getMessageName().
118 equals(
"benchmarks.google_message3.GoogleMessage3")) {
120 }
else if (benchmarkDataset.getMessageName().
121 equals(
"benchmarks.google_message4.GoogleMessage4")) {
124 throw new IllegalStateException(
"Invalid DataFile! There's no testing message named "
125 + benchmarkDataset.getMessageName());
130 void setUp() throws IOException {
131 if (!dataFile.equals(
"")) {
132 RandomAccessFile file =
new RandomAccessFile(
new File(dataFile),
"r");
133 inputData =
new byte[(int) file.length()];
134 file.readFully(inputData);
135 benchmarkDataset = BenchmarkDataset.parseFrom(inputData);
136 benchmarkMessageType = getMessageType();
138 inputData =
new byte[0];
139 benchmarkDataset = BenchmarkDataset.parseFrom(inputData);
140 benchmarkMessageType = BenchmarkMessageType.GOOGLE_MESSAGE2;
144 inputDataList =
new ArrayList<byte[]>();
145 inputStreamList =
new ArrayList<ByteArrayInputStream>();
146 inputStringList =
new ArrayList<ByteString>();
147 sampleMessageList =
new ArrayList<Message>();
149 for (
int i = 0;
i < benchmarkDataset.getPayloadCount();
i++) {
150 byte[] singleInputData = benchmarkDataset.getPayload(
i).toByteArray();
151 inputDataList.add(benchmarkDataset.getPayload(
i).toByteArray());
152 inputStreamList.add(
new ByteArrayInputStream(
153 benchmarkDataset.getPayload(
i).toByteArray()));
154 inputStringList.add(benchmarkDataset.getPayload(
i));
155 sampleMessageList.add(
156 defaultMessage.newBuilderForType().mergeFrom(singleInputData, extensions).build());
162 void serializeToByteArray(
int reps)
throws IOException {
163 if (sampleMessageList.size() == 0) {
166 for (
int i = 0;
i < reps;
i++) {
167 for (
int j = 0; j < sampleMessageList.size(); j++) {
168 sampleMessageList.get(j).toByteArray();
174 void serializeToMemoryStream(
int reps)
throws IOException {
175 if (sampleMessageList.size() == 0) {
178 for (
int i = 0;
i < reps;
i++) {
179 for (
int j = 0; j < sampleMessageList.size(); j++) {
180 ByteArrayOutputStream
output =
new ByteArrayOutputStream();
181 sampleMessageList.get(j).writeTo(
output);
187 void deserializeFromByteArray(
int reps)
throws IOException {
188 if (inputDataList.size() == 0) {
191 for (
int i = 0;
i < reps;
i++) {
192 for (
int j = 0; j < inputDataList.size(); j++) {
194 inputDataList.get(j), extensions);
200 void deserializeFromMemoryStream(
int reps)
throws IOException {
201 if (inputStreamList.size() == 0) {
204 for (
int i = 0;
i < reps;
i++) {
205 for (
int j = 0; j < inputStreamList.size(); j++) {
207 inputStreamList.get(j), extensions);
208 inputStreamList.get(j).reset();