This PR improves the call hierarchy building and visualization performance. Specifically, it solves the following problems:
Building code diagnostics call tree can be very expensive on large projects. Taking several hours in some cases due to recomputing sub-hierarchies even though they have already been computed before. This is now cached.
Drawing the UI can also take a long time due to call tree traversal to find if any node if a hot-path (critical). This property is now computed only once and propagated to the root of the hierarchy.
There is a redundant node (first child of the root). This was removed and a lot of code simplified.
This PR also adds call-tree specific test coverage.
As a result, analysis on large projects should only take minutes and there should not be any more lag in the UI.
This PR improves the call hierarchy building and visualization performance. Specifically, it solves the following problems:
This PR also adds call-tree specific test coverage.
As a result, analysis on large projects should only take minutes and there should not be any more lag in the UI.
cc @xdegtyarev