Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Run bench code like:
cd atproto/repo; go test -bench=.
I swapped out the small .car file for a full dump of my personal CAR for testing.
The current tests are around the most basic MST operations: loading from a CAR slice ("read") or computing hashes without saving blocks ("hash").
My initial numbers with larger CAR file:
fiddling a bit shaved some percentage but not a lot:
to count allocations:
Note this is all for synthetic benchmarks, not real world usage.
Some quick notes (I haven't done much alloc reduction like this in go before):
[]byte
passed around, more explicit buffers might help in some situations[]byte
for strings instead ofstring
might be resulting in an alloc in there somewhere? but that only happens at therepo
abstraction layer, not simply working with MST nodes