dotnet / dotnet/msbuild

Performance: reduce overhead of computing full path for items from globs

Open
#2,645 8 comments 0 reactions 0 assignees View on GitHub
Area: Performance CPS Priority:1
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

Based on investigating performance trace to load Roslyn.sln, I looked into the time spent in CPS's UpdateSnapshotCoreAsync, almost 30% thread time in this function is to calculate FullPath of project items.

Because those items are coming from globs, I wonder the path is naturally normalized, and we can reduce some of the overhead here.

```
Name Inc % Inc Inc Ct
microsoft.build.ni!FileUtilities.GetFullPath 28.1 405.567 592
+ microsoft.build.ni!FileUtilities.NormalizePath 19.3 277.811 267
+ system.ni!System.Text.RegularExpressions.Regex.Match(System.String) 5.9 84.554 209
+ mscorlib.ni!System.IO.Path.Combine(System.String, System.String) 1.5 22.189 62
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.