prysm-pulse/beacon-chain/state/state-native/setters_eth1_test.go
Delweng f812bdcf60
beacon-node/state: alloc 1more item for append case (#12832)
* beacon-chain/state/attenstation: alloc +1 items for append

Signed-off-by: jsvisa <delweng@gmail.com>

* beacon-chain/state/eth1: alloc +1 items for append

Signed-off-by: jsvisa <delweng@gmail.com>

* beacon-chain/state/misc: alloc +1 items for append

Signed-off-by: jsvisa <delweng@gmail.com>

* beacon-chain/state/participation: alloc +1 items for append

Signed-off-by: jsvisa <delweng@gmail.com>

* beacon-chain/state/validator: alloc +1 items for append

Signed-off-by: jsvisa <delweng@gmail.com>

* Add some benchmarks

* Evaluate append vs copy. Apply results

* fix copy issue

* revert copy changes from a5ba8d4352f647ad384981264cb6e0553481f23b

---------

Signed-off-by: jsvisa <delweng@gmail.com>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com>
2023-10-03 20:41:55 +00:00

40 lines
1013 B
Go

package state_native_test
import (
"testing"
state_native "github.com/prysmaticlabs/prysm/v4/beacon-chain/state/state-native"
"github.com/prysmaticlabs/prysm/v4/config/params"
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
"github.com/prysmaticlabs/prysm/v4/testing/require"
)
func BenchmarkAppendEth1DataVotes(b *testing.B) {
st, err := state_native.InitializeFromProtoPhase0(&ethpb.BeaconState{})
require.NoError(b, err)
max := params.BeaconConfig().Eth1DataVotesLength()
if max < 2 {
b.Fatalf("Eth1DataVotesLength is less than 2")
}
for i := uint64(0); i < max-2; i++ {
err := st.AppendEth1DataVotes(&ethpb.Eth1Data{
DepositCount: i,
DepositRoot: make([]byte, 64),
BlockHash: make([]byte, 64),
})
require.NoError(b, err)
}
ref := st.Copy()
for i := 0; i < b.N; i++ {
err := ref.AppendEth1DataVotes(&eth.Eth1Data{DepositCount: uint64(i)})
require.NoError(b, err)
ref = st.Copy()
}
}