Commit f5fa215d authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

image: png & jpeg encoding benchmarks

No code changes in this CL.

R=r
CC=golang-dev
https://golang.org/cl/4445074
parent 2e7d6729
...@@ -8,6 +8,8 @@ import ( ...@@ -8,6 +8,8 @@ import (
"bytes" "bytes"
"image" "image"
"image/png" "image/png"
"io/ioutil"
"rand"
"os" "os"
"testing" "testing"
) )
...@@ -85,3 +87,29 @@ func TestWriter(t *testing.T) { ...@@ -85,3 +87,29 @@ func TestWriter(t *testing.T) {
} }
} }
} }
func BenchmarkEncodeRGBOpaque(b *testing.B) {
b.StopTimer()
img := image.NewRGBA(640, 480)
// Set all pixels to 0xFF alpha to force opaque mode.
bo := img.Bounds()
rnd := rand.New(rand.NewSource(123))
for y := bo.Min.Y; y < bo.Max.Y; y++ {
for x := bo.Min.X; x < bo.Max.X; x++ {
img.Set(x, y, image.RGBAColor{
uint8(rnd.Intn(256)),
uint8(rnd.Intn(256)),
uint8(rnd.Intn(256)),
255})
}
}
if !img.Opaque() {
panic("expected image to be opaque")
}
b.SetBytes(640 * 480 * 4)
b.StartTimer()
options := &Options{Quality: 90}
for i := 0; i < b.N; i++ {
Encode(ioutil.Discard, img, options)
}
}
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
package png package png
import ( import (
"bytes"
"fmt" "fmt"
"image" "image"
"io" "io"
"io/ioutil"
"os" "os"
"testing" "testing"
) )
...@@ -81,10 +81,42 @@ func BenchmarkEncodePaletted(b *testing.B) { ...@@ -81,10 +81,42 @@ func BenchmarkEncodePaletted(b *testing.B) {
image.RGBAColor{0, 0, 0, 255}, image.RGBAColor{0, 0, 0, 255},
image.RGBAColor{255, 255, 255, 255}, image.RGBAColor{255, 255, 255, 255},
}) })
b.SetBytes(640 * 480 * 1)
b.StartTimer() b.StartTimer()
buffer := new(bytes.Buffer)
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
buffer.Reset() Encode(ioutil.Discard, img)
Encode(buffer, img) }
}
func BenchmarkEncodeRGBOpaque(b *testing.B) {
b.StopTimer()
img := image.NewRGBA(640, 480)
// Set all pixels to 0xFF alpha to force opaque mode.
bo := img.Bounds()
for y := bo.Min.Y; y < bo.Max.Y; y++ {
for x := bo.Min.X; x < bo.Max.X; x++ {
img.Set(x, y, image.RGBAColor{0, 0, 0, 255})
}
}
if !img.Opaque() {
panic("expected image to be opaque")
}
b.SetBytes(640 * 480 * 4)
b.StartTimer()
for i := 0; i < b.N; i++ {
Encode(ioutil.Discard, img)
}
}
func BenchmarkEncodeRGBA(b *testing.B) {
b.StopTimer()
img := image.NewRGBA(640, 480)
if img.Opaque() {
panic("expected image to not be opaque")
}
b.SetBytes(640 * 480 * 4)
b.StartTimer()
for i := 0; i < b.N; i++ {
Encode(ioutil.Discard, img)
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment