Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-09-01 18:57:35 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-09-01 19:02:49 +0300
commit3becba7a982f39f67c7ee7cff411eae50931c8cd (patch)
tree564f096735ea5236b9f5565bf39d1f470f1b08d4 /resources
parent20bdc69a47b851871bdc4d9be6366fa7f51f25db (diff)
resources: Add Exif benchmark
See #6291
Diffstat (limited to 'resources')
-rw-r--r--resources/image_test.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/resources/image_test.go b/resources/image_test.go
index 4968190e9..dc5e0a217 100644
--- a/resources/image_test.go
+++ b/resources/image_test.go
@@ -23,6 +23,8 @@ import (
"sync"
"testing"
+ "github.com/spf13/afero"
+
"github.com/disintegration/gift"
"github.com/gohugoio/hugo/helpers"
@@ -358,6 +360,71 @@ func TestImageExif(t *testing.T) {
}
+func BenchmarkImageExif(b *testing.B) {
+
+ getImages := func(c *qt.C, b *testing.B, fs afero.Fs) []resource.Image {
+ spec := newTestResourceSpec(specDescriptor{fs: fs, c: c})
+ images := make([]resource.Image, b.N)
+ for i := 0; i < b.N; i++ {
+ images[i] = fetchImageForSpec(spec, c, "sunset.jpg")
+ }
+ return images
+ }
+
+ getAndCheckExif := func(c *qt.C, image resource.Image) {
+ x, err := image.Exif()
+ c.Assert(err, qt.IsNil)
+ c.Assert(x, qt.Not(qt.IsNil))
+ c.Assert(x.Long, qt.Equals, float64(-4.50846))
+
+ }
+
+ b.Run("Cold cache", func(b *testing.B) {
+ b.StopTimer()
+ c := qt.New(b)
+ images := getImages(c, b, afero.NewMemMapFs())
+
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ getAndCheckExif(c, images[i])
+ }
+
+ })
+
+ b.Run("Cold cache, 10", func(b *testing.B) {
+ b.StopTimer()
+ c := qt.New(b)
+ images := getImages(c, b, afero.NewMemMapFs())
+
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ for j := 0; j < 10; j++ {
+ getAndCheckExif(c, images[i])
+ }
+ }
+
+ })
+
+ b.Run("Warm cache", func(b *testing.B) {
+ b.StopTimer()
+ c := qt.New(b)
+ fs := afero.NewMemMapFs()
+ images := getImages(c, b, fs)
+ for i := 0; i < b.N; i++ {
+ getAndCheckExif(c, images[i])
+ }
+
+ images = getImages(c, b, fs)
+
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ getAndCheckExif(c, images[i])
+ }
+
+ })
+
+}
+
func TestImageOperationsGolden(t *testing.T) {
c := qt.New(t)
c.Parallel()