Benchmark recording of an ember app with running with 2 versions of Ember.
TypeScript JavaScript Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
archives
bin
dists
embers
.gitignore
README.md
config.json.example
index.ts
package.json
server.ts
tsconfig.json
yarn.lock

README.md

ember-macro-bench

A tool for measuring changes in Ember to applications.

This uses chrome-tracing and har-remix to measure the effects of small changes to Ember on applications.

This is also a demonstration of using these tools to measure applications.

Setup

Prerequisites

These instructions assume Mac and using homebrew.

Install R

brew tap homebrew/science
brew install r

Run R

R

Then install R packages:

install.packages("jsonlite")
install.packages("R6")
install.packages("ggplot2")
q()

Install yarn

brew install yarn

Install

git clone git@github.com:krisselden/ember-macro-benchmark.git
cd ember-macro-benchmark
yarn

Run the Server

Edit the config.json

  • har: the emberaddons.com HAR file, the example is a recording of emberaddons.com built with Ember 2.13.0-beta.1
  • ember: path to an ember dist to splice into the vendor.js, the example results were tested against Ember commit 2c45a3b.
  • dist: path to full emberaddons.com build. Use this when testing ember versions that require wire format changes. Note that you must use an unfingerprinted production build.
    • If the dist property is set you may also set fingerprinted to false to ensure that assets are correctly served when you have opted out of fingerprinting. If fingerprinted is undefined it will assume assets are fingerprinted.
  • runCount: number of benchmarks to run
  • cpuThrottleRate: Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc).
  • networkCondition: Configurations for combinations of latency/downloadThroughput/uploadThroughput. Presets are taken from addyosmani/network-emulation-conditions
    • Available options: GPRS, REGULAR_2G, GOOD_2G, REGULAR_3G, GOOD_3G, REGULAR_4G, DSL, WIFI.

Caveat: the templates are in the recorded app, you can only test with an Ember with compatible template wire-format as the recording.

yarn run serve

Run the Benchmark

While the app is being served, run:

yarn run bench

Generate the Report

To generate the report run:

yarn run plot

Which will generate a PDF in the results folder with the reports from Chrome Tracing. It contains several graphs and plots for. Here are a few resources to help you read them:

If you'd like to see a smaller summary in your CLI you can run:

yarn run report

Which will give you an abbreviated report.