Skip to content

Commit

Permalink
add cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
BSBandme committed Dec 15, 2017
1 parent cd32aae commit 4b02091
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
18 changes: 15 additions & 3 deletions benchmarks/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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 \
Expand Down
18 changes: 8 additions & 10 deletions benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
3 changes: 0 additions & 3 deletions tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ build_cpp() {
# appears to be missing it: https://github.com/travis-ci/travis-ci/issues/6996
if [[ $(type cmake 2>/dev/null) ]]; then
# Verify benchmarking code can build successfully.
git submodule init
git submodule update
cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make && cd ../..
cd benchmarks && make cpp-benchmark && cd ..
else
echo ""
Expand Down

0 comments on commit 4b02091

Please sign in to comment.