Skip to content
This repository was archived by the owner on Jan 6, 2026. It is now read-only.

NVP's Quest Issue for Investigating Performance #1605

@NullVoxPopuli

Description

@NullVoxPopuli

Original Issue: #1590

As a part of this issue, it was reported that, in consuming ember.js apps, the vendor.js (where the VM lives), grew by ~ 50KB.
See: emberjs/ember.js#20628

Suspicions to investigate

  • we need embroider and auto-import to use the real @glimmer/* dependencies and not the ember-source/dist/dependencies stuff
    • embroider already supports handling export conditions
    • it would likely be too accidentally disruptive to switch to using real glimmer packages in a patch release
    • ember-source's deps should instead use the correct glimmer (and we wshould confirm this)
  • debug code is ending up in production (even in 0.84.3)
    • if any debug things that weren't present in 0.84.3 should be changed to LOCAL_DEBUG
    • are there any DEBUG things that are not for ember-debug?
  • dead code elimination of the GlimmerVM
  • are there possibly duplicate modules between the packages?
  • destruction, while async, is autotracked -- it doesn't need to be autotracked -- can we remove that?
  • iteration changes in 64eb186

Things that don't work

No change in perf

Things that have a small improvement

  • about 6% improvement
    • Explore performance 3 #1598
    • However, this begs the question if our CI's performance benchmark is using development or production
      • 2024-09-06: the benchmark in CI does use the prod build
  • about a 1% improvement

Needs further exploration

Notes

Which packages are in ember-source?

ember-source @ v5.4ember-source @ 6 alpha

@glimmer/destroyable
@glimmer/encoder
@glimmer/env
@glimmer/global-context
@glimmer/low-level
@glimmer/manager
@glimmer/node
@glimmer/opcode-compiler
@glimmer/owner
@glimmer/program
@glimmer/reference
@glimmer/runtime
@glimmer/tracking/index
@glimmer/tracking/primitives/cache
@glimmer/util
@glimmer/validator
@glimmer/vm
@glimmer/wire-format

@glimmer/debug
@glimmer/destroyable
@glimmer/encoder
@glimmer/env
@glimmer/global-context
@glimmer/manager
@glimmer/node
@glimmer/opcode-compiler
@glimmer/owner
@glimmer/program
@glimmer/reference
@glimmer/runtime
@glimmer/tracking/index
@glimmer/tracking/primitives/cache
@glimmer/util
@glimmer/validator
@glimmer/vm
@glimmer/wire-format

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions