| node | chrome | firefox | internet explorer | safari | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.10.39 | 2.3.0 | 43 | 44 | 45 | 38 | 39 | 40 | 11 | 12 | 8 | ||
| arrow tests | babel | 1.3x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x faster | Identical |
| traceur | 1.3x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x faster | Identical | |
| es5-bind | 10x slower | 15x slower | 19x slower | 14x slower | 20x slower | 6x slower | 6x slower | 7x slower | 4x slower | 2.6x slower | 3x slower | |
| es6 | 38x slower | 41x slower | 52x slower | Identical | ||||||||
| arrow-args tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x faster | Identical |
| traceur | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x faster | Identical | |
| es6 | 2.9x slower | 64x slower | 89x slower | 68x slower | 1.3x faster | |||||||
| arrow-declare tests | babel | 1.3x slower | 1.3x slower | Identical | Identical | Identical | 8x slower | 10x slower | 13x slower | 2.3x slower | 1.6x slower | 1.4x slower |
| traceur | 1.3x slower | 1.3x slower | Identical | Identical | Identical | 5x slower | 7x slower | 8x slower | 2.3x slower | 1.4x slower | 1.4x slower | |
| es6 | Identical | 53x slower | 78x slower | 78x slower | 1.3x slower | |||||||
| bindings tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical |
| traceur | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x faster | Identical | |
| es6 | Identical | Identical | Identical | Identical | Identical | 2.3x slower | Identical | Identical | 1.3x slower | Identical | ||
| classes tests | babel | 2.3x slower | 1.5x slower | 1.3x slower | 1.4x slower | 1.3x slower | 27x slower | 26x slower | 30x slower | 1.4x slower | 1.5x slower | Identical |
| babel-loose | 2.3x slower | 1.5x slower | 1.3x slower | 1.4x slower | 1.3x slower | 6x slower | 6x slower | 8x slower | 1.3x slower | 2.4x slower | Identical | |
| traceur | Identical | Identical | Identical | Identical | Identical | 1.5x slower | 1.7x slower | 1.8x slower | Identical | Identical | Identical | |
| es6 | Identical | Identical | Identical | Identical | ||||||||
| defaults tests | babel | 17x slower | 11x slower | 11x slower | 9x slower | 8x slower | 1842x slower | 2051x slower | 2043x slower | 229x slower | 72x slower | 4x slower |
| traceur | 16x slower | 12x slower | 12x slower | 10x slower | 9x slower | 1759x slower | 2305x slower | 1974x slower | 210x slower | 73x slower | 4x slower | |
| es6 | Identical | Identical | Identical | |||||||||
| destructuring tests | babel | 1.8x slower | 1.4x slower | 1.4x slower | 1.2x slower | 1.3x slower | 24x slower | 22x slower | 26x slower | 3x slower | 5x slower | 2.2x slower |
| babel-loose | 1.2x faster | Identical | Identical | 1.2x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| traceur | 26x slower | 13x slower | 12x slower | 10x slower | 11x slower | 163x slower | 152x slower | 176x slower | 57x slower | 25x slower | 8x slower | |
| es6 | 170x slower | 148x slower | 185x slower | Identical | ||||||||
| destructuring-simple tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 10x slower | 1.2x slower | Identical |
| traceur | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | |
| es6 | Identical | Identical | Identical | Identical | ||||||||
| for-of-array tests | babel | 21x slower | 8x slower | 8x slower | 9x slower | 9x slower | 14x slower | 20x slower | 19x slower | 15x slower | 489x slower | 7x slower |
| babel-loose | Identical | Identical | Identical | Identical | Identical | 1.4x slower | 1.7x slower | 1.7x slower | 1.3x slower | Identical | 1.8x slower | |
| traceur | 12x slower | 7x slower | 7x slower | 8x slower | 8x slower | 26x slower | 31x slower | 32x slower | 9x slower | 6x slower | 6x slower | |
| es6 | 6x slower | 6x slower | 8x slower | 8x slower | 5x slower | 7x slower | 7x slower | 2.9x slower | 4x slower | |||
| for-of-object tests | babel | 10x slower | 7x slower | 8x slower | 9x slower | 6x slower | 6x slower | 6x slower | 5x slower | 60x slower | 11x slower | 6x slower |
| babel-loose | 10x slower | 6x slower | 7x slower | 9x slower | 7x slower | 4x slower | 4x slower | 4x slower | 6x slower | 449x slower | 6x slower | |
| traceur | 8x slower | 7x slower | 8x slower | 9x slower | 7x slower | 9x slower | 10x slower | 9x slower | 5x slower | 4x slower | 4x slower | |
| es6 | 6x slower | 7x slower | 8x slower | 6x slower | 3x slower | 3x slower | 3x slower | 3x slower | ||||
| generator tests | babel | 601x slower | 65x slower | 67x slower | 63x slower | 69x slower | 754x slower | 723x slower | 716x slower | 79x slower | 499x slower | 78x slower |
| traceur | 77x slower | 10x slower | 10x slower | 10x slower | 12x slower | 48x slower | 50x slower | 46x slower | 18x slower | 112x slower | 10x slower | |
| es6 | Identical | 1.2x slower | Identical | Identical | 22x slower | 20x slower | 19x slower | |||||
| map-set tests | babel | 13x slower | 3.0x slower | 5x slower | 5x slower | 3.0x slower | 105x slower | 12x slower | 15x slower | 60x slower | 19x slower | 79x slower |
| traceur | 5x slower | Identical | 2.2x slower | 2.3x slower | 1.6x slower | 20x slower | 2.5x slower | 2.4x slower | 28x slower | 2.2x slower | 16x slower | |
| es6 | 5x slower | Identical | 2.2x slower | 2.3x slower | 1.6x slower | 21x slower | 2.2x slower | 2.7x slower | 28x slower | 2.2x slower | 15x slower | |
| object-literal-ext tests | babel | 4x slower | 60x slower | 72x slower | 71x slower | 80x slower | 1.8x slower | 1.6x slower | 1.6x slower | 2.6x slower | 2.0x slower | 2.5x slower |
| babel-loose | Identical | 12x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| traceur | 8x slower | 120x slower | 143x slower | 122x slower | 144x slower | 3x slower | 3x slower | 2.9x slower | 5x slower | 4x slower | 4x slower | |
| es6 | 25x slower | 23x slower | 26x slower | 1.4x slower | 1.5x slower | 1.3x slower | Identical | |||||
| promises tests | babel | Identical | Identical | 6x faster | 7x faster | 7x faster | 21x faster | 17x faster | 16x faster | Identical | 1.2x slower | 3x faster |
| traceur | Identical | Identical | 2.0x faster | 2.0x faster | 1.9x faster | 36x faster | 31x faster | Identical | Identical | 1.8x slower | 3x faster | |
| es6 | Identical | 2.0x faster | 2.0x faster | 1.9x faster | 37x faster | 29x faster | Identical | 1.9x slower | 3x faster | |||
| proto tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.4x slower | Identical | Identical | Identical |
| traceur | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| es5-strict | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| es6 | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| regex-u tests | babel | 1.4x faster | 1.8x faster | 1.7x faster | 1.7x faster | 1.8x faster | Identical | 1.2x faster | Identical | Identical | Identical | Identical |
| traceur | 1.4x faster | 1.8x faster | 1.9x faster | 1.8x faster | 1.9x faster | Identical | Identical | 1.2x faster | 17x slower | Identical | Identical | |
| es6 | Identical | 1.2x slower | ||||||||||
| rest tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 2.0x slower | 1.5x slower | Identical |
| traceur | Identical | 1.5x faster | 1.2x faster | 1.2x faster | 1.2x faster | 31x faster | 34x faster | 27x faster | 2.4x slower | 1.6x slower | 1.3x faster | |
| es6 | 3x slower | 40x faster | 42x faster | 32x faster | 8x faster | |||||||
| spread tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical |
| traceur | 13x slower | 6x slower | 5x slower | 6x slower | 6x slower | 2.7x slower | 3x slower | 3x slower | 9x slower | 712x slower | 17x slower | |
| es6 | 3x slower | 4x slower | 4x slower | 1.3x slower | 2.5x slower | |||||||
| spread-generator tests | babel | 150x slower | 55x slower | 58x slower | 66x slower | 71x slower | 153x slower | 143x slower | 157x slower | 656x slower | 423x slower | 64x slower |
| babel-loose | 114x slower | 46x slower | 41x slower | 45x slower | 53x slower | 60x slower | 60x slower | 61x slower | 28x slower | 51x slower | 22x slower | |
| traceur | 27x slower | 10x slower | 9x slower | 10x slower | 13x slower | 11x slower | 10x slower | 11x slower | 15x slower | 1551x slower | 9x slower | |
| es6 | 7x slower | 8x slower | 7x slower | |||||||||
| spread-literal tests | babel | Identical | Identical | Identical | Identical | Identical | 1.2x slower | Identical | 1.2x slower | 3x slower | 1.7x slower | 2.0x slower |
| traceur | 6x slower | 3.0x slower | 2.1x slower | 2.5x slower | 2.3x slower | 6x slower | 5x slower | 5x slower | 26x slower | 451x slower | 9x slower | |
| es6 | 8x slower | 7x slower | 8x slower | 1.8x slower | 3x slower | |||||||
| super tests | babel | 24x slower | 60x slower | 52x slower | 48x slower | 45x slower | 60x slower | 62x slower | 61x slower | 24x slower | 24x slower | 16x slower |
| babel-loose | 2.0x slower | 1.7x slower | 1.7x slower | 1.7x slower | 1.7x slower | 5x slower | 5x slower | 5x slower | 3x slower | 3.0x slower | 1.2x slower | |
| traceur | 12x slower | 26x slower | 18x slower | 18x slower | 18x slower | 26x slower | 30x slower | 27x slower | 10x slower | 12x slower | 11x slower | |
| es6 | 14x slower | 19x slower | 21x slower | 18x slower | ||||||||
| template_string tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.5x faster | 1.4x faster | Identical |
| traceur | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
| es6 | Identical | 2.0x slower | 2.0x slower | 1.9x slower | 627x slower | 622x slower | 591x slower | 1.3x faster | ||||
| template_string_tag tests | babel | 567x slower | 578x slower | 722x slower | 755x slower | 820x slower | 2395x slower | 2349x slower | 2028x slower | 90x slower | 82x slower | 61x slower |
| babel-loose | 2.0x slower | 1.6x slower | 1.7x slower | 1.6x slower | 1.8x slower | 94x slower | 87x slower | 84x slower | 1.4x slower | 1.4x slower | 2.0x slower | |
| traceur | 7x slower | 13x slower | 17x slower | 13x slower | 16x slower | 346x slower | 307x slower | 261x slower | 13x slower | 11x slower | 8x slower | |
| es6 | 8x slower | 9x slower | 13x slower | 9x slower | 68x slower | 64x slower | 59x slower | Identical | ||||
Run on Thursday, June 25, 2015 using babel 5.6.7, babel-runtime 5.6.3, and traceur 0.0.90.
Testing methodology
For each of the ES6 features in question, a ES5 implementation of that functionality was written along with a ES6 version. It should be noted that the functionality is frequently the same, but in some cases the "common" vs. "correct" version was written, i.e. using x[key] = value vs. defineProperty which is faster but can be hit but a particular nasty edge case for those who deem it fun to extend Object.prototype.
Babel, in both loose+runtime and runtime mode, and Traceur were then used to compile the ES6 version to a ES5 compliant version, utilizing the runtime over polyfill to maintain test isolation and avoid native implementations where possible.
All of these test instances were then benchmarked in the given JavaScript engine using [Benchmark.js](http://benchmarkjs.com/) and then the operations per second compared to the ES5 implementation. Cross browser and cross execution comparisions are avoided as much as possible to isolate environmental issues when executing on VMs in the cloud. Identical indicates that the tested implementation was +/- 10% of the ES5 implementation.