aboutsummaryrefslogtreecommitdiffhomepage
path: root/benchmarks
diff options
context:
space:
mode:
authorGravatar Yilun Chong <yilunchong@google.com>2017-12-14 17:26:16 -0800
committerGravatar Yilun Chong <yilunchong@google.com>2017-12-14 17:26:16 -0800
commit4b0209140ea3155b78960d2fe3f62062c1c098a6 (patch)
treec388771b0588e09ed13b80d7b2e57c7d3c28f1dc /benchmarks
parentcd32aae377993b727447f1ba25bd186b530969cb (diff)
add cpp
Diffstat (limited to 'benchmarks')
-rwxr-xr-xbenchmarks/Makefile.am18
-rw-r--r--benchmarks/README.md18
2 files changed, 23 insertions, 13 deletions
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.