Commit ff274210 authored by Joe Tsai's avatar Joe Tsai Committed by Matthew Dempsky

compress/bzip2: fix benchmark to actually measure decompression rate

Motivation:
* Previously, the size of the compressed data was used for metrics,
rather than the uncompressed size. This causes the library to appear
to perform poorly relative to C or other implementation. Switch it
to use the uncompressed size so that it matches how decompression
benchmarks are usually done (like in compress/flate). This also makes
it easier to compare bzip2 rates to other algorithms since they measure
performance in this way.
* Also, reset the timer after doing initialization work.

Change-Id: I32112c2ee8e7391e658c9cf31039f70a689d9b9d
Reviewed-on: https://go-review.googlesource.com/17611Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 47379929
...@@ -194,7 +194,17 @@ func benchmarkDecode(b *testing.B, testfile int) { ...@@ -194,7 +194,17 @@ func benchmarkDecode(b *testing.B, testfile int) {
if err != nil { if err != nil {
b.Fatal(err) b.Fatal(err)
} }
b.SetBytes(int64(len(compressed)))
// Determine the uncompressed size of testfile.
uncompressedSize, err := io.Copy(ioutil.Discard, NewReader(bytes.NewReader(compressed)))
if err != nil {
b.Fatal(err)
}
b.SetBytes(uncompressedSize)
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
r := bytes.NewReader(compressed) r := bytes.NewReader(compressed)
io.Copy(ioutil.Discard, NewReader(r)) io.Copy(ioutil.Discard, NewReader(r))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment