diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index f5fbfc3d..2d09fe5b 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -613,6 +613,8 @@ func syncthingMain(runtimeOptions RuntimeOptions) { sha256.SelectAlgo() sha256.Report() + perf := cpuBench(3, 150*time.Millisecond) + l.Infof("Actual hashing performance is %.02f MB/s", perf) // Emit the Starting event, now that we know who we are. diff --git a/cmd/syncthing/usage_report.go b/cmd/syncthing/usage_report.go index bd011928..11cf0d92 100644 --- a/cmd/syncthing/usage_report.go +++ b/cmd/syncthing/usage_report.go @@ -22,7 +22,7 @@ import ( "github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/model" "github.com/syncthing/syncthing/lib/protocol" - "github.com/syncthing/syncthing/lib/sha256" + "github.com/syncthing/syncthing/lib/scanner" "github.com/syncthing/syncthing/lib/upgrade" "github.com/thejerf/suture" ) @@ -291,22 +291,24 @@ func cpuBench(iterations int, duration time.Duration) float64 { perf = v } } + blocksResult = nil return perf } +var blocksResult []protocol.BlockInfo // so the result is not optimized away + func cpuBenchOnce(duration time.Duration) float64 { - chunkSize := 100 * 1 << 10 - h := sha256.New() - bs := make([]byte, chunkSize) + dataSize := 16 * protocol.BlockSize + bs := make([]byte, dataSize) rand.Reader.Read(bs) t0 := time.Now() b := 0 for time.Since(t0) < duration { - h.Write(bs) - b += chunkSize + r := bytes.NewReader(bs) + blocksResult, _ = scanner.Blocks(r, protocol.BlockSize, int64(dataSize), nil, true) + b += dataSize } - h.Sum(nil) d := time.Since(t0) return float64(int(float64(b)/d.Seconds()/(1<<20)*100)) / 100 } diff --git a/lib/sha256/sha256.go b/lib/sha256/sha256.go index 51f489fb..ab6100b7 100644 --- a/lib/sha256/sha256.go +++ b/lib/sha256/sha256.go @@ -89,7 +89,7 @@ func Report() { otherImpl = defaultImpl } - l.Infof("Single thread hash performance is %s using %s (%s using %s).", formatRate(selectedRate), selectedImpl, formatRate(otherRate), otherImpl) + l.Infof("Single thread SHA256 performance is %s using %s (%s using %s).", formatRate(selectedRate), selectedImpl, formatRate(otherRate), otherImpl) } func selectMinio() {