Bug 1352486 (emberperf)

Improve performance on EmberPerf benchmark

NEW
Unassigned

Status

()

Core
JavaScript Engine
7 months ago
3 months ago

People

(Reporter: evilpie, Unassigned)

Tracking

(Depends on: 1 bug, Blocks: 2 bugs, {meta, perf})

unspecified
meta, perf
Points:
---
Dependency tree / graph

Firefox Tracking Flags

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

Details

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

(Reporter)

Description

7 months ago
http://emberperf.eviltrout.com/

I just ran "Render Complex List" on Nightly and we are only about half as fast as Chrome.

Comment 1

7 months ago
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:

https://twitter.com/codinghorror/status/841775015917887488

https://twitter.com/codinghorror/status/847693460572225536
Blocks: 1349448
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

Updated

7 months ago
Depends on: 1346217

Updated

7 months ago
Depends on: 1337773
nominating for QF triage
status-firefox52: --- → wontfix
status-firefox53: --- → affected
status-firefox54: --- → affected
status-firefox55: --- → affected
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS] → [platform-rel-Frameworks][platform-rel-EmberJS][qf]
(Reporter)

Updated

7 months ago
Duplicate of this bug: 1133864
(Reporter)

Comment 9

7 months ago
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...

Updated

7 months ago
Depends on: 1353758
Blocks: 1097376
Whiteboard: [platform-rel-Frameworks][platform-rel-EmberJS][qf] → [platform-rel-Frameworks][platform-rel-EmberJS][qf:p1]

Updated

6 months ago
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).

https://github.com/glimmerjs/glimmer-build/pull/42

Updated

6 months ago
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:

https://perfht.ml/2qAJFHe

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]

Updated

5 months ago
Depends on: 1368626

Updated

5 months ago
Flags: needinfo?(jdemooij)

Comment 14

3 months ago
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
status-firefox56: --- → affected

Comment 16

3 months ago
You can follow on https://arewefastyet.com/#machine=35&view=breakdown&suite=emberperf
You need to log in before you can comment on or make changes to this bug.