The PathFixer code is one of the slowest parts of coverage processing. In particular building the PathFixerTree can be the slowest part of processing in particular for large customers with huge monorepos with thousands of files that need to be indexed into this Tree for each upload.
Also matching file paths using that built PathFixer is a slow and accounts for a big chunk of coverage processing. See #2978 for a flamegraph showing this.
Rewriting this whole thing in Rust should ideally solve these performance issues, and would also be a prerequisite to porting more of coverage processing over to Rust in the long term.
The
PathFixer
code is one of the slowest parts of coverage processing. In particular building thePathFixer
Tree
can be the slowest part of processing in particular for large customers with huge monorepos with thousands of files that need to be indexed into thisTree
for each upload.Also matching file paths using that built
PathFixer
is a slow and accounts for a big chunk of coverage processing. See #2978 for a flamegraph showing this.Rewriting this whole thing in Rust should ideally solve these performance issues, and would also be a prerequisite to porting more of coverage processing over to Rust in the long term.