| commit | 018c91c6f545d4d6bec74c8a8e3ed5dfd27e1a3e | [log] [tgz] |
|---|---|---|
| author | Marcin Kowalczyk <qrczak@google.com> | Wed Dec 10 17:05:42 2025 +0100 |
| committer | qrczak <qrczak@google.com> | Wed Dec 10 17:09:17 2025 +0100 |
| tree | e1916457a37fcd885ff4b53ca5426758d3ea1814 | |
| parent | fb10e1ed5963c28f96ab935ab001b3594b48cd49 [diff] |
Use a tail-recursive loop over indices instead of `std::apply()`. With many field handlers, the lambda passed to `apply()` is not inlined, and calling it yields a large number of `push` instructions to call it. This speeds up processing some protos with a large number of fields by 20%. PiperOrigin-RevId: 842731220
Riegeli/records is a file format for storing a sequence of string records, typically serialized protocol buffers. It supports dense compression, fast decoding, seeking, detection and optional skipping of data corruption, filtering of proto message fields for even faster decoding, and parallel encoding.
See documentation.
Riegeli file format will only change in a backward compatible way (i.e. future readers will understand current files, but current readers might not understand files using future features).
Riegeli C++ API might change in incompatible ways.