Brian Silverman | 9c614bc | 2016-02-15 20:20:02 -0500 | [diff] [blame^] | 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. |