Skip to content
This repository has been archived by the owner on Mar 29, 2019. It is now read-only.
Benjamin Bouvier edited this page May 19, 2017 · 6 revisions
  1. What is AreWeFastYet?
  2. What is AreWeFastYet used for?
  3. Components

What is AreWeFastYet?

The JavaScript engines and in extension the browser engines are in a competitive space trying to improve performance of their engines. This is a hard endeavor since the language and the most 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 have 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 above diagram)
  3. Processor: Python aggregator that builds JSON data from the DB. (update.py in above 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.

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.
  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 web server, otherwise timestamps might not be computed correctly.

Clone this wiki locally