I did a small research and will appreciate your feedback @mixonic @wycats @chancancode
First of all, I changed source of raw data to the original ENV.generateData() used by other frameworks in tests (for instance React). Then I started to measure how much time is spent in different parts of loadSample function. I was pushing number of ms spent for the operation in arrays and once in 100 measurements console.log the average (see route/application.js for details)
All measurements were made on production builds.
Sample #1
Ember ver: 2.9.1
Description: Using component dbmon-database to represent tr and dbmon-query to represent td for top 5 queries
Code for dbmon-database:
<td class="dbname">
{{db.dbname}}
</td>
<td class="query-count">
<span class="{{countClassName}}">
{{queries.length}}
</span>
</td>
{{#each topFiveQueries as |query|}}
{{dbmon-query query=query class=(concat "Query" query.className)}}
{{/each}}
Time for rerendering ms: 170~180
Sample #2
Ember ver: 2.9.1
Description: Using component dbmon-database to represent tr and plain {{#each}} to represent td for top 5 queries
Code for dbmon-database:
<td class="dbname">
{{db.dbname}}
</td>
<td class="query-count">
<span class="{{countClassName}}">
{{queries.length}}
</span>
</td>
{{#each topFiveQueries as |query|}}
<td class="Query {{query.className}}">
{{query.formatElapsed}}
<div class="popover left">
<div class="popover-content">{{query.query}}</div>
<div class="arrow"></div>
</div>
</td>
{{/each}}
Time for rerendering ms: 85~90
Sample #3
Ember ver: 2.9.1
Description: Rendering everything in application.hbs
Time for rerendering ms: 78~85
Sample #4
Ember ver: 2.9.1
Description: Rendering everything in application.jbs and using key=“@index” in each helper for top 5 queries
Time for rerendering ms: 34~38
Commit: most performant no components and key · chilicoder/js-repaint-perfs-ember@983a21b · GitHub
Sample #5
Ember ver: 2.9.1
Description: Same as sample #1 (using two components) but using key=“@index” in each helper for top 5 queries
Time for rerendering ms: ~50
Commit: two components with key=@index · chilicoder/js-repaint-perfs-ember@673397e · GitHub
Thus, on my computer, I got ~33 FPS for Ember 2.9.1 (React ~50) which is good, I think.
For future work will try 2.10-beta with Glimmer2