From 08c5b761d289843b83009b008b3eb878cb94b439 Mon Sep 17 00:00:00 2001 From: Joey Jiao Date: Mon, 13 May 2024 12:46:45 +0800 Subject: pkg/cover: parallelize symbolizeModule to speed up the symbolize --- pkg/cover/backend/dwarf.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'pkg') diff --git a/pkg/cover/backend/dwarf.go b/pkg/cover/backend/dwarf.go index a1f2b3e1e..5b2281a36 100644 --- a/pkg/cover/backend/dwarf.go +++ b/pkg/cover/backend/dwarf.go @@ -458,12 +458,23 @@ func symbolizeModule(target *targets.Target, interner *symbolizer.Interner, objD func symbolize(target *targets.Target, interner *symbolizer.Interner, objDir, srcDir, buildDir string, splitBuildDelimiters []string, pcs map[*Module][]uint64) ([]Frame, error) { var frames []Frame + type frameResult struct { + frames []Frame + err error + } + frameC := make(chan frameResult, len(pcs)) for mod, pcs1 := range pcs { - frames1, err := symbolizeModule(target, interner, objDir, srcDir, buildDir, splitBuildDelimiters, mod, pcs1) - if err != nil { - return nil, err + go func(mod *Module, pcs []uint64) { + frames, err := symbolizeModule(target, interner, objDir, srcDir, buildDir, splitBuildDelimiters, mod, pcs) + frameC <- frameResult{frames: frames, err: err} + }(mod, pcs1) + } + for range pcs { + res := <-frameC + if res.err != nil { + return nil, res.err } - frames = append(frames, frames1...) + frames = append(frames, res.frames...) } return frames, nil } -- cgit mrf-deployment