]> Cypherpunks repositories - gostls13.git/commit
compress/lzw: reduce decoder buffer size from 3*4096 to 2*4096.
authorNigel Tao <nigeltao@golang.org>
Wed, 8 Jun 2011 23:50:38 +0000 (09:50 +1000)
committerNigel Tao <nigeltao@golang.org>
Wed, 8 Jun 2011 23:50:38 +0000 (09:50 +1000)
commit833529fd6f5b1cc469a080980275ace3d43ade49
treeb1e105ee4fae0973e2c30bad9677e2ccca2157ff
parent9c436ab7dca9898d013eef321f5b51feb56feb56
compress/lzw: reduce decoder buffer size from 3*4096 to 2*4096.

This happens to speed up the decoder benchmarks by 50% on my computer
(GOARCH=amd64 GOOS=linux), but I don't have a good intuition as to why.
For example, just adding an unused [4096]byte field to the decoder
struct doesn't significantly change the numbers.

Before:

lzw.BenchmarkDecoder1e4     5000     488057 ns/op   20.49 MB/s
lzw.BenchmarkDecoder1e5      500    4613638 ns/op   21.67 MB/s
lzw.BenchmarkDecoder1e6       50   45672260 ns/op   21.90 MB/s
lzw.BenchmarkEncoder1e4     5000     353563 ns/op   28.28 MB/s
lzw.BenchmarkEncoder1e5      500    3431618 ns/op   29.14 MB/s
lzw.BenchmarkEncoder1e6       50   34009640 ns/op   29.40 MB/s

After:

lzw.BenchmarkDecoder1e4     5000     339725 ns/op   29.44 MB/s
lzw.BenchmarkDecoder1e5      500    3166894 ns/op   31.58 MB/s
lzw.BenchmarkDecoder1e6       50   31317260 ns/op   31.93 MB/s
lzw.BenchmarkEncoder1e4     5000     354909 ns/op   28.18 MB/s
lzw.BenchmarkEncoder1e5      500    3432710 ns/op   29.13 MB/s
lzw.BenchmarkEncoder1e6       50   34010500 ns/op   29.40 MB/s

R=rsc, r
CC=golang-dev
https://golang.org/cl/4535123
src/pkg/compress/lzw/reader.go