1Contents 2-------- 3 4This 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 10If we end up with a lot of different benchmarks it may be worth 11separating these out info different directories, but while there are 12so few they might as well all be together. 13 14Running a benchmark (Java) 15-------------------------- 16 171) 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 212) Build ProtoBench: 22 $ javac -d tmp -cp protobuf.jar ProtoBench.java 23 243) Generate code for the relevant benchmark protocol buffer, e.g. 25 $ protoc --java_out=tmp google_size.proto google_speed.proto 26 274) Build the generated code, e.g. 28 $ cd tmp 29 $ javac -d . -cp ../protobuf.jar benchmarks/*.java 30 315) 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 396) 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 44Benchmarks available 45-------------------- 46 47From Google: 48google_size.proto and google_speed.proto, messages 49google_message1.dat and google_message2.dat. The proto files are 50equivalent, but optimized differently. 51