Skip to content
Benchmark of several Protocol Buffers implementations suitable for use on embedded devices.
Protocol Buffer C Makefile Gnuplot HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This is a bunch of scripts for comparing three implementations of Google's
Protocol Buffers format:

- nanopb
- protobuf-embedded-c
- protobuf-c

This is targeted towards embedded platforms, and therefore the tests are
run in simulators. The platforms currently tested are AVR (atmega128) and
ARM (Cortex-M3).

To run the tests you need to have the following installed:
- arm-none-eabi-gcc toolchain, for example
- qemu-system-arm simulator
- avr-gcc
- simulavrxx 1.0rc0 or newer (recommend newest git master)
- protobuf-compiler, python-protobuf, libprotobuf-dev


The tests are based on alltypes.proto, included in template folder. This message
contains all the field types available in Protocol Buffers. The success status
of the tests is encoded in the message given in results.proto. Number of instruction
required for the complete test program is computed, as is the used stack and heap
memory. The compiled code size includes library parts and generated protocol definitions,
but not the test program nor platform libraries.

Because the received message is much larger, more weight is given to decoding speed than
encoding speed. The appropriateness of this depends on application.


All included protobuf libraries are under their respective licenses.

Any scripts and data files used for simulations are in public domain.

You can’t perform that action at this time.