From 21755f9ec0fdacf1ce12fc626ebef70bf0ba30b1 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Fri, 1 Oct 2021 17:09:26 +0200 Subject: [PATCH] Speed up counting of bits in allocator Benchmark: goos: linux goarch: amd64 pkg: k8s.io/kubernetes/pkg/registry/core/service/allocator cpu: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz Before: BenchmarkCountBits-8 9459236 140.4 ns/op After: BenchmarkCountBits-8 140667842 9.541 ns/op --- pkg/registry/core/service/allocator/utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/registry/core/service/allocator/utils.go b/pkg/registry/core/service/allocator/utils.go index baf64506e09..c034f51e6c9 100644 --- a/pkg/registry/core/service/allocator/utils.go +++ b/pkg/registry/core/service/allocator/utils.go @@ -24,8 +24,8 @@ import ( // countBits returns the number of set bits in n func countBits(n *big.Int) int { var count int = 0 - for _, b := range n.Bytes() { - count += bits.OnesCount8(uint8(b)) + for _, w := range n.Bits() { + count += bits.OnesCount64(uint64(w)) } return count }