Skip to content
Permalink
Browse files

resources: Add Exif benchmark

See #6291
  • Loading branch information...
bep committed Sep 1, 2019
1 parent 20bdc69 commit 3becba7a982f39f67c7ee7cff411eae50931c8cd
Showing with 67 additions and 0 deletions.
  1. +67 −0 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()

0 comments on commit 3becba7

Please sign in to comment.
You can’t perform that action at this time.