Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(101)

Issue 6251044: code review 6251044: hash/adler32: optimize. (Closed)

Can't Edit
Can't Publish+Mail
Start Review
Created:
10 years, 2 months ago by nigeltao
Modified:
10 years, 2 months ago
Reviewers:
CC:
rsc, golang-dev
Visibility:
Public.

Description

hash/adler32: optimize. The bulk of the gains come from hoisting the modulo ops outside of the inner loop. Reducing the digest type from 8 bytes to 4 bytes gains another 1% on the hash/adler32 micro-benchmark. Benchmarks for $GOOS,$GOARCH = linux,amd64 below. hash/adler32 benchmark: benchmark old ns/op new ns/op delta BenchmarkAdler32KB 1660 1364 -17.83% image/png benchmark: benchmark old ns/op new ns/op delta BenchmarkDecodeGray 2466909 2425539 -1.68% BenchmarkDecodeNRGBAGradient 9884500 9751705 -1.34% BenchmarkDecodeNRGBAOpaque 8511615 8379800 -1.55% BenchmarkDecodePaletted 1366683 1330677 -2.63% BenchmarkDecodeRGB 6987496 6884974 -1.47% BenchmarkEncodePaletted 6292408 6040052 -4.01% BenchmarkEncodeRGBOpaque 19780680 19178440 -3.04% BenchmarkEncodeRGBA 80738600 79076800 -2.06% Wall time for Denis Cheremisov's PNG-decoding program given in https://groups.google.com/group/golang-nuts/browse_thread/thread/22aa8a05040fdd49 Before: 2.44s After: 2.26s Delta: -7%

Patch Set 1 #

Patch Set 2 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 3 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 4 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 5 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 6 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 7 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 8 : diff -r 8c0f26decc1b https://go.googlecode.com/hg/ #

Patch Set 9 : diff -r e2e4e44b1804 https://go.googlecode.com/hg/ #

Unified diffs Side-by-side diffs Delta from patch set Stats (+76 lines, -55 lines) Patch
M src/pkg/hash/adler32/adler32.go View 1 2 3 4 5 6 3 chunks +29 lines, -33 lines 0 comments Download
M src/pkg/hash/adler32/adler32_test.go View 1 2 3 4 5 6 7 8 2 chunks +47 lines, -22 lines 0 comments Download

Messages

Total messages: 3
nigeltao
Hello rsc@golang.org (cc: golang-dev@googlegroups.com), I'd like you to review this change to https://go.googlecode.com/hg/
10 years, 2 months ago (2012-05-24 07:07:56 UTC) #1
rsc
LGTM Very nice.
10 years, 2 months ago (2012-05-24 14:55:00 UTC) #2
nigeltao
10 years, 2 months ago (2012-05-24 23:58:48 UTC) #3
*** Submitted as http://code.google.com/p/go/source/detail?r=71dcca0f7203 ***

hash/adler32: optimize.

The bulk of the gains come from hoisting the modulo ops outside of
the inner loop.

Reducing the digest type from 8 bytes to 4 bytes gains another 1% on
the hash/adler32 micro-benchmark.

Benchmarks for $GOOS,$GOARCH = linux,amd64 below.

hash/adler32 benchmark:
benchmark             old ns/op    new ns/op    delta
BenchmarkAdler32KB         1660         1364  -17.83%

image/png benchmark:
benchmark                       old ns/op    new ns/op    delta
BenchmarkDecodeGray               2466909      2425539   -1.68%
BenchmarkDecodeNRGBAGradient      9884500      9751705   -1.34%
BenchmarkDecodeNRGBAOpaque        8511615      8379800   -1.55%
BenchmarkDecodePaletted           1366683      1330677   -2.63%
BenchmarkDecodeRGB                6987496      6884974   -1.47%
BenchmarkEncodePaletted           6292408      6040052   -4.01%
BenchmarkEncodeRGBOpaque         19780680     19178440   -3.04%
BenchmarkEncodeRGBA              80738600     79076800   -2.06%

Wall time for Denis Cheremisov's PNG-decoding program given in
https://groups.google.com/group/golang-nuts/browse_thread/thread/22aa8a05040f...
Before: 2.44s
After:  2.26s
Delta:  -7%

R=rsc
CC=golang-dev
http://codereview.appspot.com/6251044
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b