• Nigel Tao's avatar
    image/jpeg: change block from [64]int to [64]int32. · daf43ba4
    Nigel Tao authored
    On 6g/linux:
    benchmark                     old ns/op    new ns/op    delta
    BenchmarkFDCT                      4606         4241   -7.92%
    BenchmarkIDCT                      4187         3923   -6.31%
    BenchmarkDecodeBaseline         3154864      3170224   +0.49%
    BenchmarkDecodeProgressive      4072812      4017132   -1.37%
    BenchmarkEncode                39406920     34596760  -12.21%
    
    Stack requirements before (from 'go tool 6g -S'):
    (scan.go:37) TEXT    (*decoder).processSOS+0(SB),$1352-32
    (writer.go:448) TEXT    (*encoder).writeSOS+0(SB),$5344-24
    
    after:
    (scan.go:37) TEXT    (*decoder).processSOS+0(SB),$1064-32
    (writer.go:448) TEXT    (*encoder).writeSOS+0(SB),$2520-24
    
    Also, in encoder.writeSOS, re-use the yBlock scratch buffer for Cb and
    Cr. This reduces the stack requirement slightly, but also avoids an
    unlucky coincidence where a BenchmarkEncode stack split lands between
    encoder.writeByte and bufio.Writer.WriteByte, which occurs very often
    during Huffman encoding and is otherwise disasterous for the final
    benchmark number. FWIW, the yBlock re-use *without* the s/int/int32/
    change does not have a noticable effect on the benchmarks.
    
    R=r
    CC=golang-dev, rsc
    https://golang.org/cl/6823043
    daf43ba4
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
libmach Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...