-
Notifications
You must be signed in to change notification settings - Fork 56
Home
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.
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.
AreWeFastYet is designed to do the following:
- Compare performance on benchmarks between browser engines
- Get performance numbers before landing features
- Report regressions
- Show progress of not-by-default-enabled features
- Run benchmarks locally
- Database: MySQL database that stores statistics.
- Collector: Hidden PHP script on the webserver, where stats get sent. (UPDATE.php in above diagram)
- Processor: Python aggregator that builds JSON data from the DB. (update.py in above diagram)
- Website: Static HTML as the frontpage, that queries JSON via XHR.
- Command center: Sends commands to the slaves on what to execute.
- Builder: A python driver (build.py) that can create shell builds of spidermonkey/jsc/v8.
- Downloader: A python driver (download.py) that can download browser builds.
- 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.