Stop pre-computing log2 values in allocator.go
#11
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.
Pre-computing the
log2
values of integers until 1024 in a global slice in aninit
function takes around 1ms on AWS Lambda environment, and causes around 10kB of allocations.Removing the global slice and pre-computing entirely, as well as the custom computing of log2 in favor of using the std lib
bits.Len
function, removes this unneeded overhead, and is actually faster.Benchmark
I ran a quick benchmark on both versions on my laptop, they had similar performance for numbers below 1024 (around
2ns / op
), and using random integers the previous version took an average23ns / op
while the new version was still2ns / op
.This change is