Description
Describe the bug
The tests using coverlet used to be correctly fast, but since installing dotnet sdk 8.0.200 (released on 2024-02-13), the time skyrocketed from 15 seconds to > 7min. This is happening on two different tests projects which are not especially large.
To Reproduce
Hard to say, some other projects have not significantly changed. I suspect that these projects contain a few large methods (using nested inline methods in F#), but it used to be instrumented far faster.
Expected behavior
Instrumentation time should remain in the same range as before.
Actual behavior
The time in instrumentation is very long:
Project Evaluation Performance Summary:
125 ms D:\dev\app\Connectivity.Dispatcher.Proto\Connectivity.Dispatcher.Proto.csproj 2 calls
255 ms D:\dev\app\Connectivity.Planning\Connectivity.Planning.fsproj 2 calls
323 ms D:\dev\app\Connectivity.Planning.Test\Connectivity.Planning.Test.fsproj 3 calls
404 ms D:\dev\app\NATS.OpenTelemetry\NATS.OpenTelemetry.fsproj 6 calls
Project Performance Summary:
2498 ms D:\dev\app\Connectivity.Dispatcher.Proto\Connectivity.Dispatcher.Proto.csproj 9 calls
2 ms _GenerateRestoreProjectPathWalk 1 calls
0 ms _IsProjectRestoreSupported 1 calls
86 ms _GenerateRestoreGraphProjectEntry 1 calls
6 ms _GenerateProjectRestoreGraph 1 calls
3 ms GetTargetFrameworks 1 calls
1 ms GetNativeManifest 1 calls
0 ms InitializeSourceRootMappedPaths 1 calls
0 ms GetCopyToOutputDirectoryItems 1 calls
3868 ms D:\dev\app\NATS.OpenTelemetry\NATS.OpenTelemetry.fsproj 23 calls
168 ms _GenerateRestoreProjectPathWalk 1 calls
2 ms _GenerateRestoreProjectPathItemsPerFramework 2 calls
0 ms _IsProjectRestoreSupported 1 calls
19 ms _GenerateRestoreGraphProjectEntry 1 calls
0 ms _GetRestoreSettingsPerFramework 2 calls
56 ms _GenerateProjectRestoreGraph 1 calls
0 ms GetAllRuntimeIdentifiers 2 calls
45 ms _GenerateProjectRestoreGraphPerFramework 2 calls
214 ms GetTargetFrameworks 2 calls
13 ms GetTargetFrameworksWithPlatformForSingleTargetFramework 2 calls
0 ms GetNativeManifest 2 calls
0 ms GetCopyToOutputDirectoryItems 2 calls
0 ms InitializeSourceRootMappedPaths 1 calls
13905 ms D:\dev\app\Connectivity.Planning\Connectivity.Planning.fsproj 9 calls
228 ms _GenerateRestoreProjectPathWalk 1 calls
0 ms _IsProjectRestoreSupported 1 calls
95 ms _GenerateRestoreGraphProjectEntry 1 calls
7 ms _GenerateProjectRestoreGraph 1 calls
5 ms GetTargetFrameworks 1 calls
0 ms GetNativeManifest 1 calls
0 ms InitializeSourceRootMappedPaths 1 calls
0 ms GetCopyToOutputDirectoryItems 1 calls
405015 ms D:\dev\app\Connectivity.Planning.Test\Connectivity.Planning.Test.fsproj 8 calls
1442 ms Restore 1 calls
1 ms _IsProjectRestoreSupported 2 calls
747 ms _GenerateRestoreProjectPathWalk 1 calls
24 ms _GenerateRestoreGraphProjectEntry 1 calls
11 ms _GenerateProjectRestoreGraph 1 calls
385634 ms VSTest 1 calls
Target Performance Summary:
0 ms _Protobuf_Compile_BeforeCsCompile 1 calls
0 ms InstrumentModulesAfterBuild 1 calls
0 ms GenerateCoverageResultAfterTest 1 calls
0 ms Protobuf_Compile 1 calls
0 ms AfterBuild 4 calls
0 ms Protobuf_AfterCompile 1 calls
0 ms PrepareResourceNames 4 calls
0 ms BeforeBuild 4 calls
0 ms ResGen 4 calls
0 ms Protobuf_BeforeCompile 1 calls
0 ms _ChooseAppHost 1 calls
0 ms GenerateMSBuildEditorConfigFile 1 calls
0 ms BeforeResGen 4 calls
0 ms CreateSatelliteAssemblies 4 calls
0 ms Compile 4 calls
0 ms BeforeCompile 4 calls
0 ms CoreBuild 4 calls
0 ms _InitializeSourceRootMappedPathsFromSourceControl 4 calls
0 ms _CopySourceItemsToOutputDirectory 4 calls
0 ms PrepareResources 4 calls
0 ms ResolvePackageDependenciesForBuild 4 calls
0 ms PrepareForRun 4 calls
0 ms _SetEmbeddedFilesFromSourceControlManagerUntrackedFiles 4 calls
0 ms AfterResGen 4 calls
0 ms CreateCustomManifestResourceNames 4 calls
0 ms ValidateCommandLineProperties 4 calls
0 ms GetTargetPath 4 calls
0 ms PrepareProjectReferences 4 calls
0 ms GetReferenceAssemblyPaths 4 calls
0 ms GetFrameworkPaths 4 calls
0 ms GenerateSourceLinkFile 4 calls
0 ms SetWin32ManifestProperties 4 calls
0 ms _InitializeSourceRootMappedPathsOpt 4 calls
0 ms _SetTargetFrameworkMonikerAttribute 1 calls
0 ms _CheckForUnsupportedTargetFrameworkAndFeatureCombination 1 calls
0 ms _GenerateRestoreGraphProjectEntry 4 calls
0 ms AfterResolveReferences 4 calls
0 ms _Protobuf_SanityCheck 1 calls
0 ms AfterCompile 4 calls
0 ms Build 4 calls
0 ms _BeforeVBCSCoreCompile 1 calls
0 ms _InitializeSourceControlInformationFromSourceControlManager 4 calls
0 ms Protobuf_PrepareCompileOptions 1 calls
0 ms gRPC_ResolvePluginFullPath 1 calls
0 ms GenerateAssemblyInfo 4 calls
0 ms _GetRestoreSettingsCurrentProject 3 calls
0 ms BeforeResolveReferences 4 calls
0 ms _Protobuf_GatherStaleFiles 1 calls
0 ms BuildOnlySettings 4 calls
0 ms _GenerateProjectRestoreGraphCurrentProject 3 calls
0 ms CopyAdditionalFiles 1 calls
0 ms _AddOutputPathToGlobalPropertiesToRemove 4 calls
0 ms _CheckForMismatchingPlatform 1 calls
0 ms _Microsoft_Extensions_Configuration_Binder_RemoveAnalyzer 3 calls
0 ms EnableIntermediateOutputPathMismatchWarning 4 calls
0 ms _GenerateRestoreProjectPathItemsCurrentProject 3 calls
0 ms _gRPC_PrepareCompileOptions 1 calls
0 ms _ReportUpgradeNetAnalyzersNuGetWarning 1 calls
0 ms _Protobuf_GatherStaleSimple 1 calls
0 ms _SetSourceLinkFilePath 4 calls
0 ms ResolveLockFileAnalyzers 4 calls
0 ms _GenerateProjectRestoreGraph 4 calls
0 ms _PopulateCommonStateForGetCopyToOutputDirectoryItems 4 calls
0 ms _GenerateRestoreDependencies 4 calls
0 ms _ComputeSkipAnalyzers 1 calls
0 ms AddDepsJsonAndRuntimeConfigToCopyItemsForReferencingProjects 2 calls
0 ms IncludeTransitiveProjectReferences 4 calls
0 ms _Protobuf_SelectFiles 1 calls
0 ms GenerateMSBuildEditorConfigFileShouldRun 1 calls
0 ms _GetAppHostPaths 1 calls
0 ms _CheckForUnsupportedHostingUsage 4 calls
0 ms InitializeSourceControlInformation 4 calls
0 ms _CheckAndUnsetUnsupportedPrefer32Bit 3 calls
0 ms ResolveSDKReferences 4 calls
0 ms ExpandSDKReferences 4 calls
0 ms _DefaultMicrosoftNETPlatformLibrary 4 calls
0 ms AddImplicitDefineConstants 4 calls
0 ms _GetRestoreTargetFrameworksAsItems 1 calls
0 ms _ComputeNETCoreBuildOutputFiles 4 calls
0 ms _Protobuf_EnforceInvariants 1 calls
0 ms _CheckForUnsupportedArtifactsPath 4 calls
0 ms _IsProjectRestoreSupported 4 calls
0 ms IgnoreJavaScriptOutputAssembly 4 calls
0 ms _GetRestoreSettingsPerFramework 5 calls
0 ms _CheckForObsoleteDotNetCliToolReferences 9 calls
0 ms CollectFrameworkReferences 5 calls
1 ms _CheckForUnsupportedCppNETCoreVersion 10 calls
1 ms GetNativeManifest 3 calls
1 ms _GetRestoreSettingsOverrides 4 calls
1 ms GetTargetPathWithTargetPlatformMoniker 4 calls
1 ms AddSourceRevisionToInformationalVersion 4 calls
1 ms SourceControlManagerPublishTranslatedUrls 4 calls
1 ms _Protobuf_AugmentLanguageCompile 1 calls
1 ms _LoadRestoreGraphEntryPoints 1 calls
1 ms _CheckForUnsupportedAppHostUsage 2 calls
1 ms ShowCallOfVSTestTaskWithParameter 1 calls
1 ms ResolveReferences 4 calls
1 ms _Protobuf_CoreCompile 1 calls
1 ms _CheckForCompileOutputs 4 calls
1 ms _GetProjectJsonPath 10 calls
1 ms _CheckForLanguageAndFeatureCombinationSupport 9 calls
1 ms _GenerateRuntimeConfigurationFilesInputCache 2 calls
1 ms CollectCentralPackageVersions 5 calls
1 ms _CheckContainersPackage 4 calls
1 ms _CheckForUnsupportedNETCoreVersion 9 calls
1 ms ShowMsbuildWithParameter 1 calls
1 ms Protobuf_ReconcileOutputs 1 calls
1 ms _GenerateSatelliteAssemblyInputs 4 calls
1 ms _ComputePackageReferencePublish 4 calls
1 ms _SplitProjectReferencesByFileExistence 4 calls
1 ms _GenerateCompileInputs 4 calls
1 ms GetAssemblyAttributes 4 calls
1 ms _AddMicrosoftNetCompilerToolsetFrameworkPackage 9 calls
1 ms CoreResGen 4 calls
2 ms IncludeTargetingPackReference 1 calls
2 ms _GetRestoreTargetFrameworkOverride 4 calls
2 ms _GetFrameworkAssemblyReferences 3 calls
2 ms _Protobuf_SetProtoRoot 1 calls
2 ms _GenerateRestoreSpecs 4 calls
2 ms ValidateExecutableReferences 3 calls
2 ms _GetCopyToOutputDirectoryItemsFromThisProject 4 calls
2 ms _GenerateRestoreProjectPathItems 4 calls
2 ms _Protobuf_GatherStaleBatched 2 calls
2 ms AddGlobalAnalyzerConfigForPackage_MicrosoftCodeAnalysisNetAnalyzers 1 calls
2 ms CollectPackageDownloads 5 calls
2 ms _CheckForInvalidConfigurationAndPlatform 4 calls
2 ms GetAssemblyVersion 4 calls
2 ms _ComputeUserRuntimeAssemblies 4 calls
3 ms ResolveLockFileCopyLocalFiles 4 calls
3 ms Protobuf_ResolvePlatform 1 calls
3 ms ReferencedPathMaps 1 calls
3 ms GenerateProgramFile 2 calls
3 ms _BlockWinMDsOnUnsupportedTFMs 4 calls
3 ms GetTargetFrameworks 3 calls
3 ms SplitResourcesByCulture 4 calls
3 ms _GenerateDotnetCliToolReferenceSpecs 4 calls
4 ms GetAllRuntimeIdentifiers 3 calls
4 ms CollectFSharpDesignTimeTools 3 calls
4 ms AssignProjectConfiguration 2 calls
4 ms _GetRestoreTargetFrameworksOutput 4 calls
4 ms _CollectTargetFrameworkForTelemetry 5 calls
4 ms InitializeSourceRootMappedPaths 4 calls
5 ms GenerateTargetFrameworkMonikerAttribute 4 calls
5 ms _SourceLinkHasSingleProvider 4 calls
5 ms ResolveOffByDefaultAnalyzers 4 calls
5 ms _CopyOutOfDateSourceItemsToOutputDirectory 2 calls
5 ms GenerateMSBuildEditorConfigFileCore 1 calls
6 ms CheckForImplicitPackageReferenceOverrides 9 calls
6 ms CheckForDuplicateItems 4 calls
6 ms ResolveLockFileReferences 4 calls
6 ms Protobuf_PrepareCompile 1 calls
6 ms IncrementalClean 4 calls
6 ms _GetCopyToOutputDirectoryItemsFromTransitiveProjectReferences 4 calls
6 ms _GenerateRestoreProjectSpec 4 calls
7 ms ResolveRuntimePackAssets 1 calls
7 ms GenerateNETCompatibleDefineConstants 4 calls
7 ms _ComputeToolPackInputsToProcessFrameworkReferences 9 calls
7 ms GenerateGlobalUsings 1 calls
8 ms SetPaketCommand 10 calls
8 ms _GenerateCompileDependencyCache 4 calls
8 ms AssignTargetPaths 4 calls
8 ms _SetEmbeddedWin32ManifestProperties 4 calls
8 ms PrepareForBuild 4 calls
8 ms _ComputeReferenceAssemblies 4 calls
8 ms _GenerateSourceLinkFile 4 calls
9 ms ApplyImplicitVersions 9 calls
9 ms CreateGeneratedAssemblyInfoInputsCacheFile 4 calls
9 ms _GetRestoreProjectStyle 10 calls
11 ms TranslateGitLabUrlsInSourceControlInformation 4 calls
11 ms NETStandardCompatError_Microsoft_Extensions_Configuration_Binder 5 calls
11 ms TranslateBitbucketGitUrlsInSourceControlInformation 4 calls
12 ms TranslateAzureReposGitUrlsInSourceControlInformation 4 calls
12 ms GetTargetFrameworksWithPlatformForSingleTargetFramework 4 calls
13 ms UpdateAspNetToFrameworkReference 8 calls
13 ms TranslateGitHubUrlsInSourceControlInformation 4 calls
13 ms _CreateAppHost 1 calls
13 ms GenerateFSharpTextResources 3 calls
14 ms _GenerateProjectRestoreGraphPerFramework 5 calls
15 ms _GetRestoreSettingsAllFrameworks 1 calls
16 ms CollectPackageReferences 10 calls
16 ms _InitializeGitHubSourceLinkUrl 12 calls
16 ms ResolveFrameworkReferences 4 calls
16 ms _CleanGetCurrentAndPriorFileWrites 4 calls
17 ms GetCopyToOutputDirectoryItems 4 calls
17 ms _InitializeAzureReposGitSourceLinkUrl 12 calls
18 ms _GenerateRestoreProjectPathItemsPerFramework 5 calls
18 ms _ComputeTargetFrameworkItems 1 calls
19 ms _InitializeGitLabSourceLinkUrl 12 calls
21 ms RedirectTPReferenceToNewRedistributableLocation 3 calls
25 ms SetEmbeddedFilesFromSourceControlManagerUntrackedFiles 4 calls
25 ms ResolveTargetingPackAssets 4 calls
29 ms GenerateBuildRuntimeConfigurationFiles 2 calls
32 ms CopyFilesToOutputDirectory 4 calls
32 ms RedirectFSharpCoreReferenceToNewRedistributableLocation 3 calls
34 ms _CopyFilesMarkedCopyLocal 2 calls
36 ms _InitializeBitbucketGitSourceLinkUrl 12 calls
42 ms CoreGenerateAssemblyInfo 4 calls
50 ms _FilterRestoreGraphProjectInputItems 1 calls
50 ms _GenerateProjectRestoreGraphAllFrameworks 1 calls
51 ms _HandlePackageFileConflicts 4 calls
51 ms _GetRestoreSettings 4 calls
75 ms InitializeSourceControlInformationFromSourceControlManager 4 calls
93 ms FindReferenceAssembliesForReferences 4 calls
104 ms ProcessFrameworkReferences 8 calls
124 ms GenerateBuildDependencyFile 4 calls
126 ms _GenerateRestoreProjectPathItemsAllFrameworks 1 calls
127 ms ResolveAssemblyReferences 4 calls
143 ms PaketRestore 10 calls
153 ms ResolvePackageAssets 4 calls
191 ms GetTargetFrameworksWithPlatformFromInnerBuilds 1 calls
194 ms _GenerateRestoreGraph 1 calls
344 ms GenerateCoverageResult 1 calls
425 ms Restore 1 calls
621 ms _GetProjectReferenceTargetFrameworkProperties 4 calls
757 ms _GetAllRestoreProjectPathItems 1 calls
953 ms _GenerateRestoreProjectPathWalk 4 calls
16941 ms ResolveProjectReferences 4 calls
17165 ms BuildProject 1 calls
17510 ms CoreCompile 4 calls
366551 ms InstrumentModules 1 calls
385287 ms _VSTestConsole 1 calls
385289 ms VSTest 1 calls
Task Performance Summary:
1 ms VSTestLogsTask 2 calls
1 ms GetReferenceAssemblyPaths 1 calls
1 ms Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots 1 calls
1 ms NuGetMessageTask 1 calls
1 ms AssignCulture 4 calls
1 ms GetAssemblyVersion 4 calls
1 ms GenerateMSBuildEditorConfig 1 calls
1 ms GetGlobalPropertyValueTask 1 calls
1 ms ProtoToolsPlatform 1 calls
1 ms Delete 4 calls
1 ms ValidateExecutableReferences 3 calls
1 ms GetRestorePackageDownloadsTask 5 calls
1 ms SetRidAgnosticValueForProjects 4 calls
1 ms WarnForInvalidProjectsTask 1 calls
1 ms GetRestoreFrameworkReferencesTask 5 calls
1 ms FindAppConfigFile 4 calls
1 ms CombineXmlElements 3 calls
2 ms CheckForUnsupportedWinMDReferences 4 calls
2 ms Microsoft.SourceLink.Common.SourceLinkHasSingleProvider 4 calls
2 ms ResolveFrameworkReferences 4 calls
2 ms MapSourceRoots 3 calls
2 ms CreateProperty 10 calls
2 ms AllowEmptyTelemetry 5 calls
2 ms GetRestoreProjectReferencesTask 5 calls
2 ms GetRestoreDotnetCliToolsTask 4 calls
2 ms Touch 3 calls
2 ms CheckForDuplicateFrameworkReferences 8 calls
2 ms FSharpEmbedResourceText 3 calls
2 ms AssignProjectConfiguration 2 calls
2 ms FSharpEmbedResXSource 3 calls
2 ms GetProjectTargetFrameworksTask 4 calls
3 ms ProtoCompilerOutputs 1 calls
3 ms JoinItems 4 calls
3 ms ProtoReadDependencies 1 calls
3 ms CheckForImplicitPackageReferenceOverrides 9 calls
4 ms ApplyImplicitVersions 9 calls
4 ms GetRestorePackageReferencesTask 5 calls
4 ms AssignTargetPath 24 calls
4 ms CheckForDuplicateItems 12 calls
4 ms Message 46 calls
5 ms CheckIfPackageReferenceShouldBeFrameworkReference 16 calls
5 ms Hash 10 calls
5 ms GetRestoreProjectStyleTask 10 calls
5 ms GenerateGlobalUsings 1 calls
5 ms ResolveRuntimePackAssets 1 calls
5 ms RemoveDuplicates 19 calls
6 ms GetFrameworkPath 4 calls
6 ms ConvertToAbsolutePath 13 calls
7 ms CopyRefAssembly 4 calls
7 ms Microsoft.SourceLink.Common.GenerateSourceLinkFile 4 calls
7 ms Microsoft.SourceLink.GitLab.TranslateRepositoryUrls 4 calls
7 ms FindUnderPath 22 calls
7 ms CheckForDuplicateNuGetItemsTask 20 calls
7 ms Microsoft.SourceLink.AzureRepos.Git.TranslateRepositoryUrls 4 calls
7 ms Microsoft.SourceLink.Bitbucket.Git.TranslateRepositoryUrls 4 calls
8 ms WriteLinesToFile 12 calls
8 ms MakeDir 10 calls
8 ms ResolveAppHosts 8 calls
9 ms Microsoft.SourceLink.GitHub.TranslateRepositoryUrls 4 calls
9 ms CombineTargetFrameworkInfoProperties 4 calls
10 ms GetPackageDirectory 40 calls
10 ms ReadLinesFromFile 25 calls
12 ms CreateAppHost 1 calls
13 ms Microsoft.SourceLink.GitHub.GetSourceLinkUrl 12 calls
14 ms Microsoft.SourceLink.AzureRepos.Git.GetSourceLinkUrl 12 calls
15 ms Microsoft.SourceLink.Bitbucket.Git.GetSourceLinkUrl 12 calls
16 ms Microsoft.SourceLink.GitLab.GetSourceLinkUrl 12 calls
18 ms GetFileHash 10 calls
23 ms ResolveTargetingPackAssets 4 calls
23 ms Microsoft.Build.Tasks.Git.GetUntrackedFiles 4 calls
28 ms GenerateRuntimeConfigurationFiles 2 calls
31 ms GetReferenceNearestTargetFrameworkTask 3 calls
37 ms ResolvePackageFileConflicts 4 calls
39 ms WriteCodeFragment 3 calls
50 ms GetRestoreSettingsTask 4 calls
52 ms Copy 14 calls
72 ms Microsoft.Build.Tasks.Git.LocateRepository 4 calls
85 ms ProcessFrameworkReferences 8 calls
120 ms GenerateDepsFile 3 calls
123 ms ResolveAssemblyReference 4 calls
145 ms ResolvePackageAssets 4 calls
343 ms Coverlet.MSbuild.Tasks.CoverageResultTask 1 calls
424 ms RestoreTask 1 calls
1569 ms VSTestTask 1 calls
2038 ms Csc 1 calls
15464 ms Fsc 3 calls
36938 ms MSBuild 34 calls
366550 ms Coverlet.MSbuild.Tasks.InstrumentationTask 1 calls
769021 ms CallTarget 12 calls
Configuration (please complete the following information):
Please provide more information on your .NET configuration:
* coverlet.msbuild - 6.0
* problem appearing with: dotnet sdk 8.0.200 / dotnet runtime 8.0.2
* previously worked with dotnet sdk 8.0.102 / dotnet runtime 8.0.1
* Windows and Linux
* x64
* It seems to be linked to dotnet 8.0.200
Additional context
The only specific thing in the test dependency is a few methods that can be highly inlined at compilation (using F# inline keyword) and can be large. Other projects don't seem to be as much impacted.