]> Cypherpunks repositories - gostls13.git/commit
image/draw: reduce drawPaletted allocations for special source cases
authorArtyom Pervukhin <artyom.pervukhin@gmail.com>
Sat, 21 Oct 2017 06:36:54 +0000 (09:36 +0300)
committerNigel Tao <nigeltao@golang.org>
Wed, 25 Oct 2017 23:43:27 +0000 (23:43 +0000)
commit088209bbe870725f82e44e604e787d7273488bd6
tree78c01c9b648a93e6d792a79083f271e1bbc820dc
parentf2d52519e1fad35566afb46ef521934cf0f5e5fd
image/draw: reduce drawPaletted allocations for special source cases

drawPaletted has to discover R,G,B,A color values of each source image
pixel in a given rectangle. Doing that by calling image.Image.At()
method returning color.Color interface is quite taxing allocation-wise
since interface values go through heap. Introduce special cases for some
concrete source types by fetching color values using type-specific
methods.

name        old time/op    new time/op    delta
Paletted-4    7.62ms ± 4%    3.72ms ± 3%   -51.20%  (p=0.008 n=5+5)

name        old alloc/op   new alloc/op   delta
Paletted-4     480kB ± 0%       0kB ± 0%   -99.99%  (p=0.000 n=4+5)

name        old allocs/op  new allocs/op  delta
Paletted-4      120k ± 0%        0k ± 0%  -100.00%  (p=0.008 n=5+5)

Updates #15759.

Change-Id: I0ce1770ff600ac80599541aaad4c2c826855c8fb
Reviewed-on: https://go-review.googlesource.com/72370
Reviewed-by: Nigel Tao <nigeltao@golang.org>
src/image/draw/draw.go