33 #include "benchmark/benchmark.h"
34 #include "benchmarks.pb.h"
35 #include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h"
36 #include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h"
37 #include "datasets/google_message2/benchmark_message2.pb.h"
38 #include "datasets/google_message3/benchmark_message3.pb.h"
39 #include "datasets/google_message4/benchmark_message4.pb.h"
42 #define PREFIX "dataset."
45 using benchmarks::BenchmarkDataset;
55 for (
int i = 0;
i < dataset.payload_size();
i++) {
61 dataset.message_name());
64 std::cerr <<
"Couldn't find message named '" << dataset.message_name()
68 prototype_ = MessageFactory::generated_factory()->GetPrototype(
d);
69 SetName((dataset.name() +
suffix).c_str());
98 :
Fixture(dataset,
"_parse_new") {}
104 while (
state.KeepRunning()) {
119 :
Fixture(dataset,
"_parse_newarena") {}
126 while (
state.KeepRunning()) {
142 :
Fixture(dataset,
"_parse_reuse") {}
149 while (
state.KeepRunning()) {
163 :
Fixture(dataset,
"_serialize") {
181 while (
state.KeepRunning()) {
197 "', please make sure you are running "
198 "this command from the benchmarks/ "
201 std::istreambuf_iterator<char>());
217 BenchmarkDataset dataset;
220 if (dataset.message_name() ==
"benchmarks.proto3.GoogleMessage1") {
221 RegisterBenchmarksForType<benchmarks::proto3::GoogleMessage1>(dataset);
222 }
else if (dataset.message_name() ==
"benchmarks.proto2.GoogleMessage1") {
223 RegisterBenchmarksForType<benchmarks::proto2::GoogleMessage1>(dataset);
224 }
else if (dataset.message_name() ==
"benchmarks.proto2.GoogleMessage2") {
225 RegisterBenchmarksForType<benchmarks::proto2::GoogleMessage2>(dataset);
226 }
else if (dataset.message_name() ==
227 "benchmarks.google_message3.GoogleMessage3") {
229 <benchmarks::google_message3::GoogleMessage3>(dataset);
230 }
else if (dataset.message_name() ==
231 "benchmarks.google_message4.GoogleMessage4") {
233 <benchmarks::google_message4::GoogleMessage4>(dataset);
235 std::cerr <<
"Unknown message type: " << dataset.message_name();
240 int main(
int argc,
char *argv[]) {
243 std::cerr <<
"Usage: ./cpp-benchmark <input data>" << std::endl;
244 std::cerr <<
"input data is in the format of \"benchmarks.proto\""
248 for (
int i = 1;
i < argc;
i++) {