github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/sync/initial-sync/fsm_benchmark_test.go (about) 1 package initialsync 2 3 import ( 4 "testing" 5 6 "github.com/prysmaticlabs/prysm/shared/testutil/require" 7 ) 8 9 func BenchmarkStateMachine_trigger(b *testing.B) { 10 sm := newStateMachineManager() 11 12 handlerFn := func(m *stateMachine, in interface{}) (id stateID, err error) { 13 response, ok := in.(*fetchRequestParams) 14 if !ok { 15 return 0, errInputNotFetchRequestParams 16 } 17 _ = response.count 18 return stateScheduled, nil 19 } 20 21 sm.addEventHandler(eventTick, stateNew, handlerFn) 22 sm.addEventHandler(eventTick, stateScheduled, handlerFn) 23 sm.addEventHandler(eventTick, stateDataParsed, handlerFn) 24 sm.addEventHandler(eventTick, stateSkipped, handlerFn) 25 sm.addEventHandler(eventTick, stateSent, handlerFn) 26 sm.addStateMachine(64) 27 28 b.ReportAllocs() 29 b.ResetTimer() 30 31 for i := 0; i < b.N; i++ { 32 data := &fetchRequestParams{ 33 start: 23, 34 count: 32, 35 } 36 err := sm.machines[64].trigger(eventTick, data) 37 require.NoError(b, err) 38 } 39 }