| Contents | 
 | -------- | 
 |  | 
 | This folder contains three kinds of file: | 
 |  | 
 | - Code, such as ProtoBench.java, to build the benchmarking framework. | 
 | - Protocol buffer definitions (.proto files) | 
 | - Sample data files | 
 |  | 
 | If we end up with a lot of different benchmarks it may be worth | 
 | separating these out info different directories, but while there are | 
 | so few they might as well all be together. | 
 |  | 
 | Running a benchmark (Java) | 
 | -------------------------- | 
 |  | 
 | 1) Build protoc and the Java protocol buffer library. The examples | 
 |    below assume a jar file (protobuf.jar) has been built and copied | 
 |    into this directory. | 
 |  | 
 | 2) Build ProtoBench: | 
 |    $ javac -d tmp -cp protobuf.jar ProtoBench.java | 
 |     | 
 | 3) Generate code for the relevant benchmark protocol buffer, e.g. | 
 |    $ protoc --java_out=tmp google_size.proto google_speed.proto | 
 |     | 
 | 4) Build the generated code, e.g. | 
 |    $ cd tmp | 
 |    $ javac -d . -cp ../protobuf.jar benchmarks/*.java | 
 |             | 
 | 5) Run the test. Arguments are given in pairs - the first argument | 
 |    is the descriptor type; the second is the filename. For example: | 
 |    $ java -cp .;../protobuf.jar com.google.protocolbuffers.ProtoBench | 
 |           benchmarks.GoogleSize$SizeMessage1 ../google_message1.dat | 
 |           benchmarks.GoogleSpeed$SpeedMessage1 ../google_message1.dat | 
 |           benchmarks.GoogleSize$SizeMessage2 ../google_message2.dat | 
 |           benchmarks.GoogleSpeed$SpeedMessage2 ../google_message2.dat | 
 |            | 
 | 6) Wait! Each test runs for around 30 seconds, and there are 6 tests | 
 |    per class/data combination. The above command would therefore take | 
 |    about 12 minutes to run. | 
 |  | 
 |     | 
 | Benchmarks available | 
 | -------------------- | 
 |  | 
 | From Google: | 
 | google_size.proto and google_speed.proto, messages | 
 | google_message1.dat and google_message2.dat. The proto files are | 
 | equivalent, but optimized differently. |