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.