Performance of ES6 features relative to the ES5 baseline operations per second.
node chrome firefox edge safari webkit
6.9.3 7.3.0 55 49 50 53 14.14393 15.14959 10 604.1.2+
arrow tests babel 1.2x slower Identical Identical Identical Identical Identical Identical 1.2x slower Identical Identical
buble 1.3x slower 1.2x slower Identical Identical Identical Identical 1.2x slower Identical Identical Identical
traceur Identical Identical Identical Identical Identical Identical 1.3x slower 1.2x faster Identical Identical
typescript Identical Identical Identical Identical Identical Identical 1.2x slower 1.2x faster Identical 1.2x slower
es6 Identical Identical Identical Identical Identical Identical Identical 1.2x faster Identical Identical
arrow-args tests babel Identical Identical Identical Identical Identical Identical Identical 1.5x slower Identical Identical
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
typescript Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect
es6 Identical Identical Identical Identical Identical Identical Identical Identical 69x slower 71x slower
arrow-declare tests babel 1.6x slower 1.5x slower 1.4x slower 1.4x slower 30x slower 23x slower 1.3x slower 1.7x slower Identical Identical
buble 1.6x slower 1.5x slower 1.3x slower 1.4x slower 15x slower 23x slower 1.4x slower 1.7x slower Identical Identical
traceur 1.4x slower 1.4x slower 1.3x slower 1.4x slower 15x slower 23x slower 1.5x slower 1.5x slower Identical Identical
typescript 1.4x slower 1.3x slower 1.3x slower 1.4x slower 15x slower 23x slower 1.5x slower 1.4x slower Identical Identical
es6 1.4x slower 1.3x slower 1.3x slower 1.3x slower 38x slower 56x slower 1.2x slower 1.5x slower Identical Identical
bindings tests babel Identical Identical Identical Identical Identical Identical Identical 1.4x slower Identical 1.2x slower
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
bindings-compound tests babel Identical Identical Identical Identical Identical Identical Identical 1.2x slower Identical Identical
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical 1.6x slower 1.6x slower 1.5x slower Identical Identical 1.2x slower Identical Identical Identical
classes tests babel 1.9x slower 9x slower 1.5x slower 1.4x slower 15x faster 33x slower 1.5x slower 1.2x slower 7x slower 7x slower
babel-loose 1.7x slower 9x slower 1.6x slower 1.4x slower 14x faster 34x slower 1.7x slower 1.6x slower 8x slower 8x slower
babel-runtime 1.8x slower 9x slower 1.5x slower 1.4x slower 13x faster 40x slower 1.5x slower 2.0x slower 7x slower 8x slower
buble Identical Identical Identical Identical 391x faster Identical Identical Identical Identical Identical
traceur Identical Identical Identical Identical 390x faster Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical 391x faster Identical Identical Identical Identical Identical
es6 Identical Identical Identical 2.4x slower 389x faster Identical 1.4x slower 1.5x slower Identical Identical
defaults tests babel 1.5x slower 1.5x slower 1.4x slower 1.5x slower Identical Identical 2.0x slower 575x slower 2.2x slower 10x slower
buble Identical Identical Identical Identical Identical Identical 1.2x faster Identical Identical Identical
traceur 11x slower 11x slower 13x slower 73x slower 2909x slower 2293x slower 237x slower 353x slower 4x slower 16x slower
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical Identical 3x slower Identical Identical Identical Identical Identical Identical
destructuring tests babel 2.4x slower 1.3x slower 1.4x slower 1.8x slower Identical Identical 3x slower 3x slower 16x slower 1.3x slower
babel-loose Identical Identical Identical Identical Identical Identical Identical 1.3x slower Identical Identical
babel-runtime 2.5x slower 1.4x slower 1.4x slower 1.4x slower Identical Identical 2.9x slower 4x slower 21x slower 7x slower
buble Identical Identical Identical Identical Identical Identical Identical Identical
traceur 14x slower 14x slower 15x slower 12x slower 81x slower 95x slower 31x slower 38x slower 6x slower 23x slower
typescript Identical Identical Identical Identical Identical Identical 1.2x faster Identical Identical Identical
es6 17x slower 15x slower 16x slower 83x slower 98x slower 20x slower 53x slower 9x slower 23x slower
destructuring-simple tests babel Identical Identical Identical Identical Identical Identical Identical 1.3x slower Identical Identical
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical Identical Identical Identical 1.2x slower Identical Identical Identical
for-of-array tests babel 18x slower 16x slower 17x slower 18x slower 17x slower 16x slower 10x slower 10x slower 1.6x slower 1.5x slower
babel-loose 1.4x slower Identical 1.2x slower Identical 1.8x slower Identical 1.4x slower 1.7x slower 1.2x slower Identical
babel-runtime 18x slower 16x slower 17x slower 18x slower 13x slower 13x slower 9x slower 13x slower 1.6x slower 1.6x slower
traceur 18x slower 15x slower 7x slower 8x slower 15x slower 12x slower 9x slower 9x slower 1.7x slower 1.7x slower
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 17x slower 15x slower 17x slower 15x slower 2.3x slower 2.5x slower 5x slower 7x slower 1.3x slower 1.3x slower
for-of-object tests babel 4x slower 2.2x slower 1.9x slower 7x slower 5x slower 6x slower 4x slower 4x slower 2.3x slower 4x slower
babel-loose 3x slower 2.2x slower 2.1x slower 6x slower 2.8x slower 3x slower 4x slower 6x slower 2.5x slower 5x slower
babel-runtime 4x slower 2.4x slower 2.1x slower 7x slower 5x slower 5x slower 5x slower 5x slower 2.3x slower 4x slower
traceur 4x slower 2.2x slower 1.8x slower 6x slower 5x slower 5x slower 4x slower 5x slower 2.3x slower 5x slower
typescript Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect
es6 4x slower 2.2x slower 1.8x slower 6x slower 2.3x slower 2.6x slower 3x slower 4x slower 2.3x slower 4x slower
generator tests babel 7x slower 9x slower 6x slower 6x slower 12x slower 10x slower 30x slower 38x slower 8x slower 6x slower
babel-loose 6x slower 6x slower 5x slower 7x slower 12x slower 10x slower 32x slower 54x slower 8x slower 6x slower
babel-runtime 6x slower 6x slower 6x slower 6x slower 11x slower 9x slower 32x slower 45x slower 8x slower 6x slower
traceur 31x slower 54x slower 38x slower 39x slower 174x slower 117x slower 36x slower 41x slower 10x slower 9x slower
es6 6x slower 5x slower 7x slower 1.6x slower 14x slower 11x slower 22x slower 24x slower 5x slower 1.6x slower
map-set tests babel 5x slower 5x slower 4x slower 6x slower 13x slower 13x slower 16x slower 24x slower 8x slower 6x slower
babel-loose 13x slower 14x slower 6x slower 8x slower 42x slower 47x slower 24x slower 42x slower 22x slower 19x slower
babel-runtime 17x slower 14x slower 6x slower 8x slower 41x slower 46x slower 21x slower 31x slower 22x slower 19x slower
buble 5x slower 4x slower 4x slower 5x slower 13x slower 13x slower 16x slower 22x slower 8x slower 6x slower
traceur 6x slower 27x slower 4x slower 6x slower 13x slower 13x slower 15x slower 23x slower 8x slower 6x slower
typescript 5x slower 4x slower 4x slower 6x slower 13x slower 14x slower 16x slower 22x slower 8x slower 6x slower
es6 5x slower 4x slower 4x slower 6x slower 12x slower 13x slower 15x slower 23x slower 8x slower 6x slower
map-set-lookup tests babel 9x faster 8x faster 8x faster 9x faster 39x faster 36x faster 55x faster 60x faster 59x faster 2623x faster
babel-loose 2.1x faster 1.5x faster 4x faster 4x faster 5x faster 4x faster 11x faster 9x faster 9x faster 12x faster
babel-runtime 1.9x faster 1.5x faster 3x faster 4x faster 4x faster 4x faster 10x faster 7x faster 9x faster 12x faster
buble 9x faster 8x faster 8x faster 9x faster 38x faster 36x faster 60x faster 57x faster 60x faster 2598x faster
traceur 9x faster 9x faster 8x faster 9x faster 39x faster 36x faster 60x faster 76x faster 60x faster 2554x faster
typescript 9x faster 8x faster 8x faster 9x faster 38x faster 36x faster 60x faster 79x faster 60x faster 2652x faster
es6 9x faster 9x faster 8x faster 9x faster 39x faster 35x faster 62x faster 77x faster 60x faster 2632x faster
map-set-object tests babel 8x slower 8x slower 8x slower 8x slower 8x slower 5x slower 32x slower 45x slower 6x slower 4x slower
babel-loose 19x slower 25x slower 12x slower 11x slower 25x slower 15x slower 40x slower 66x slower 16x slower 12x slower
babel-runtime 21x slower 25x slower 12x slower 11x slower 24x slower 15x slower 37x slower 68x slower 16x slower 12x slower
buble 7x slower 7x slower 8x slower 8x slower 8x slower 5x slower 32x slower 47x slower 6x slower 4x slower
traceur 11x slower 46x slower 8x slower 8x slower 8x slower 5x slower 35x slower 45x slower 6x slower 4x slower
typescript 7x slower 7x slower 8x slower 8x slower 8x slower 5x slower 34x slower 45x slower 6x slower 4x slower
es6 8x slower 8x slower 8x slower 8x slower 8x slower 5x slower 32x slower 45x slower 6x slower 4x slower
map-string tests babel 2.4x slower 1.9x slower 1.8x slower 2.4x slower 57x slower 59x slower 10x slower 11x slower 1.5x faster 42x faster
babel-loose 12x slower 10x slower 3x slower 4x slower 443x slower 514x slower 28x slower 43x slower 4x slower 2.7x slower
babel-runtime 12x slower 10x slower 3x slower 4x slower 457x slower 508x slower 29x slower 34x slower 4x slower 2.6x slower
buble 2.4x slower 1.9x slower 1.8x slower 2.4x slower 57x slower 59x slower 10x slower 11x slower 1.5x faster 42x faster
traceur 2.4x slower 1.9x slower 1.8x slower 2.4x slower 57x slower 59x slower 10x slower 11x slower 1.5x faster 42x faster
typescript 2.4x slower 1.9x slower 1.8x slower 2.4x slower 57x slower 59x slower 11x slower 11x slower 1.5x faster 42x faster
es6 2.4x slower 1.9x slower 1.7x slower 2.5x slower 57x slower 59x slower 11x slower 11x slower 1.5x faster 42x faster
new-target tests es6 1.9x slower 2.0x slower 2.7x slower 1.3x slower 12x faster 25x faster 1.2x faster 1.3x faster 56x faster 55x faster
object-assign tests babel 5x slower 4x slower 4x slower 2.4x slower 1.5x slower 1.5x slower 1.5x faster 1.6x faster 2.1x slower 2.2x slower
babel-loose 5x slower 4x slower 4x slower 2.4x slower 1.5x slower 1.5x slower 1.4x faster Identical 2.0x slower 2.0x slower
babel-runtime 5x slower 4x slower 4x slower 2.8x slower 1.5x slower 1.5x slower 1.3x faster 1.5x faster 1.9x slower 2.1x slower
buble 5x slower 4x slower 4x slower 1.4x slower 1.5x slower 1.5x slower 1.8x faster 1.7x faster 2.1x slower 2.2x slower
traceur 5x slower 23x slower 4x slower 1.4x slower 1.5x slower 1.5x slower 1.8x faster 1.5x faster 2.1x slower 2.2x slower
typescript 5x slower 5x slower 4x slower 1.3x slower 1.5x slower 1.5x slower 1.8x faster 1.8x faster 2.1x slower 2.2x slower
es6 5x slower 4x slower 4x slower 1.3x slower 1.5x slower 1.5x slower 1.8x faster 1.6x faster 2.1x slower 2.2x slower
object-literal-ext tests babel 4x slower 4x slower 4x slower 5x slower 4x slower 3.0x slower 1.3x slower 1.5x slower 1.4x slower 8x slower
babel-loose Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
babel-runtime 4x slower 4x slower 4x slower 5x slower 4x slower 3.0x slower 1.2x slower 1.5x slower 1.4x slower 8x slower
buble Identical Identical Identical Identical Identical Identical Identical Identical
traceur 32x slower 48x slower 29x slower 39x slower 29x slower 23x slower 4x slower 9x slower 6x slower 31x slower
typescript Identical Identical Identical Identical Identical Identical 1.3x faster Identical Identical Identical
es6 9x slower 9x slower 9x slower 15x slower 16x slower 12x slower 1.4x faster Identical 2.7x slower 1.3x slower
regex-u tests babel 1.6x slower 1.6x slower 1.7x slower 1.8x slower 1.2x slower 1.2x slower 1.6x slower 2.6x slower 1.6x slower 1.7x slower
buble 1.4x slower 1.4x slower 1.4x slower 1.6x slower 1.2x slower 1.2x slower 1.6x slower 1.8x slower
traceur 1.4x slower 1.4x slower 1.4x slower 1.7x slower 1.2x slower 1.2x slower 1.6x slower 1.7x slower 1.5x slower 1.8x slower
typescript 1.5x slower 1.4x slower 1.4x slower 1.2x slower 1.2x slower 1.5x slower 1.8x slower 2.4x slower 2.7x slower
es6 1.4x slower 1.5x slower 1.4x slower 1.3x slower 1.2x slower 1.6x slower 2.5x slower 2.4x slower 2.7x slower
rest tests babel 6x faster 6x faster 6x faster 55x faster 913x faster 1558x faster 1.6x slower Identical 23x slower 30x slower
buble 1.3x faster 1.3x faster Identical 10x faster 12x faster 14x faster 1.6x slower 43x faster 42x slower 65x slower
traceur Identical 1.2x faster 1.2x faster 10x faster 12x faster 14x faster 1.6x slower 43x faster 39x slower 61x slower
typescript 1.2x faster 1.2x faster 1.2x faster 11x faster 12x faster 14x faster 1.6x slower 40x faster 41x slower 58x slower
es6 1.2x faster 1.3x faster 1.3x faster 2.8x faster 17x faster 17x faster 10x faster 14x faster 33x slower 3x slower
spread tests babel Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur 16x slower 18x slower 12x slower 5x slower 2.9x slower 2.5x slower 4x slower 4x slower 7x slower 8x slower
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 20x slower 19x slower 22x slower 10x slower 9x slower 5x slower 1.6x slower 1.7x slower 5x slower 6x slower
spread-generator tests babel 19x slower 23x slower 29x slower 8x slower 5x slower 7x slower 35x slower 14x slower 6x slower 5x slower
babel-loose Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect
babel-runtime 27x slower 22x slower 31x slower 8x slower 5x slower 5x slower 33x slower 14x slower 6x slower 4x slower
traceur 27x slower 45x slower 28x slower 29x slower 43x slower 35x slower 26x slower 18x slower 6x slower 6x slower
es6 8x slower 8x slower 8x slower 3x slower 9x slower 5x slower 17x slower 9x slower 4x slower 2.3x slower
spread-literal tests babel 5x slower 2.9x slower 2.8x slower 2.0x slower 1.6x slower Identical Identical 1.2x slower Identical 1.2x faster
buble 5x slower 3.0x slower 2.8x slower 2.0x slower Identical Identical Identical 1.2x slower Identical 1.2x faster
traceur 16x slower 12x slower 10x slower 2.6x slower 2.3x slower 1.6x slower 5x slower 6x slower 1.9x slower 1.5x slower
typescript 5x slower 3.0x slower 2.8x slower 2.0x slower Identical Identical Identical 1.2x slower Identical Identical
es6 8x slower 9x slower 9x slower 5x slower 5x slower 5x slower 1.9x slower 2.2x slower 1.8x faster 3x faster
super tests babel 13x slower 21x slower 12x slower 21x slower 31x slower 27x slower 22x slower 23x slower 34x slower 23x slower
babel-loose 3.0x slower 11x slower 1.8x slower 1.7x slower 9x slower 8x slower 4x slower 5x slower 3x slower 2.5x slower
babel-runtime 14x slower 21x slower 11x slower 26x slower 31x slower 27x slower 21x slower 24x slower 33x slower 22x slower
buble Identical Identical Identical Identical 1.2x slower Identical Identical Identical 5x faster 6x faster
traceur 12x slower 11x slower 11x slower 18x slower 22x slower 19x slower 15x slower 16x slower 32x slower 21x slower
typescript Identical Identical Identical Identical Identical Identical Identical Identical 1.8x slower 1.5x slower
es6 4x slower 4x slower 4x slower 7x slower 53x slower 56x slower 1.6x slower 1.7x slower 15x slower 6x slower
template string tests babel Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
buble Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
traceur 2.0x slower 1.3x slower Identical Identical Identical Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical 1.2x slower Identical Identical Identical 1.4x faster 1.4x faster 18x slower 15x slower
template string tag tests babel 1.4x slower 1.5x slower 1.5x slower 1.5x slower 34x slower 12x faster 1.9x slower 2.1x slower 1.7x slower 1.6x slower
babel-loose Identical Identical Identical Identical 8x faster 12x faster Identical Identical Identical Identical
babel-runtime 1.4x slower 1.5x slower 1.5x slower 1.5x slower 34x slower 12x faster 1.8x slower 2.0x slower 1.7x slower 1.6x slower
traceur 14x slower 11x slower 10x slower 23x slower 138x slower 125x slower 13x slower 13x slower 7x slower 9x slower
typescript 1.3x slower 1.3x slower 1.3x slower 1.3x slower 97x slower 74x slower 1.5x slower 1.4x slower 1.5x slower 1.7x slower
es6 3x slower 3x slower 3x slower 4x slower 34x slower 12x faster 1.8x slower 2.0x slower 2.1x slower 2.0x slower

Testing methodology

Run on 1/4/2017 using babel 6.21.0, babel-runtime 6.20.0, and traceur 0.0.111.

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 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.