| ProtoZero |
| --------- |
| |
| *** note |
| **This doc is WIP**, stay tuned. |
| <!-- TODO(primiano): write protozero doc. --> |
| *** |
| |
| ProtoZero is an almost* zero-copy zero-malloc append-only protobuf library. |
| It's designed to be fast and efficient at the cost of a reduced API |
| surface for generated stubs. The main limitations consist of: |
| - Append-only interface: no readbacks are possible from the stubs. |
| - No runtime checks for duplicated or missing mandatory fields. |
| - Mandatory ordering when writing of nested messages: once a nested message is |
| started it must be completed before adding any fields to its parent. |
| |
| *** aside |
| Allocations and library calls will happen only when crossing the boundary of a |
| contiguous buffer (e.g., to request a new buffer to continue the write). |
| Assuming a chunk size (a trace *chunk* is what becomes a *contiguous buffer* |
| within ProtoZero) of 4KB, and an average event size of 32 bytes, only 7 out of |
| 1000 events will hit malloc / ipc / library calls. |
| *** |
| |
| |
| Other resources |
| --------------- |
| * [Design doc](https://goo.gl/EKvEfa) |