]> Cypherpunks repositories - gostls13.git/commit
image/jpeg: use a look-up table to speed up Huffman decoding. This
authorNigel Tao <nigeltao@golang.org>
Thu, 19 Jun 2014 01:39:03 +0000 (11:39 +1000)
committerNigel Tao <nigeltao@golang.org>
Thu, 19 Jun 2014 01:39:03 +0000 (11:39 +1000)
commit4ecf0b103a3c0a21af9f397420c317a2f742103c
tree409ccb5d6fe0adfa925b7a513e9bd52765991d2d
parentc97ea6bead1b8b415fe5110744b63b050e765b6c
image/jpeg: use a look-up table to speed up Huffman decoding. This
requires a decoder to do its own byte buffering instead of using
bufio.Reader, due to byte stuffing.

benchmark                      old MB/s     new MB/s     speedup
BenchmarkDecodeBaseline        33.40        50.65        1.52x
BenchmarkDecodeProgressive     24.34        31.92        1.31x

On 6g, unsafe.Sizeof(huffman{}) falls from 4872 to 964 bytes, and
the decoder struct contains 8 of those.

LGTM=r
R=r, nightlyone
CC=bradfitz, couchmoney, golang-codereviews, raph
https://golang.org/cl/109050045
src/pkg/image/jpeg/huffman.go
src/pkg/image/jpeg/reader.go
src/pkg/image/jpeg/reader_test.go
src/pkg/image/jpeg/scan.go
src/pkg/image/jpeg/writer.go