mirror of
https://github.com/golang/go
synced 2024-11-05 18:56:10 -07:00
image/draw: remove some bounds checks from DrawYCbCr
It’d be nicer to write just _ = dpix[x+3] but the compiler isn’t able to reason about offsets from symbols (yet). image/draw benchmark: YCbCr-8 722µs ± 3% 682µs ± 3% -5.54% (p=0.000 n=50+50) Change-Id: Ia1e399496ed87c282bf0f9ca56c0b2d4948a0df9 Reviewed-on: https://go-review.googlesource.com/22146 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
2563b6f9fe
commit
31da093c1e
@ -133,10 +133,13 @@ const sratioCase = `
|
|||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
|
|
||||||
dpix[x+0] = uint8(r)
|
|
||||||
dpix[x+1] = uint8(g)
|
// use a temp slice to hint to the compiler that a single bounds check suffices
|
||||||
dpix[x+2] = uint8(b)
|
rgba := dpix[x : x+4 : len(dpix)]
|
||||||
dpix[x+3] = 255
|
rgba[0] = uint8(r)
|
||||||
|
rgba[1] = uint8(g)
|
||||||
|
rgba[2] = uint8(b)
|
||||||
|
rgba[3] = 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@ -82,10 +82,12 @@ func DrawYCbCr(dst *image.RGBA, r image.Rectangle, src *image.YCbCr, sp image.Po
|
|||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
|
|
||||||
dpix[x+0] = uint8(r)
|
// use a temp slice to hint to the compiler that a single bounds check suffices
|
||||||
dpix[x+1] = uint8(g)
|
rgba := dpix[x : x+4 : len(dpix)]
|
||||||
dpix[x+2] = uint8(b)
|
rgba[0] = uint8(r)
|
||||||
dpix[x+3] = 255
|
rgba[1] = uint8(g)
|
||||||
|
rgba[2] = uint8(b)
|
||||||
|
rgba[3] = 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,10 +139,12 @@ func DrawYCbCr(dst *image.RGBA, r image.Rectangle, src *image.YCbCr, sp image.Po
|
|||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
|
|
||||||
dpix[x+0] = uint8(r)
|
// use a temp slice to hint to the compiler that a single bounds check suffices
|
||||||
dpix[x+1] = uint8(g)
|
rgba := dpix[x : x+4 : len(dpix)]
|
||||||
dpix[x+2] = uint8(b)
|
rgba[0] = uint8(r)
|
||||||
dpix[x+3] = 255
|
rgba[1] = uint8(g)
|
||||||
|
rgba[2] = uint8(b)
|
||||||
|
rgba[3] = 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,10 +196,12 @@ func DrawYCbCr(dst *image.RGBA, r image.Rectangle, src *image.YCbCr, sp image.Po
|
|||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
|
|
||||||
dpix[x+0] = uint8(r)
|
// use a temp slice to hint to the compiler that a single bounds check suffices
|
||||||
dpix[x+1] = uint8(g)
|
rgba := dpix[x : x+4 : len(dpix)]
|
||||||
dpix[x+2] = uint8(b)
|
rgba[0] = uint8(r)
|
||||||
dpix[x+3] = 255
|
rgba[1] = uint8(g)
|
||||||
|
rgba[2] = uint8(b)
|
||||||
|
rgba[3] = 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,10 +252,12 @@ func DrawYCbCr(dst *image.RGBA, r image.Rectangle, src *image.YCbCr, sp image.Po
|
|||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
|
|
||||||
dpix[x+0] = uint8(r)
|
// use a temp slice to hint to the compiler that a single bounds check suffices
|
||||||
dpix[x+1] = uint8(g)
|
rgba := dpix[x : x+4 : len(dpix)]
|
||||||
dpix[x+2] = uint8(b)
|
rgba[0] = uint8(r)
|
||||||
dpix[x+3] = 255
|
rgba[1] = uint8(g)
|
||||||
|
rgba[2] = uint8(b)
|
||||||
|
rgba[3] = 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user