MCPcopy Create free account
hub / github.com/bodgit/sevenzip / benchmarkArchiveParallel

Function benchmarkArchiveParallel

reader_test.go:478–518  ·  view source on GitHub ↗
(b *testing.B, file string)

Source from the content-addressed store, hash-verified

476}
477
478func benchmarkArchiveParallel(b *testing.B, file string) {
479 b.Helper()
480
481 for range b.N {
482 r, err := sevenzip.OpenReader(filepath.Join("testdata", file))
483 if err != nil {
484 b.Fatal(err)
485 }
486
487 var once sync.Once
488
489 f := func() {
490 if err := r.Close(); err != nil {
491 b.Fatal(err)
492 }
493 }
494
495 defer once.Do(f)
496
497 streams := make(map[int]struct{}, len(r.File))
498
499 for _, f := range r.File {
500 streams[f.Stream] = struct{}{}
501 }
502
503 eg := new(errgroup.Group)
504 eg.SetLimit(runtime.NumCPU())
505
506 for stream := range streams {
507 eg.Go(func() error {
508 return extractArchive(b, &r.Reader, stream, crc32.NewIEEE(), reader, true)
509 })
510 }
511
512 if err := eg.Wait(); err != nil {
513 b.Fatal(err)
514 }
515
516 once.Do(f)
517 }
518}
519
520func benchmarkArchiveNaiveParallel(b *testing.B, file string, workers int) {
521 b.Helper()

Callers 1

BenchmarkParallelReaderFunction · 0.85

Calls 3

OpenReaderFunction · 0.92
extractArchiveFunction · 0.85
CloseMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…