resources: Add Exif benchmark

See #6291
This commit is contained in:
Bjørn Erik Pedersen 2019-09-01 17:57:35 +02:00
parent 20bdc69a47
commit 3becba7a98
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F

View file

@ -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()