41 lines
807 B
Go
41 lines
807 B
Go
|
|
package artwork
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bytes"
|
||
|
|
"fmt"
|
||
|
|
"image/jpeg"
|
||
|
|
"image/png"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func BenchmarkImageEncode(b *testing.B) {
|
||
|
|
img := generateGradientImage(300, 300)
|
||
|
|
|
||
|
|
jpegQualities := []int{60, 75, 90}
|
||
|
|
for _, q := range jpegQualities {
|
||
|
|
b.Run(fmt.Sprintf("jpeg/q%d/300x300", q), func(b *testing.B) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
b.ResetTimer()
|
||
|
|
for i := 0; i < b.N; i++ {
|
||
|
|
buf.Reset()
|
||
|
|
if err := jpeg.Encode(&buf, img, &jpeg.Options{Quality: q}); err != nil {
|
||
|
|
b.Fatal(err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
b.ReportMetric(float64(buf.Len()), "bytes")
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
b.Run("png/300x300", func(b *testing.B) {
|
||
|
|
var buf bytes.Buffer
|
||
|
|
b.ResetTimer()
|
||
|
|
for i := 0; i < b.N; i++ {
|
||
|
|
buf.Reset()
|
||
|
|
if err := png.Encode(&buf, img); err != nil {
|
||
|
|
b.Fatal(err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
b.ReportMetric(float64(buf.Len()), "bytes")
|
||
|
|
})
|
||
|
|
}
|