]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
resources: Add BenchmarkHashImage
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 30 Jul 2024 10:42:17 +0000 (12:42 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 31 Jul 2024 14:44:06 +0000 (16:44 +0200)
resources/resource.go
resources/resource_test.go [new file with mode: 0644]

index 8fade941ae6eafc1921680c07dd9489b310e215d..19270307edcf668b1ce26646ad16c14544529865 100644 (file)
@@ -644,7 +644,7 @@ func (r *resourceHash) init(l hugio.ReadSeekCloserProvider) error {
                        return
                }
                defer f.Close()
-               hash, size, err = helpers.MD5FromReaderFast(f)
+               hash, size, err = hashImage(f)
                if err != nil {
                        initErr = fmt.Errorf("failed to calculate hash: %w", err)
                        return
@@ -655,3 +655,7 @@ func (r *resourceHash) init(l hugio.ReadSeekCloserProvider) error {
 
        return initErr
 }
+
+func hashImage(r io.ReadSeeker) (string, int64, error) {
+       return helpers.MD5FromReaderFast(r)
+}
diff --git a/resources/resource_test.go b/resources/resource_test.go
new file mode 100644 (file)
index 0000000..ccce8ef
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2024 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package resources
+
+import (
+       "os"
+       "testing"
+)
+
+func BenchmarkHashImage(b *testing.B) {
+       f, err := os.Open("testdata/sunset.jpg")
+       if err != nil {
+               b.Fatal(err)
+       }
+       defer f.Close()
+
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               _, _, err := hashImage(f)
+               if err != nil {
+                       b.Fatal(err)
+               }
+               f.Seek(0, 0)
+       }
+}