lib/db: Don't use global fileset in benchmarks (#5902)

This commit is contained in:
Simon Frei 2019-07-28 22:31:25 +02:00 committed by Jakob Borg
parent fd847d4efe
commit 710f5c199f

View File

@ -16,13 +16,13 @@ import (
) )
var files, oneFile, firstHalf, secondHalf []protocol.FileInfo var files, oneFile, firstHalf, secondHalf []protocol.FileInfo
var benchS *db.FileSet
func lazyInitBenchFileSet() { func lazyInitBenchFiles() {
if benchS != nil { if files != nil {
return return
} }
files = make([]protocol.FileInfo, 0, 1000)
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
files = append(files, protocol.FileInfo{ files = append(files, protocol.FileInfo{
Name: fmt.Sprintf("file%d", i), Name: fmt.Sprintf("file%d", i),
@ -35,11 +35,17 @@ func lazyInitBenchFileSet() {
firstHalf = files[:middle] firstHalf = files[:middle]
secondHalf = files[middle:] secondHalf = files[middle:]
oneFile = firstHalf[middle-1 : middle] oneFile = firstHalf[middle-1 : middle]
}
func getBenchFileSet() (*db.Lowlevel, *db.FileSet) {
lazyInitBenchFiles()
ldb := db.OpenMemory() ldb := db.OpenMemory()
benchS = db.NewFileSet("test)", fs.NewFilesystem(fs.FilesystemTypeBasic, "."), ldb) benchS := db.NewFileSet("test)", fs.NewFilesystem(fs.FilesystemTypeBasic, "."), ldb)
replace(benchS, remoteDevice0, files) replace(benchS, remoteDevice0, files)
replace(benchS, protocol.LocalDeviceID, firstHalf) replace(benchS, protocol.LocalDeviceID, firstHalf)
return ldb, benchS
} }
func BenchmarkReplaceAll(b *testing.B) { func BenchmarkReplaceAll(b *testing.B) {
@ -56,7 +62,8 @@ func BenchmarkReplaceAll(b *testing.B) {
} }
func BenchmarkUpdateOneChanged(b *testing.B) { func BenchmarkUpdateOneChanged(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
changed := make([]protocol.FileInfo, 1) changed := make([]protocol.FileInfo, 1)
changed[0] = oneFile[0] changed[0] = oneFile[0]
@ -75,7 +82,8 @@ func BenchmarkUpdateOneChanged(b *testing.B) {
} }
func BenchmarkUpdate100Changed(b *testing.B) { func BenchmarkUpdate100Changed(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
unchanged := files[100:200] unchanged := files[100:200]
changed := append([]protocol.FileInfo{}, unchanged...) changed := append([]protocol.FileInfo{}, unchanged...)
@ -96,7 +104,8 @@ func BenchmarkUpdate100Changed(b *testing.B) {
} }
func BenchmarkUpdate100ChangedRemote(b *testing.B) { func BenchmarkUpdate100ChangedRemote(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
unchanged := files[100:200] unchanged := files[100:200]
changed := append([]protocol.FileInfo{}, unchanged...) changed := append([]protocol.FileInfo{}, unchanged...)
@ -117,7 +126,8 @@ func BenchmarkUpdate100ChangedRemote(b *testing.B) {
} }
func BenchmarkUpdateOneUnchanged(b *testing.B) { func BenchmarkUpdateOneUnchanged(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -128,7 +138,8 @@ func BenchmarkUpdateOneUnchanged(b *testing.B) {
} }
func BenchmarkNeedHalf(b *testing.B) { func BenchmarkNeedHalf(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -146,8 +157,6 @@ func BenchmarkNeedHalf(b *testing.B) {
} }
func BenchmarkNeedHalfRemote(b *testing.B) { func BenchmarkNeedHalfRemote(b *testing.B) {
lazyInitBenchFileSet()
ldb := db.OpenMemory() ldb := db.OpenMemory()
defer ldb.Close() defer ldb.Close()
fset := db.NewFileSet("test)", fs.NewFilesystem(fs.FilesystemTypeBasic, "."), ldb) fset := db.NewFileSet("test)", fs.NewFilesystem(fs.FilesystemTypeBasic, "."), ldb)
@ -170,7 +179,8 @@ func BenchmarkNeedHalfRemote(b *testing.B) {
} }
func BenchmarkHave(b *testing.B) { func BenchmarkHave(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -188,7 +198,8 @@ func BenchmarkHave(b *testing.B) {
} }
func BenchmarkGlobal(b *testing.B) { func BenchmarkGlobal(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -206,7 +217,8 @@ func BenchmarkGlobal(b *testing.B) {
} }
func BenchmarkNeedHalfTruncated(b *testing.B) { func BenchmarkNeedHalfTruncated(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -224,7 +236,8 @@ func BenchmarkNeedHalfTruncated(b *testing.B) {
} }
func BenchmarkHaveTruncated(b *testing.B) { func BenchmarkHaveTruncated(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
@ -242,7 +255,8 @@ func BenchmarkHaveTruncated(b *testing.B) {
} }
func BenchmarkGlobalTruncated(b *testing.B) { func BenchmarkGlobalTruncated(b *testing.B) {
lazyInitBenchFileSet() ldb, benchS := getBenchFileSet()
defer ldb.Close()
b.ResetTimer() b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {