-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance: reduce overhead of computing full path for items from globs #2645
Comments
Is this evaluation, or design time builds? Could you please also post more of the backtraces to see where GetFullPath is called from (preferably up to Project), or upload the perfiew trace? |
This happens after the project evaluation inside VS. During that phase, we extra information from msbuild evaluation results based on rules defined in the project system. The overall time is much smaller than the evaluation time, so I would consider this lower priority than improving the evaluation time. On the other side, we start to look beyond the evaluation time to see what we can do to make loading a project faster, and this turns out to be one major block we want to make more efficient during the critical path in the loading phase. I will share the Roslyn.sln loading ETW trace with you (or anyone can take this trace with PerfView). To look into this time: Open the thread time window in perfView, (select devenv, and remove grouParts setting) and find UpdateSnapshotCoreAsync stack, and open it in the Callees window (this will aggregate time spent in this method). Use context menu to drill into it. After that, you can see the time spent inside this function, and the top cost is inside FileUtilities.GetFullPath. The caller of this method:
|
@ladipro Has this been addressed in your latest glob optimization? If yes please close this issue. |
@rokonec I don't think this was addressed in the glob optimization changes. We should take a closer look at this. |
@ladipro please check it out and decide if this is still something we shall invest into in close future? Currently it is P1 so we shall at least consider to lower priority here. |
@rokonec this still seems to be actionable, I can see Next step would be to see if on this particular code path I lean towards keeping it as P1 and tackling it in one of the upcoming iterations. |
Was it tackled? |
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.
The text was updated successfully, but these errors were encountered: