Home | History | Annotate | only in /external/protobuf/benchmarks
Up to higher level directory
NameDateSize
benchmark_messages_proto2.proto21-Aug-20184.7K
benchmark_messages_proto3.proto21-Aug-20181.6K
benchmarks.proto21-Aug-20182.9K
generate_datasets.cc21-Aug-20184.4K
google_message1.dat21-Aug-2018228
google_message2.dat21-Aug-201882.6K
google_size.proto21-Aug-20184.6K
Makefile.am21-Aug-20182.9K
ProtoBench.java21-Aug-20188.1K
README.md21-Aug-2018923
readme.txt21-Aug-20181.7K

README.md

      1 
      2 # Protocol Buffers Benchmarks
      3 
      4 This directory contains benchmarking schemas and data sets that you
      5 can use to test a variety of performance scenarios against your
      6 protobuf language runtime.
      7 
      8 The schema for the datasets is described in `benchmarks.proto`.
      9 
     10 Generate the data sets like so:
     11 
     12 ```
     13 $ make
     14 $ ./generate-datasets
     15 Wrote dataset: dataset.google_message1_proto3.pb
     16 Wrote dataset: dataset.google_message1_proto2.pb
     17 Wrote dataset: dataset.google_message2.pb
     18 $
     19 ```
     20 
     21 Each data set will be written to its own file.  Benchmarks will
     22 likely want to run several benchmarks against each data set (parse,
     23 serialize, possibly JSON, possibly using different APIs, etc).
     24 
     25 We would like to add more data sets.  In general we will favor data sets
     26 that make the overall suite diverse without being too large or having
     27 too many similar tests.  Ideally everyone can run through the entire
     28 suite without the test run getting too long.
     29 

readme.txt

      1 Contents
      2 --------
      3 
      4 This folder contains three kinds of file:
      5 
      6 - Code, such as ProtoBench.java, to build the benchmarking framework.
      7 - Protocol buffer definitions (.proto files)
      8 - Sample data files
      9 
     10 If we end up with a lot of different benchmarks it may be worth
     11 separating these out info different directories, but while there are
     12 so few they might as well all be together.
     13 
     14 Running a benchmark (Java)
     15 --------------------------
     16 
     17 1) Build protoc and the Java protocol buffer library. The examples
     18    below assume a jar file (protobuf.jar) has been built and copied
     19    into this directory.
     20 
     21 2) Build ProtoBench:
     22    $ javac -d tmp -cp protobuf.jar ProtoBench.java
     23    
     24 3) Generate code for the relevant benchmark protocol buffer, e.g.
     25    $ protoc --java_out=tmp google_size.proto google_speed.proto
     26    
     27 4) Build the generated code, e.g.
     28    $ cd tmp
     29    $ javac -d . -cp ../protobuf.jar benchmarks/*.java
     30            
     31 5) Run the test. Arguments are given in pairs - the first argument
     32    is the descriptor type; the second is the filename. For example:
     33    $ java -cp .;../protobuf.jar com.google.protocolbuffers.ProtoBench
     34           benchmarks.GoogleSize$SizeMessage1 ../google_message1.dat
     35           benchmarks.GoogleSpeed$SpeedMessage1 ../google_message1.dat
     36           benchmarks.GoogleSize$SizeMessage2 ../google_message2.dat
     37           benchmarks.GoogleSpeed$SpeedMessage2 ../google_message2.dat
     38           
     39 6) Wait! Each test runs for around 30 seconds, and there are 6 tests
     40    per class/data combination. The above command would therefore take
     41    about 12 minutes to run.
     42 
     43    
     44 Benchmarks available
     45 --------------------
     46 
     47 From Google:
     48 google_size.proto and google_speed.proto, messages
     49 google_message1.dat and google_message2.dat. The proto files are
     50 equivalent, but optimized differently.
     51