Bug 1352486 (emberperf)

Improve performance on EmberPerf benchmark




2 years ago
Last year


(Reporter: evilpie, Unassigned)


(Blocks 2 bugs, {meta, perf})

Dependency tree / graph

Firefox Tracking Flags

(firefox52 wontfix, firefox53 affected, firefox54 affected, firefox55 affected, firefox56 affected)


(Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS][qf:meta], )


I just ran "Render Complex List" on Nightly and we are only about half as fast as Chrome.
Dupe of bug 1133864? Or at least that bug should depend on this one.
I'll take a look next week. I also want to figure out where that high error % comes from.
Flags: needinfo?(jdemooij)
Jeff Atwood reports that Chrome Canary and Edge both recently doubled their "Render Complex List" performance:


Blocks: QF-EmberJS
No longer blocks: 1241091
Keywords: perf
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS]
(In reply to Jan de Mooij [:jandem] from comment #2)
> I also want to figure out where that high error % comes from.

Part of this is EAGER_ALLOC_TRIGGER GCs, if I just disable that GC trigger my error % drops from > 100% to 75-80%. That's still nothing to be proud of, but it suggests GC definitely plays a role here. The next step is understanding what kind of GC things we allocate here.
OK, we're allocating (among other things) a lot of FAT_INLINE_STRING, STRING, and EXTERNAL_STRING arenas. There might be some easy wins here like bug 1352323. It's unfortunate we don't nursery allocate strings yet because I bet many of these are short-lived.
Depends on: 1352323
Ember (still) has some terrible logging. We're allocating many strings here:

  _glimmerUtil.LOGGER.debug('[VM] OP ' + opcode.type);

The debug-function is quite complicated so it's not trivial for the JIT to optimize this concatenation away.

We really want to use nursery allocation for these strings so we don't trigger full GCs.
Depends on: 903519
Depends on: 1346217
Depends on: 1337773
nominating for QF triage
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS] → [platform-rel-Frameworks][platform-rel-EmberJS][qf]
Duplicate of this bug: 1133864
I think we should be mentioning the logging issue to the Ember team, seems like something they could be interested in fixing on their side.
(In reply to Tom Schuster [:evilpie] from comment #9)
> I think we should be mentioning the logging issue to the Ember team, seems
> like something they could be interested in fixing on their side.

:jandem and others have access to our mailing list with the Ember core team. I'd encourage them reaching out if we deem that Tom Dale and others would find this interesting...
Depends on: 1353758
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS][qf] → [platform-rel-Frameworks][platform-rel-EmberJS][qf:p1]
Depends on: 1354582
The code is transpiled to JS (Babel) and Object.setPrototypeOf is used on functions to represent class inheritance. This confuses TI and we don't inline these functions in Ion, and then we end up with megamorphic ICs. This should be fixable, I just need to figure out the best way to do it.
Robert Jackson says Ember's new debug stripping should remove the logging function calls and avoid the string allocations. The Ember team is considering back porting to Ember LTS (2.12).

Depends on: 1357680
Alias: emberperf
Keywords: meta
Summary: Improve performance on Ember → Improve performance on EmberPerf benchmark
Here is a link to a profile from a user that was viewing Twitch (which uses the Ember framework, apparently), in the background:


Quite a bit of main thread jank on Content Process 5. Not sure if this is useful, but thought I'd attach.
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS][qf:p1] → [platform-rel-Frameworks][platform-rel-EmberJS][qf:p2]
Depends on: 1368626
Flags: needinfo?(jdemooij)
How's the situation changed with Fx 55 and Bug 1352323 fixed?
I see no improvement in Firefox 55 or 56 on my Windows 10 laptop. Results for the "Render Complex List" test with Ember version 2.13.0:

* Firefox 54 = 12.56 ops/sec
* Beta 55    = 12.89 ops/sec
* Nightly 56 = 12.04 ops/sec
* Edge 15    = 16.20 ops/sec
* Chrome 60  = 39.24 ops/sec
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS][qf:p2] → [platform-rel-Frameworks][platform-rel-EmberJS][qf:meta]
Priority: -- → P3
Depends on: 1442481
You need to log in before you can comment on or make changes to this bug.