From a02553815f9eac0a3b0763fb0cea62a44b030373 Mon Sep 17 00:00:00 2001 From: Preston Van Loon Date: Tue, 7 Jul 2020 22:47:26 -0700 Subject: [PATCH] Allocate the appropriate memory for retrieveIndicesFromBitfield (#6507) * Allocate the appropriate memory for retrieveIndicesFromBitfield * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 * Merge refs/heads/master into memory0 --- beacon-chain/p2p/peers/BUILD.bazel | 5 ++++- beacon-chain/p2p/peers/benchmark_test.go | 18 ++++++++++++++++++ beacon-chain/p2p/peers/status.go | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 beacon-chain/p2p/peers/benchmark_test.go diff --git a/beacon-chain/p2p/peers/BUILD.bazel b/beacon-chain/p2p/peers/BUILD.bazel index c8be51b367..055366c448 100644 --- a/beacon-chain/p2p/peers/BUILD.bazel +++ b/beacon-chain/p2p/peers/BUILD.bazel @@ -22,7 +22,10 @@ go_library( go_test( name = "go_default_test", - srcs = ["status_test.go"], + srcs = [ + "benchmark_test.go", + "status_test.go", + ], embed = [":go_default_library"], deps = [ "//proto/beacon/p2p/v1:go_default_library", diff --git a/beacon-chain/p2p/peers/benchmark_test.go b/beacon-chain/p2p/peers/benchmark_test.go new file mode 100644 index 0000000000..7c72ef02e2 --- /dev/null +++ b/beacon-chain/p2p/peers/benchmark_test.go @@ -0,0 +1,18 @@ +package peers + +import ( + "testing" + + "github.com/prysmaticlabs/go-bitfield" +) + +func Benchmark_retrieveIndicesFromBitfield(b *testing.B) { + bv := bitfield.NewBitvector64() + for i := uint64(0); i < bv.Len(); i++ { + bv.SetBitAt(i, true) + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + retrieveIndicesFromBitfield(bv) + } +} diff --git a/beacon-chain/p2p/peers/status.go b/beacon-chain/p2p/peers/status.go index 415bcb56c5..2a62757764 100644 --- a/beacon-chain/p2p/peers/status.go +++ b/beacon-chain/p2p/peers/status.go @@ -493,7 +493,7 @@ func (p *Status) HighestEpoch() uint64 { } func retrieveIndicesFromBitfield(bitV bitfield.Bitvector64) []uint64 { - committeeIdxs := []uint64{} + committeeIdxs := make([]uint64, 0, bitV.Count()) for i := uint64(0); i < 64; i++ { if bitV.BitAt(i) { committeeIdxs = append(committeeIdxs, i)