• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1ProtoZero
2---------
3
4*** note
5**This doc is WIP**, stay tuned.
6<!-- TODO(primiano): write protozero doc. -->
7***
8
9ProtoZero is an almost* zero-copy zero-malloc append-only protobuf library.
10It's designed to be fast and efficient at the cost of a reduced API
11surface for generated stubs. The main limitations consist of:
12- Append-only interface: no readbacks are possible from the stubs.
13- No runtime checks for duplicated or missing mandatory fields.
14- Mandatory ordering when writing of nested messages: once a nested message is
15  started it must be completed before adding any fields to its parent.
16
17*** aside
18Allocations and library calls will happen only when crossing the boundary of a
19contiguous buffer (e.g., to request a new buffer to continue the write).
20Assuming a chunk size (a trace *chunk* is what becomes a *contiguous buffer*
21within ProtoZero) of 4KB, and an average event size of 32 bytes, only 7 out of
221000 events will hit malloc / ipc / library calls.
23***
24
25
26Other resources
27---------------
28* [Design doc](https://goo.gl/EKvEfa)
29