| // Copyright 2012 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package flate |
| |
| import ( |
| "io/ioutil" |
| "runtime" |
| "testing" |
| ) |
| |
| func benchmarkEncoder(b *testing.B, testfile, level, n int) { |
| b.StopTimer() |
| b.SetBytes(int64(n)) |
| buf0, err := ioutil.ReadFile(testfiles[testfile]) |
| if err != nil { |
| b.Fatal(err) |
| } |
| if len(buf0) == 0 { |
| b.Fatalf("test file %q has no data", testfiles[testfile]) |
| } |
| buf1 := make([]byte, n) |
| for i := 0; i < n; i += len(buf0) { |
| if len(buf0) > n-i { |
| buf0 = buf0[:n-i] |
| } |
| copy(buf1[i:], buf0) |
| } |
| buf0 = nil |
| runtime.GC() |
| b.StartTimer() |
| for i := 0; i < b.N; i++ { |
| w, err := NewWriter(ioutil.Discard, level) |
| if err != nil { |
| b.Fatal(err) |
| } |
| w.Write(buf1) |
| w.Close() |
| } |
| } |
| |
| func BenchmarkEncodeDigitsSpeed1e4(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e4) } |
| func BenchmarkEncodeDigitsSpeed1e5(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e5) } |
| func BenchmarkEncodeDigitsSpeed1e6(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e6) } |
| func BenchmarkEncodeDigitsDefault1e4(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e4) } |
| func BenchmarkEncodeDigitsDefault1e5(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e5) } |
| func BenchmarkEncodeDigitsDefault1e6(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e6) } |
| func BenchmarkEncodeDigitsCompress1e4(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e4) } |
| func BenchmarkEncodeDigitsCompress1e5(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e5) } |
| func BenchmarkEncodeDigitsCompress1e6(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e6) } |
| func BenchmarkEncodeTwainSpeed1e4(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e4) } |
| func BenchmarkEncodeTwainSpeed1e5(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e5) } |
| func BenchmarkEncodeTwainSpeed1e6(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e6) } |
| func BenchmarkEncodeTwainDefault1e4(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e4) } |
| func BenchmarkEncodeTwainDefault1e5(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e5) } |
| func BenchmarkEncodeTwainDefault1e6(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e6) } |
| func BenchmarkEncodeTwainCompress1e4(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e4) } |
| func BenchmarkEncodeTwainCompress1e5(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e5) } |
| func BenchmarkEncodeTwainCompress1e6(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e6) } |