Skip to content

"Unresponsive extension host" opening large project #4326

Closed

Description

@DanTup

While looking into #4325, with f32_test.dart open and running "Reload Window" to restart, I see this in the console:

Screenshot 2022-12-28 at 11 31 13

Several profiles here:

cpu profiles.zip

Activity

  1. added this to the v3.58.0 milestone on Dec 28, 2022
  2. DanTup commented on Jan 3, 2023

    @DanTup
    MemberAuthor

    Screenshot 2023-01-03 at 12 09 39

    rebuildFromOutline walks down the tree and calls some expensive code. The total in this profile was 3.5s.

  3. DanTup commented on Jan 3, 2023

    @DanTup
    MemberAuthor

    Whenever we discover a test, we do this:

    this.updateNode(testNode.parent);
    this.rebuildSuiteNode(suite);

    This rebuilds the parent, which means for a group with lots of tests, we're rebuilding all the siblings. But we then rebuild the entire suite, which not only duplicates all of that work, but then also does it for the rest of the file.

    The intention here is to ensure the parent statuses are up-to-date, but seems like maybe we could a) avoid the duplicated work, b) walk up instead of down to avoid doing more nodes then we need to, c) do we even need to update any status here? Can a newly-discovered test even change any parent statuses since it has the lowest status?

    (it's possible we need to rebuild the parent in order to replace its children, but we should find a way to do that that doesn't involve calling createTestItem for every sibling again).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions