From f97a68088764939d53bf10fd8706c48c75ad0fa4 Mon Sep 17 00:00:00 2001 From: greatroar <@> Date: Tue, 28 Apr 2020 07:57:29 +0200 Subject: [PATCH] Fix repository benchmarks BenchmarkLoad{AndDecrypt,Blob} were spending between 38% and 50% of their time measuring SHA-256 performance in their checks. --- internal/repository/repository_test.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/repository/repository_test.go b/internal/repository/repository_test.go index b08448ca8..ada6ce67d 100644 --- a/internal/repository/repository_test.go +++ b/internal/repository/repository_test.go @@ -197,6 +197,10 @@ func BenchmarkLoadBlob(b *testing.B) { for i := 0; i < b.N; i++ { var err error buf, err = repo.LoadBlob(context.TODO(), restic.DataBlob, id, buf) + + // Checking the SHA-256 with restic.Hash can make up 38% of the time + // spent in this loop, so pause the timer. + b.StopTimer() rtest.OK(b, err) if len(buf) != length { b.Errorf("wanted %d bytes, got %d", length, len(buf)) @@ -206,6 +210,7 @@ func BenchmarkLoadBlob(b *testing.B) { if !id.Equal(id2) { b.Errorf("wrong data returned, wanted %v, got %v", id.Str(), id2.Str()) } + b.StartTimer() } } @@ -230,6 +235,9 @@ func BenchmarkLoadAndDecrypt(b *testing.B) { for i := 0; i < b.N; i++ { data, err := repo.LoadAndDecrypt(context.TODO(), nil, restic.DataFile, storageID) rtest.OK(b, err) + + // See comment in BenchmarkLoadBlob. + b.StopTimer() if len(data) != length { b.Errorf("wanted %d bytes, got %d", length, len(data)) } @@ -238,6 +246,7 @@ func BenchmarkLoadAndDecrypt(b *testing.B) { if !dataID.Equal(id2) { b.Errorf("wrong data returned, wanted %v, got %v", storageID.Str(), id2.Str()) } + b.StartTimer() } }