writer_test.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2012 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package flate
  5. import (
  6. "io/ioutil"
  7. "runtime"
  8. "testing"
  9. )
  10. func benchmarkEncoder(b *testing.B, testfile, level, n int) {
  11. b.StopTimer()
  12. b.SetBytes(int64(n))
  13. buf0, err := ioutil.ReadFile(testfiles[testfile])
  14. if err != nil {
  15. b.Fatal(err)
  16. }
  17. if len(buf0) == 0 {
  18. b.Fatalf("test file %q has no data", testfiles[testfile])
  19. }
  20. buf1 := make([]byte, n)
  21. for i := 0; i < n; i += len(buf0) {
  22. if len(buf0) > n-i {
  23. buf0 = buf0[:n-i]
  24. }
  25. copy(buf1[i:], buf0)
  26. }
  27. buf0 = nil
  28. runtime.GC()
  29. b.StartTimer()
  30. for i := 0; i < b.N; i++ {
  31. w, err := NewWriter(ioutil.Discard, level)
  32. if err != nil {
  33. b.Fatal(err)
  34. }
  35. w.Write(buf1)
  36. w.Close()
  37. }
  38. }
  39. func BenchmarkEncodeDigitsSpeed1e4(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e4) }
  40. func BenchmarkEncodeDigitsSpeed1e5(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e5) }
  41. func BenchmarkEncodeDigitsSpeed1e6(b *testing.B) { benchmarkEncoder(b, digits, speed, 1e6) }
  42. func BenchmarkEncodeDigitsDefault1e4(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e4) }
  43. func BenchmarkEncodeDigitsDefault1e5(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e5) }
  44. func BenchmarkEncodeDigitsDefault1e6(b *testing.B) { benchmarkEncoder(b, digits, default_, 1e6) }
  45. func BenchmarkEncodeDigitsCompress1e4(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e4) }
  46. func BenchmarkEncodeDigitsCompress1e5(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e5) }
  47. func BenchmarkEncodeDigitsCompress1e6(b *testing.B) { benchmarkEncoder(b, digits, compress, 1e6) }
  48. func BenchmarkEncodeTwainSpeed1e4(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e4) }
  49. func BenchmarkEncodeTwainSpeed1e5(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e5) }
  50. func BenchmarkEncodeTwainSpeed1e6(b *testing.B) { benchmarkEncoder(b, twain, speed, 1e6) }
  51. func BenchmarkEncodeTwainDefault1e4(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e4) }
  52. func BenchmarkEncodeTwainDefault1e5(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e5) }
  53. func BenchmarkEncodeTwainDefault1e6(b *testing.B) { benchmarkEncoder(b, twain, default_, 1e6) }
  54. func BenchmarkEncodeTwainCompress1e4(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e4) }
  55. func BenchmarkEncodeTwainCompress1e5(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e5) }
  56. func BenchmarkEncodeTwainCompress1e6(b *testing.B) { benchmarkEncoder(b, twain, compress, 1e6) }