Protocol Buffers - Google's data interchange format (grpc依赖) https://developers.google.com/protocol-buffers/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.2 KiB

# Protocol Buffers Benchmarks
This directory contains benchmarking schemas and data sets that you
can use to test a variety of performance scenarios against your
protobuf language runtime.
7 years ago
## Benchmark tools and build instructions
7 years ago
First, you need to follow the instruction in the root directory's README to
build your language's protobuf, then:
7 years ago
### CPP
We are using [google/benchmark](https://github.com/google/benchmark) as the
benchmark tool for testing cpp. This is included as submodule under third_party
directory. To init and build this tools, you need to do this under root dirctory:
```
7 years ago
$ cd third_party
$ git submodule update --init -r
$ cd benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make && cd ../..
```
7 years ago
### JAVA
We're using maven to build the java benchmarks, which is the same as to build
the Java protobuf. There're no other tools need to install. We're using
[google/caliper](https://github.com/google/caliper) as benchmark tool, which
can be automaticly included by maven.
## Run instructions
To run all the benchmark dataset:
For java:
```
$ make java
```
For cpp:
```
$ make cpp
```
To run a specific dataset:
For java:
```
$ make java-benchmark
$ ./java-benchmark $(specific generated dataset file name)
```
For cpp:
```
$ make cpp-benchmark
$ ./cpp-benchmark $(specific generated dataset file name)
```
7 years ago
## Benchmark datasets
There's some big testing data not included in the directory initially, you need to
run the following command to download the testing data:
```
$ ./download_data.sh
```
Each data set is in the format of benchmarks.proto:
7 years ago
1. name is the benchmark dataset's name.
2. message_name is the benchmark's message type full name (including package and message name)
3. payload is the list of raw data.
7 years ago
The schema for the datasets is described in `benchmarks.proto`.
Benchmark likely want to run several benchmarks against each data set (parse,
serialize, possibly JSON, possibly using different APIs, etc).
We would like to add more data sets. In general we will favor data sets
that make the overall suite diverse without being too large or having
too many similar tests. Ideally everyone can run through the entire
suite without the test run getting too long.