Repository navigation
Investigate deoptimization diagnostics tooling #44211
Copy link
Copy link
Closed
Labels
Domain: PerformanceReports of unusually slow behaviorReports of unusually slow behaviorInfrastructureIssue relates to TypeScript team infrastructureIssue relates to TypeScript team infrastructureRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
Milestone
Description
Activity
- addedInfrastructureIssue relates to TypeScript team infrastructureIssue relates to TypeScript team infrastructureDomain: PerformanceReports of unusually slow behaviorReports of unusually slow behavior
on May 22, 2021 May I request that be investigation public (Or already public but in somewhere)?
Very interested in this stuff.Reacted by intrnl, Erik, E-Liang Tan, Paul, Brian Kim, Dmitry Patsura, Max Lay, Hendry Sadrak, Yuya Tanaka, Radosław Miernik and 23 more- addedRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
on Aug 30, 2021 canonic-epicure commented
on Oct 29, 2021 More actionsThere's already a tool for this: https://www.npmjs.com/package/deoptigate
Its very useful, shows all places where v8 switches to megamorphic IC.
Reacted by Erik and WJHReacted by Clifford Fajardo , Toni Villena, Erik, Chris Krycho, Degubi, Caleb Jasik, Kenta Moriuchi and Vitaly
Metadata
Metadata
Assignees
Labels
Domain: PerformanceReports of unusually slow behaviorReports of unusually slow behaviorInfrastructureIssue relates to TypeScript team infrastructureIssue relates to TypeScript team infrastructureRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
We've been diving deep into perf. One place we find tooling lacking is in identifying deoptimizations in the VM. Ron Buckton (@rbuckton) has had some neat experiments which we might be able to leverage to identify polymorphic/megamorphic usage sites. Work closely with Andrew Casey (@amcasey) here to get a sense of what is and isn't useful.
Also, identify some baselines within the tooling to help drive meaningful goals for users. For example, a use-site might have 500 different object shapes passing through it - is it meaningfully faster to reduce that to 200?
Ideally, this would be usable by the broader team and partner teams who also write CPU-bound Node.js code.