Open
Description
How can I generate/encode data with zero heap allocations?
Example use case: I want to generate data to write into a file, so I need to allocate a single structure, message and arena. I can pre-allocate the arena buffer. But all my attempts at writing a loop fail to make it zero alloc (either the arena grows or message escapes to heap).
Here's the set of test benchmarks: https://github.com/matheusd/capnptest01/blob/master/bench_test.go
And here are my results:
BenchmarkSetText01-7 6966074 174.9 ns/op 99 B/op 0 allocs/op
BenchmarkSetText02-7 1000000 1100 ns/op 352 B/op 5 allocs/op
BenchmarkSetText03-7 2315973 517.9 ns/op 72 B/op 2 allocs/op
BenchmarkSetText04-7 2661026 429.9 ns/op 260 B/op 0 allocs/op
While benchmarks 01 and 04 are shown with 0 allocs, that's actually just the amortized growth of the arena which ends up becoming large in those tests.
Metadata
Metadata
Assignees
Labels
No labels