diff options
Diffstat (limited to 'src/pkg/image/draw/bench_test.go')
-rw-r--r-- | src/pkg/image/draw/bench_test.go | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/src/pkg/image/draw/bench_test.go b/src/pkg/image/draw/bench_test.go deleted file mode 100644 index cc62e25f1..000000000 --- a/src/pkg/image/draw/bench_test.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package draw - -import ( - "image" - "image/color" - "testing" -) - -const ( - dstw, dsth = 640, 480 - srcw, srch = 400, 300 -) - -// bench benchmarks drawing src and mask images onto a dst image with the -// given op and the color models to create those images from. -// The created images' pixels are initialized to non-zero values. -func bench(b *testing.B, dcm, scm, mcm color.Model, op Op) { - b.StopTimer() - - var dst Image - switch dcm { - case color.RGBAModel: - dst1 := image.NewRGBA(image.Rect(0, 0, dstw, dsth)) - for y := 0; y < dsth; y++ { - for x := 0; x < dstw; x++ { - dst1.SetRGBA(x, y, color.RGBA{ - uint8(5 * x % 0x100), - uint8(7 * y % 0x100), - uint8((7*x + 5*y) % 0x100), - 0xff, - }) - } - } - dst = dst1 - case color.RGBA64Model: - dst1 := image.NewRGBA64(image.Rect(0, 0, dstw, dsth)) - for y := 0; y < dsth; y++ { - for x := 0; x < dstw; x++ { - dst1.SetRGBA64(x, y, color.RGBA64{ - uint16(53 * x % 0x10000), - uint16(59 * y % 0x10000), - uint16((59*x + 53*y) % 0x10000), - 0xffff, - }) - } - } - dst = dst1 - default: - b.Fatal("unknown destination color model", dcm) - } - - var src image.Image - switch scm { - case nil: - src = &image.Uniform{C: color.RGBA{0x11, 0x22, 0x33, 0xff}} - case color.RGBAModel: - src1 := image.NewRGBA(image.Rect(0, 0, srcw, srch)) - for y := 0; y < srch; y++ { - for x := 0; x < srcw; x++ { - src1.SetRGBA(x, y, color.RGBA{ - uint8(13 * x % 0x80), - uint8(11 * y % 0x80), - uint8((11*x + 13*y) % 0x80), - 0x7f, - }) - } - } - src = src1 - case color.RGBA64Model: - src1 := image.NewRGBA64(image.Rect(0, 0, srcw, srch)) - for y := 0; y < srch; y++ { - for x := 0; x < srcw; x++ { - src1.SetRGBA64(x, y, color.RGBA64{ - uint16(103 * x % 0x8000), - uint16(101 * y % 0x8000), - uint16((101*x + 103*y) % 0x8000), - 0x7fff, - }) - } - } - src = src1 - case color.NRGBAModel: - src1 := image.NewNRGBA(image.Rect(0, 0, srcw, srch)) - for y := 0; y < srch; y++ { - for x := 0; x < srcw; x++ { - src1.SetNRGBA(x, y, color.NRGBA{ - uint8(13 * x % 0x100), - uint8(11 * y % 0x100), - uint8((11*x + 13*y) % 0x100), - 0x7f, - }) - } - } - src = src1 - case color.YCbCrModel: - yy := make([]uint8, srcw*srch) - cb := make([]uint8, srcw*srch) - cr := make([]uint8, srcw*srch) - for i := range yy { - yy[i] = uint8(3 * i % 0x100) - cb[i] = uint8(5 * i % 0x100) - cr[i] = uint8(7 * i % 0x100) - } - src = &image.YCbCr{ - Y: yy, - Cb: cb, - Cr: cr, - YStride: srcw, - CStride: srcw, - SubsampleRatio: image.YCbCrSubsampleRatio444, - Rect: image.Rect(0, 0, srcw, srch), - } - default: - b.Fatal("unknown source color model", scm) - } - - var mask image.Image - switch mcm { - case nil: - // No-op. - case color.AlphaModel: - mask1 := image.NewAlpha(image.Rect(0, 0, srcw, srch)) - for y := 0; y < srch; y++ { - for x := 0; x < srcw; x++ { - a := uint8((23*x + 29*y) % 0x100) - // Glyph masks are typically mostly zero, - // so we only set a quarter of mask1's pixels. - if a >= 0xc0 { - mask1.SetAlpha(x, y, color.Alpha{a}) - } - } - } - mask = mask1 - default: - b.Fatal("unknown mask color model", mcm) - } - - b.StartTimer() - for i := 0; i < b.N; i++ { - // Scatter the destination rectangle to draw into. - x := 3 * i % (dstw - srcw) - y := 7 * i % (dsth - srch) - - DrawMask(dst, dst.Bounds().Add(image.Pt(x, y)), src, image.ZP, mask, image.ZP, op) - } -} - -// The BenchmarkFoo functions exercise a drawFoo fast-path function in draw.go. - -func BenchmarkFillOver(b *testing.B) { - bench(b, color.RGBAModel, nil, nil, Over) -} - -func BenchmarkFillSrc(b *testing.B) { - bench(b, color.RGBAModel, nil, nil, Src) -} - -func BenchmarkCopyOver(b *testing.B) { - bench(b, color.RGBAModel, color.RGBAModel, nil, Over) -} - -func BenchmarkCopySrc(b *testing.B) { - bench(b, color.RGBAModel, color.RGBAModel, nil, Src) -} - -func BenchmarkNRGBAOver(b *testing.B) { - bench(b, color.RGBAModel, color.NRGBAModel, nil, Over) -} - -func BenchmarkNRGBASrc(b *testing.B) { - bench(b, color.RGBAModel, color.NRGBAModel, nil, Src) -} - -func BenchmarkYCbCr(b *testing.B) { - bench(b, color.RGBAModel, color.YCbCrModel, nil, Over) -} - -func BenchmarkGlyphOver(b *testing.B) { - bench(b, color.RGBAModel, nil, color.AlphaModel, Over) -} - -func BenchmarkRGBA(b *testing.B) { - bench(b, color.RGBAModel, color.RGBA64Model, nil, Src) -} - -// The BenchmarkGenericFoo functions exercise the generic, slow-path code. - -func BenchmarkGenericOver(b *testing.B) { - bench(b, color.RGBA64Model, color.RGBA64Model, nil, Over) -} - -func BenchmarkGenericMaskOver(b *testing.B) { - bench(b, color.RGBA64Model, color.RGBA64Model, color.AlphaModel, Over) -} - -func BenchmarkGenericSrc(b *testing.B) { - bench(b, color.RGBA64Model, color.RGBA64Model, nil, Src) -} - -func BenchmarkGenericMaskSrc(b *testing.B) { - bench(b, color.RGBA64Model, color.RGBA64Model, color.AlphaModel, Src) -} |