Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The macrobenchmark does a complete I/O benchmark. It is the same as running
dotnet affected
command.It discovers csproj files, creates an MSBuild project graph and then applies the detection algorithms.
The microbenchmark runs the detection algorithm only. The Projects are already discovered and the ProjectGraph is already built.
According to my profiling, the most time consumer method is the building of the
ProjectGraph
.Instantiating
ProjectGraph
for 1k SDK based projects takes~5s
and3GB
ram 😮Gonna research if there are ways to improve this by configuring the
ProjectGraph
, but now we have a way to measure it.We could add a separate benchmark for
ProjectGraph
instantiation only in order to measure this.I did notice that if the project has no
Sdk
defined, it takes significantly less time/resources.However, we will need to have the
Sdk
defined in order to use Predictions in PR #46