51 lines
1.7 KiB
Plaintext
51 lines
1.7 KiB
Plaintext
|
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.
|