protobuf/benchmarks
Jon Skeet fb77cc9d9f More cleanup, based around searches for "Google.ProtocolBuffers"
- Remove some old proto2-based C#-only messages
- Remove the "build" directory which only contained out-of-date files
- Remove the csharp_namespace option from proto2 messages
- Change "Google.ProtocolBuffers" to "Google.Protobuf" in other messages
2015-06-26 20:13:07 +01:00
..
google_message1.dat Update benchmark data. 2009-03-05 23:16:14 +00:00
google_message2.dat Initial benchmarking. 2009-03-05 11:00:49 +00:00
google_size.proto More cleanup, based around searches for "Google.ProtocolBuffers" 2015-06-26 20:13:07 +01:00
google_speed.proto More cleanup, based around searches for "Google.ProtocolBuffers" 2015-06-26 20:13:07 +01:00
ProtoBench.java Replace links to code.google.com/protobuf with developers.google.com/protocol-buffers 2014-10-01 16:26:23 -07:00
readme.txt Initial benchmarking. 2009-03-05 11:00:49 +00:00

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.