@@ -95,3 +95,43 @@ func TestCheckNone(t *testing.T) {
95
95
t .Fatalf ("io.Copy error %s" , err )
96
96
}
97
97
}
98
+
99
+ func BenchmarkReader (b * testing.B ) {
100
+ const testFile = "testdata/enwik7"
101
+ data , err := os .ReadFile (testFile )
102
+ if err != nil {
103
+ b .Fatalf ("os.ReadFile(%q) error %s" , testFile , err )
104
+ }
105
+ buf := new (bytes.Buffer )
106
+ uncompressedLen := int64 (len (data ))
107
+ b .SetBytes (int64 (uncompressedLen ))
108
+ b .ReportAllocs ()
109
+ buf .Reset ()
110
+ w , err := NewWriter (buf )
111
+ if err != nil {
112
+ b .Fatalf ("NewWriter(buf) error %s" , err )
113
+ }
114
+ if _ , err = w .Write (data ); err != nil {
115
+ b .Fatalf ("w.Write(data) error %s" , err )
116
+ }
117
+ if err = w .Close (); err != nil {
118
+ b .Fatalf ("w.Write(data)" )
119
+ }
120
+ data = make ([]byte , buf .Len ())
121
+ copy (data , buf .Bytes ())
122
+ b .ResetTimer ()
123
+ for i := 0 ; i < b .N ; i ++ {
124
+ buf .Reset ()
125
+ r , err := NewReader (bytes .NewReader (data ))
126
+ if err != nil {
127
+ b .Fatalf ("NewReader(data) error %s" , err )
128
+ }
129
+ n , err := io .Copy (buf , r )
130
+ if err != nil {
131
+ b .Fatalf ("io.Copy(buf, r) error %s" , err )
132
+ }
133
+ if n != uncompressedLen {
134
+ b .Fatalf ("io.Copy got %d; want %d" , n , uncompressedLen )
135
+ }
136
+ }
137
+ }
0 commit comments