coverlet-coverage / coverlet

Cross platform code coverage for .NET
MIT License
2.93k stars 385 forks source link

[BUG] Low modules filtering performance #1646

Closed BlackGad closed 2 months ago

BlackGad commented 3 months ago

Describe the bug Recently, we encountered a performance issue with Coverlet during our CI pipeline processes.

Before executing dotnet test, we preprocess our CI build files to generate a runsettings file. This file specifies which assemblies to include and exclude based on pattern matching.

The output directory ends up containing over 350 assemblies, including framework ones. Within this, the include section lists 54 patterns in the format [Assembly1]*,[Assembly2]*, while the exclude section contains 301 patterns, also specified in a similar manner.

To Reproduce Setup runsettings file and add Include and Exclude sections. Make sure that output folder contains a lot of modules.

Solution that reproduces issue https://github.com/BlackGad/Coverlet.Issue

Expected behavior Much faster processing

Actual behavior Slow performance

Configuration (please complete the following information): Please provide more information on your .NET configuration:

Additional context Link to solution with issue reproduce https://github.com/BlackGad/Coverlet.Issue Link to PR that fixes issue https://github.com/coverlet-coverage/coverlet/pull/1645

garcipat commented 2 months ago

We also discovered this and keep on version 6.0.1 for now. We only have a few exclusions and inclusions but still its a significantly slower then before (x5 times)

BlackGad commented 2 months ago

Hoping the maintainers of Coverlet are on vacation rather than the repository being inactive. So quietly here.

daveMueller commented 2 months ago

@BlackGad thanks a lot for your contribution. I try to look into your PR on the weekend.