aboutsummaryrefslogtreecommitdiff
path: root/src/compress
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2015-11-22 02:41:49 -0800
committerRuss Cox <rsc@golang.org>2015-11-26 17:20:34 +0000
commitb717090e018a6dc68c19bdca4c1cea0f5dbf3b16 (patch)
treed703205fb0f9498809138b782f86998ce3032597 /src/compress
parente91019d2536cd067da5f8f22e03efc4492561a99 (diff)
downloadgo-b717090e018a6dc68c19bdca4c1cea0f5dbf3b16.tar.xz
compress/flate: tweak offsetCode so that it can be inlined
Functions with switches (#13071) cannot be inlined. Functions with consts (#7655) cannot be inlined. benchmark old MB/s new MB/s speedup BenchmarkEncodeDigitsSpeed1e4-4 10.25 10.20 1.00x BenchmarkEncodeDigitsSpeed1e5-4 26.44 27.22 1.03x BenchmarkEncodeDigitsSpeed1e6-4 32.28 33.51 1.04x BenchmarkEncodeDigitsDefault1e4-4 8.61 8.74 1.02x BenchmarkEncodeDigitsDefault1e5-4 7.03 6.98 0.99x BenchmarkEncodeDigitsDefault1e6-4 6.47 6.46 1.00x BenchmarkEncodeDigitsCompress1e4-4 8.62 8.73 1.01x BenchmarkEncodeDigitsCompress1e5-4 7.01 6.98 1.00x BenchmarkEncodeDigitsCompress1e6-4 6.43 6.53 1.02x BenchmarkEncodeTwainSpeed1e4-4 9.67 10.16 1.05x BenchmarkEncodeTwainSpeed1e5-4 26.46 26.94 1.02x BenchmarkEncodeTwainSpeed1e6-4 33.19 34.02 1.03x BenchmarkEncodeTwainDefault1e4-4 8.12 8.37 1.03x BenchmarkEncodeTwainDefault1e5-4 8.22 8.21 1.00x BenchmarkEncodeTwainDefault1e6-4 8.10 8.13 1.00x BenchmarkEncodeTwainCompress1e4-4 8.24 8.39 1.02x BenchmarkEncodeTwainCompress1e5-4 6.51 6.58 1.01x BenchmarkEncodeTwainCompress1e6-4 6.16 6.13 1.00x Change-Id: Ibafa5e3e2de0529853b5b3180e6fd6cb7090b76f Reviewed-on: https://go-review.googlesource.com/17171 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/compress')
-rw-r--r--src/compress/flate/token.go10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/compress/flate/token.go b/src/compress/flate/token.go
index 4d49176871..c485939d34 100644
--- a/src/compress/flate/token.go
+++ b/src/compress/flate/token.go
@@ -90,13 +90,11 @@ func lengthCode(len uint32) uint32 { return lengthCodes[len] }
// Returns the offset code corresponding to a specific offset
func offsetCode(off uint32) uint32 {
- const n = uint32(len(offsetCodes))
- switch {
- case off < n:
+ if off < uint32(len(offsetCodes)) {
return offsetCodes[off]
- case off>>7 < n:
+ }
+ if off>>7 < uint32(len(offsetCodes)) {
return offsetCodes[off>>7] + 14
- default:
- return offsetCodes[off>>14] + 28
}
+ return offsetCodes[off>>14] + 28
}