From 4b0209140ea3155b78960d2fe3f62062c1c098a6 Mon Sep 17 00:00:00 2001 From: Yilun Chong Date: Thu, 14 Dec 2017 17:26:16 -0800 Subject: add cpp --- benchmarks/Makefile.am | 18 +++++++++++++++--- benchmarks/README.md | 18 ++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) (limited to 'benchmarks') diff --git a/benchmarks/Makefile.am b/benchmarks/Makefile.am index 2158feac..582e9934 100755 --- a/benchmarks/Makefile.am +++ b/benchmarks/Makefile.am @@ -100,6 +100,17 @@ $(benchmarks_protoc_outputs_header): protoc_middleman $(benchmarks_protoc_outputs_proto2): protoc_middleman2 $(benchmarks_protoc_outputs_proto2_header): protoc_middleman2 +initialize_submodule: + oldpwd=`pwd` + cd $(top_srcdir)/third_party + git submodule update --init -r + cd $(top_srcdir)/third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make + cd $$oldpwd + touch initialize_submodule + +$(top_srcdir)/src/libprotobuf.la: initialize_submodule +$(top_srcdir)/third_party/benchmark/src/libbenchmark.a: initialize_submodule + AM_CXXFLAGS = $(NO_OPT_CXXFLAGS) $(PROTOBUF_OPT_FLAG) -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare bin_PROGRAMS = cpp-benchmark @@ -110,21 +121,21 @@ cpp_benchmark_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir) -I$(top_srcdir)/third_p # Explicit deps because BUILT_SOURCES are only done before a "make all/check" # so a direct "make test_cpp" could fail if parallel enough. # See: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html#Recording-Dependencies-manually -cpp_benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) +cpp_benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a nodist_cpp_benchmark_SOURCES = \ $(benchmarks_protoc_outputs) \ $(benchmarks_protoc_outputs_proto2) \ $(benchmarks_protoc_outputs_proto2_header) \ $(benchmarks_protoc_outputs_header) -cpp: protoc_middleman protoc_middleman2 cpp-benchmark +cpp: protoc_middleman protoc_middleman2 cpp-benchmark initialize_submodule ./cpp-benchmark $(all_data) ############ CPP RULES END ############ ############# JAVA RULES ############## -java_benchmark_testing_files = +java_benchmark_testing_files = \ java/src/main/java/com/google/protobuf/ProtoBench.java \ java/src/main/java/com/google/protobuf/ProtoBenchCaliper.java @@ -152,6 +163,7 @@ CLEANFILES = \ $(benchmarks_protoc_outputs_header) \ $(benchmarks_protoc_outputs_proto2) \ $(benchmarks_protoc_outputs_proto2_header) \ + initialize_submodule \ make_tmp_dir \ protoc_middleman \ protoc_middleman2 \ diff --git a/benchmarks/README.md b/benchmarks/README.md index f266d41e..9621053f 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -5,21 +5,17 @@ This directory contains benchmarking schemas and data sets that you can use to test a variety of performance scenarios against your protobuf language runtime. -## Benchmark tools and build instructions +## Prerequisite First, you need to follow the instruction in the root directory's README to build your language's protobuf, then: ### CPP -We are using [google/benchmark](https://github.com/google/benchmark) as the -benchmark tool for testing cpp. This is included as submodule under third_party -directory. To init and build this tools, you need to do this under root dirctory: +You need to install [cmake](https://cmake.org/) before building the benchmark. -``` -$ cd third_party -$ git submodule update --init -r -$ cd benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make && cd ../.. -``` +We are using [google/benchmark](https://github.com/google/benchmark) as the +benchmark tool for testing cpp. This will be automaticly made during build the +cpp benchmark. ### JAVA We're using maven to build the java benchmarks, which is the same as to build @@ -62,13 +58,15 @@ $ ./cpp-benchmark $(specific generated dataset file name) ## Benchmark datasets -There's some big testing data not included in the directory initially, you need to +There's some optional big testing data which is not included in the directory initially, you need to run the following command to download the testing data: ``` $ ./download_data.sh ``` +After doing this the big data file will automaticly generated in the benchmark directory. + Each data set is in the format of benchmarks.proto: 1. name is the benchmark dataset's name. -- cgit v1.2.3