(b *testing.B)
| 513 | } |
| 514 | |
| 515 | func Benchmark_seqdec_decodeSync(b *testing.B) { |
| 516 | zr := testCreateZipReader("testdata/seqs.zip", b) |
| 517 | tb := b |
| 518 | for _, tt := range zr.File { |
| 519 | var ref testSequence |
| 520 | if !ref.parse(tt.Name) { |
| 521 | tb.Skip("unable to parse:", tt.Name) |
| 522 | } |
| 523 | r, err := tt.Open() |
| 524 | if err != nil { |
| 525 | tb.Error(err) |
| 526 | return |
| 527 | } |
| 528 | |
| 529 | seqData, err := io.ReadAll(r) |
| 530 | if err != nil { |
| 531 | tb.Error(err) |
| 532 | return |
| 533 | } |
| 534 | var buf = bytes.NewBuffer(seqData) |
| 535 | s := readDecoders(tb, buf, ref) |
| 536 | |
| 537 | lits := s.literals |
| 538 | hist := make([]byte, ref.win) |
| 539 | b.Run(tt.Name, func(b *testing.B) { |
| 540 | fatalIf := func(err error) { |
| 541 | if err != nil { |
| 542 | b.Fatal(err) |
| 543 | } |
| 544 | } |
| 545 | decoded := 0 |
| 546 | b.ReportAllocs() |
| 547 | b.ResetTimer() |
| 548 | t := time.Now() |
| 549 | |
| 550 | for i := 0; i < b.N; i++ { |
| 551 | fatalIf(s.br.init(buf.Bytes())) |
| 552 | fatalIf(s.litLengths.init(s.br)) |
| 553 | fatalIf(s.offsets.init(s.br)) |
| 554 | fatalIf(s.matchLengths.init(s.br)) |
| 555 | s.literals = lits |
| 556 | if len(s.out) > 0 { |
| 557 | s.out = s.out[:0] |
| 558 | } |
| 559 | err := s.decodeSync(hist) |
| 560 | if err != nil { |
| 561 | b.Fatal(err) |
| 562 | } |
| 563 | b.SetBytes(int64(len(s.out))) |
| 564 | decoded += ref.n |
| 565 | } |
| 566 | b.ReportMetric(float64(decoded)/time.Since(t).Seconds(), "seq/s") |
| 567 | }) |
| 568 | } |
| 569 | } |
| 570 | |
| 571 | func testCreateZipReader(path string, tb testing.TB) *zip.Reader { |
| 572 | failOnError := func(err error) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…