Yilun Chong 7 ani în urmă
părinte
comite
4b0209140e
3 a modificat fișierele cu 23 adăugiri și 16 ștergeri
  1. 15 3
      benchmarks/Makefile.am
  2. 8 10
      benchmarks/README.md
  3. 0 3
      tests.sh

+ 15 - 3
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                                                        \

+ 8 - 10
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.

+ 0 - 3
tests.sh

@@ -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 ""