(b *testing.B)
| 153 | } |
| 154 | |
| 155 | func BenchmarkExtensionReadWrite(b *testing.B) { |
| 156 | var buf bytes.Buffer |
| 157 | en := NewWriter(&buf) |
| 158 | dc := NewReader(&buf) |
| 159 | |
| 160 | b.Run("interface", func(b *testing.B) { |
| 161 | b.ReportAllocs() |
| 162 | |
| 163 | for i := 0; i < b.N; i++ { |
| 164 | buf.Reset() |
| 165 | |
| 166 | e := randomExt() |
| 167 | err := en.WriteExtension(&e) |
| 168 | if err != nil { |
| 169 | b.Errorf("error writing extension: %s", err) |
| 170 | } |
| 171 | en.Flush() |
| 172 | |
| 173 | err = dc.ReadExtension(&e) |
| 174 | if err != nil { |
| 175 | b.Errorf("error reading extension: %s", err) |
| 176 | } |
| 177 | } |
| 178 | }) |
| 179 | |
| 180 | b.Run("raw", func(b *testing.B) { |
| 181 | // this should have zero allocations |
| 182 | b.ReportAllocs() |
| 183 | |
| 184 | for i := 0; i < b.N; i++ { |
| 185 | buf.Reset() |
| 186 | |
| 187 | e := randomExt() |
| 188 | err := en.WriteExtensionRaw(e.Type, e.Data) |
| 189 | if err != nil { |
| 190 | b.Errorf("error writing extension: %s", err) |
| 191 | } |
| 192 | en.Flush() |
| 193 | |
| 194 | typ, payload, err := dc.ReadExtensionRaw() |
| 195 | if err != nil { |
| 196 | b.Errorf("error reading extension: %s", err) |
| 197 | } |
| 198 | if typ != e.Type || !bytes.Equal(payload, e.Data) { |
| 199 | b.Errorf("extension mismatch: %d %x != %d %x", typ, payload, e.Type, e.Data) |
| 200 | } |
| 201 | |
| 202 | buf.Reset() |
| 203 | } |
| 204 | }) |
| 205 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…