Skip to content

Commit 0cb300d

Browse files
authored
Merge pull request algorand#2312 from algonathan/lruaccts-benchmark
testing: improve lruaccts benchmark
2 parents 520e896 + b27ab2c commit 0cb300d

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

ledger/lruaccts_test.go

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -198,24 +198,29 @@ func TestLRUAccountsOmittedPendingWrites(t *testing.T) {
198198
}
199199

200200
func 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

221226
func 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

Comments
 (0)