@@ -198,24 +198,29 @@ func TestLRUAccountsOmittedPendingWrites(t *testing.T) {
198198}
199199
200200func BenchmarkLRUAccountsWrite (b * testing.B ) {
201- accounts := generatePersistedAccountData (0 , 5000 )
202- fillerAccounts := generatePersistedAccountData (5000 , 100000 )
201+ numTestAccounts := 5000
202+ // there are 2500 accounts that overlap
203+ fillerAccounts := generatePersistedAccountData (0 , 97500 )
204+ accounts := generatePersistedAccountData (97500 - numTestAccounts / 2 , 97500 + numTestAccounts / 2 )
203205
204- baseAccts := make ([]lruAccounts , b .N )
206+ b .ResetTimer ()
207+ b .StopTimer ()
205208 for i := 0 ; i < b .N ; i ++ {
206- baseAccts [i ].init (logging .TestingLog (b ), 10 , 5 )
207- for _ , account := range fillerAccounts {
208- baseAccts [i ].write (account )
209- }
209+ var baseAcct lruAccounts
210+ baseAcct .init (logging .TestingLog (b ), 10 , 5 )
211+ baseAcct = fillLRUAccounts (baseAcct , fillerAccounts )
212+
213+ b .StartTimer ()
214+ fillLRUAccounts (baseAcct , accounts )
215+ b .StopTimer ()
210216 }
217+ }
211218
212- b .ResetTimer ()
213- for i := 0 ; i < b .N ; i ++ {
214- baseAcct := baseAccts [i ]
215- for _ , account := range accounts {
216- baseAcct .write (account )
217- }
219+ func fillLRUAccounts (baseAcct lruAccounts , fillerAccounts []persistedAccountData ) lruAccounts {
220+ for _ , account := range fillerAccounts {
221+ baseAcct .write (account )
218222 }
223+ return baseAcct
219224}
220225
221226func generatePersistedAccountData (startRound , endRound int ) []persistedAccountData {
@@ -228,7 +233,7 @@ func generatePersistedAccountData(startRound, endRound int) []persistedAccountDa
228233
229234 accounts [i - startRound ] = persistedAccountData {
230235 addr : basics .Address (digest ),
231- round : basics .Round (i ),
236+ round : basics .Round (i + startRound ),
232237 rowid : int64 (i ),
233238 accountData : basics.AccountData {MicroAlgos : basics.MicroAlgos {Raw : uint64 (i )}},
234239 }
0 commit comments