+70
-13
@@ -16,7 +16,7 @@ import (
|
||||
"github.com/syncthing/syncthing/lib/protocol"
|
||||
)
|
||||
|
||||
var files, oneFile, firstHalf, secondHalf []protocol.FileInfo
|
||||
var files, filesUpdated, oneFile, firstHalf, secondHalf, changed100, unchanged100 []protocol.FileInfo
|
||||
|
||||
func lazyInitBenchFiles() {
|
||||
if files != nil {
|
||||
@@ -36,6 +36,12 @@ func lazyInitBenchFiles() {
|
||||
firstHalf = files[:middle]
|
||||
secondHalf = files[middle:]
|
||||
oneFile = firstHalf[middle-1 : middle]
|
||||
|
||||
unchanged100 := files[100:200]
|
||||
changed100 := append([]protocol.FileInfo{}, unchanged100...)
|
||||
for i := range changed100 {
|
||||
changed100[i].Version = changed100[i].Version.Copy().Update(myID)
|
||||
}
|
||||
}
|
||||
|
||||
func getBenchFileSet() (*db.Lowlevel, *db.FileSet) {
|
||||
@@ -86,18 +92,43 @@ func BenchmarkUpdate100Changed(b *testing.B) {
|
||||
ldb, benchS := getBenchFileSet()
|
||||
defer ldb.Close()
|
||||
|
||||
unchanged := files[100:200]
|
||||
changed := append([]protocol.FileInfo{}, unchanged...)
|
||||
for i := range changed {
|
||||
changed[i].Version = changed[i].Version.Copy().Update(myID)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
if i%2 == 0 {
|
||||
benchS.Update(protocol.LocalDeviceID, changed100)
|
||||
} else {
|
||||
benchS.Update(protocol.LocalDeviceID, unchanged100)
|
||||
}
|
||||
}
|
||||
|
||||
b.ReportAllocs()
|
||||
}
|
||||
|
||||
func setup10Remotes(benchS *db.FileSet) {
|
||||
idBase := remoteDevice1.String()[1:]
|
||||
first := 'J'
|
||||
for i := 0; i < 10; i++ {
|
||||
id, _ := protocol.DeviceIDFromString(fmt.Sprintf("%v%s", first+rune(i), idBase))
|
||||
if i%2 == 0 {
|
||||
benchS.Update(id, changed100)
|
||||
} else {
|
||||
benchS.Update(id, unchanged100)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkUpdate100Changed10Remotes(b *testing.B) {
|
||||
ldb, benchS := getBenchFileSet()
|
||||
defer ldb.Close()
|
||||
|
||||
setup10Remotes(benchS)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
if i%2 == 0 {
|
||||
benchS.Update(protocol.LocalDeviceID, changed)
|
||||
benchS.Update(protocol.LocalDeviceID, changed100)
|
||||
} else {
|
||||
benchS.Update(protocol.LocalDeviceID, unchanged)
|
||||
benchS.Update(protocol.LocalDeviceID, unchanged100)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,18 +139,28 @@ func BenchmarkUpdate100ChangedRemote(b *testing.B) {
|
||||
ldb, benchS := getBenchFileSet()
|
||||
defer ldb.Close()
|
||||
|
||||
unchanged := files[100:200]
|
||||
changed := append([]protocol.FileInfo{}, unchanged...)
|
||||
for i := range changed {
|
||||
changed[i].Version = changed[i].Version.Copy().Update(myID)
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
if i%2 == 0 {
|
||||
benchS.Update(remoteDevice0, changed100)
|
||||
} else {
|
||||
benchS.Update(remoteDevice0, unchanged100)
|
||||
}
|
||||
}
|
||||
|
||||
b.ReportAllocs()
|
||||
}
|
||||
|
||||
func BenchmarkUpdate100ChangedRemote10Remotes(b *testing.B) {
|
||||
ldb, benchS := getBenchFileSet()
|
||||
defer ldb.Close()
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
if i%2 == 0 {
|
||||
benchS.Update(remoteDevice0, changed)
|
||||
benchS.Update(remoteDevice0, changed100)
|
||||
} else {
|
||||
benchS.Update(remoteDevice0, unchanged)
|
||||
benchS.Update(remoteDevice0, unchanged100)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,3 +328,19 @@ func BenchmarkGlobalTruncated(b *testing.B) {
|
||||
|
||||
b.ReportAllocs()
|
||||
}
|
||||
|
||||
func BenchmarkNeedCount(b *testing.B) {
|
||||
ldb, benchS := getBenchFileSet()
|
||||
defer ldb.Close()
|
||||
|
||||
benchS.Update(protocol.LocalDeviceID, changed100)
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
snap := benchS.Snapshot()
|
||||
_ = snap.NeedSize(protocol.LocalDeviceID)
|
||||
snap.Release()
|
||||
}
|
||||
|
||||
b.ReportAllocs()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user