Skip to content

Inefficient way to create the first version of the dependencies tree after loading a project #3321

@lifengl

Description

@lifengl

GroupedByTargetTreeViewProvider.BuildSubTreesAsync will create nodes by nodes and insert them to the tree. It turns out to be a very inefficient way to create the immutable tree. When the code add one item, the entire spine will need be replaced (also it remembers the each change in the history record). The main project tree in CPS has been written to create it from bottom-up. (Creating leaf nodes first then folders with existing children nodes). This will reduce lots of CPU/memory overhead. The later sequence still has to update node by node because of the limitation of the current data structure, but usually, it will do much less change after first iteration.

Metadata

Metadata

Assignees

Labels

Feature-Dependency-Node"Dependencies" node in Solution Explorer that display project, binary & package referencesPerformance-Scenario-Solution-OpenThis issue affects solution open performance.Priority:2Work that is important, but not critical for the releaseTenet-PerformanceThis issue affects the "Performance" tenet.Triage-ApprovedReviewed and prioritized

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions