Skip to content
This repository has been archived by the owner on Mar 29, 2019. It is now read-only.
Hannes Verschore edited this page Mar 24, 2017 · 6 revisions
  1. What is AreWeFastYet?
  2. What is AreWeFastYet used for?
  3. How does AreWeFastYet accomplish its goals?

What is AreWeFastYet?

The JavaScript engines and in extension the browser engines are in a competitive space trying to improve performance of their engines. That is hard en-devour since the language chances over time and because the used and most important idioms change over time. Tackling one improvement could lead to regressions of other idioms. AreWeFastYet tracks performance over time of the major JavaScript VMs. This gives the possibility of comparing the browser engines with each-other as well as act on occurred regressions.

History

AreWeFastYet was created as an internal graphing tool for the Mozilla JS Engine team. They used it to compare and track their performance improvements during the creation of JaegerMonkey and IonMonkey. This was a motivational tool that helped the team keep their focus. Over the years extra engines have been added and it also started to run benchmarks in browsers. The focus has also shifted a bit and the most important role now is to report regressions that has happened.

What is AreWeFastYet used for?

AreWeFastYet is designed to do the following:

Components

Alt text

Website:

  1. Database: MySQL database that stores statistics.
  2. Collector: Hidden PHP script on the webserver, where stats get sent. (UPDATE.php in below diagram)
  3. Processor: Python aggregator that builds JSON data from the DB. (update.py in below diagram)
  4. Website: Static HTML as the frontpage, that queries JSON via XHR.
  5. Command center: Sends commands to the slaves on what to execute. (In construction.)

Slave:

  1. Builder: A python driver (build.py) that can create shell builds of spidermonkey/jsc/v8.
  2. Downloader: A python driver (download.py) that can download browser builds of Firefox.
  3. Executor: (execute.py) is a python script that executes one or multiple benchmarks on one or more builds.

Components (2) and (4) must be on the same webserver, otherwise timestamps might not be computed correctly.

Clone this wiki locally