Performance of ES6 features relative to the ES5 baseline operations per second.
node chrome firefox edge safari
6.9.3 10.15.1 11.9.0 55 72 53 65 15.14959 18.17763 10
arrow tests babel 1.2x slower Identical Identical Identical Identical Identical Identical 1.2x slower Identical Identical
typescript Identical Identical Identical Identical Identical Identical 1.2x slower 1.2x faster 1.2x slower Identical
es6 Identical Identical Identical Identical Identical Identical 1.3x slower 1.2x faster 1.2x slower Identical
arrow-args tests babel Identical Identical Identical Identical 1.7x faster Identical Identical 1.5x slower Identical Identical
typescript Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect
es6 Identical Identical Identical Identical 1.7x faster Identical Identical Identical Identical 69x slower
arrow-declare tests babel 1.6x slower Identical Identical 1.4x slower Identical 23x slower Identical 1.7x slower 1.4x slower Identical
typescript 1.4x slower 1.3x faster 1.8x faster 1.3x slower Identical 23x slower Identical 1.4x slower 1.6x slower Identical
es6 1.4x slower Identical Identical 1.3x slower Identical 56x slower Identical 1.5x slower 1.5x slower Identical
bindings tests babel Identical Identical Identical Identical Identical Identical Identical 1.4x slower Identical Identical
typescript Identical 1.9x faster 1.8x faster Identical Identical Identical Identical Identical 1.5x slower Identical
es6 Identical Identical Identical Identical Identical Identical 1.2x faster Identical 1.4x slower Identical
bindings-compound tests babel Identical Identical Identical Identical Identical Identical Identical 1.2x slower Identical Identical
typescript Identical 1.7x faster 1.7x faster Identical Identical Identical Identical Identical 1.4x slower Identical
es6 Identical Identical Identical 1.6x slower Identical Identical Identical Identical 1.4x slower Identical
classes tests babel 1.9x slower Identical Identical 1.5x slower Identical 33x slower 3x slower 1.2x slower Identical 7x slower
babel-loose 1.7x slower 1.3x slower 1.3x slower 1.6x slower 1.6x slower 34x slower Identical 1.6x slower Identical 8x slower
babel-runtime 1.8x slower 1.3x slower 1.3x slower 1.5x slower 1.6x slower 40x slower 4x slower 2.0x slower 1.2x slower 7x slower
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical Identical Identical Identical Identical Identical 1.5x slower 1.4x slower Identical
defaults tests babel 1.5x slower 7x slower 7x slower 1.4x slower 16x slower Identical Identical 575x slower 204x slower 2.2x slower
babel-loose 1.9x slower 1.9x slower Identical Identical 1.3x slower
typescript Identical Identical 1.2x faster Identical Identical Identical Identical Identical 1.3x slower Identical
es6 Identical Identical Identical Identical Identical Identical Identical Identical 1.3x slower Identical
destructuring tests babel 2.4x slower 7x slower 7x slower 1.4x slower 6x slower Identical Identical 3x slower 1.6x slower 16x slower
babel-loose Identical Identical Identical Identical Identical Identical Identical 1.3x slower 1.2x slower Identical
babel-runtime 2.5x slower 7x slower 8x slower 1.4x slower 7x slower Identical Identical 4x slower 2.0x slower 21x slower
typescript Identical 126x slower 130x slower Identical 131x slower Identical 444x slower Identical 74x slower Identical
es6 17x slower 5x slower 3x slower 16x slower 3.0x slower 98x slower 19x slower 53x slower 55x slower 9x slower
destructuring-simple tests babel Identical Identical Identical Identical Identical Identical Identical 1.3x slower Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical 1.4x slower Identical
es6 Identical Identical Identical Identical Identical Identical Identical Identical 1.3x slower Identical
for-of-array tests babel 18x slower Identical Identical 17x slower Identical 16x slower Identical 10x slower Identical 1.6x slower
babel-loose 1.4x slower 1.2x slower Identical 1.7x slower 1.2x slower
babel-runtime 18x slower 17x slower 13x slower 13x slower 1.6x slower
typescript Identical 3x slower 4x slower Identical 2.8x slower Identical 6x slower Identical 9x slower Identical
es6 17x slower 1.2x slower 1.2x slower 17x slower Identical 2.5x slower 1.5x slower 7x slower 8x slower 1.3x slower
for-of-object tests babel 4x slower 2.4x slower 2.0x slower 1.9x slower 2.1x slower 6x slower 2.4x slower 4x slower 1.3x slower 2.3x slower
babel-loose 3x slower 2.2x slower 2.0x slower 2.1x slower 2.0x slower 3x slower 1.3x slower 6x slower Identical 2.5x slower
babel-runtime 4x slower 2.1x slower 5x slower 5x slower 2.3x slower
typescript Incorrect 2.2x slower 2.1x slower Incorrect 2.7x slower Incorrect 2.4x slower Incorrect 1.5x slower Incorrect
es6 4x slower 2.0x slower 2.0x slower 1.8x slower 2.4x slower 2.6x slower 1.3x slower 4x slower 1.3x slower 2.3x slower
generator tests babel 7x slower 5x slower 5x slower 6x slower 5x slower 10x slower 15x slower 38x slower 10x slower 8x slower
babel-loose 6x slower 4x slower 5x slower 5x slower 4x slower 10x slower 13x slower 54x slower 11x slower 8x slower
babel-runtime 6x slower 5x slower 5x slower 6x slower 4x slower 9x slower 14x slower 45x slower 11x slower 8x slower
typescript 7x slower 9x slower 6x slower 37x slower 18x slower
es6 6x slower 1.3x slower 1.6x slower 7x slower 1.3x slower 11x slower 20x slower 24x slower 19x slower 5x slower
map-set tests babel 5x slower 3x slower 2.8x slower 4x slower 3x slower 13x slower 12x slower 24x slower 2.7x slower 8x slower
babel-loose 13x slower 6x slower 47x slower 42x slower 22x slower
babel-runtime 17x slower 6x slower 46x slower 31x slower 22x slower
typescript 5x slower 2.9x slower 2.8x slower 4x slower 4x slower 14x slower 11x slower 22x slower 2.6x slower 8x slower
es6 5x slower 2.9x slower 2.8x slower 4x slower 4x slower 13x slower 11x slower 23x slower 2.6x slower 8x slower
map-set-lookup tests babel 9x faster 64x faster 63x faster 8x faster 47x faster 36x faster 14x faster 60x faster 130x faster 59x faster
babel-loose 2.1x faster 4x faster 4x faster 9x faster 9x faster
babel-runtime 1.9x faster 3x faster 4x faster 7x faster 9x faster
typescript 9x faster 69x faster 67x faster 8x faster 50x faster 36x faster 12x faster 79x faster 111x faster 60x faster
es6 9x faster 68x faster 68x faster 8x faster 50x faster 35x faster 14x faster 77x faster 118x faster 60x faster
map-set-object tests babel 8x slower 6x slower 5x slower 8x slower 6x slower 5x slower 3x slower 45x slower 4x slower 6x slower
babel-loose 19x slower 12x slower 15x slower 66x slower 16x slower
babel-runtime 21x slower 12x slower 15x slower 68x slower 16x slower
typescript 7x slower 6x slower 5x slower 8x slower 6x slower 5x slower 2.9x slower 45x slower 4x slower 6x slower
es6 8x slower 6x slower 5x slower 8x slower 6x slower 5x slower 3.0x slower 45x slower 4x slower 6x slower
map-string tests babel 2.4x slower Identical Identical 1.8x slower 1.4x slower 59x slower 56x slower 11x slower 6x slower 1.5x faster
babel-loose 12x slower 3x slower 514x slower 43x slower 4x slower
babel-runtime 12x slower 3x slower 508x slower 34x slower 4x slower
typescript 2.4x slower Identical Identical 1.8x slower 1.4x slower 59x slower 53x slower 11x slower 7x slower 1.5x faster
es6 2.4x slower Identical Identical 1.7x slower 1.4x slower 59x slower 53x slower 11x slower 7x slower 1.5x faster
new-target tests babel 4x faster 6x faster 7x faster 3x faster 1.2x slower
babel-loose 4x faster 6x faster 7x faster 3x faster 1.2x slower
babel-runtime 4x faster 6x faster 7x faster 2.8x faster 1.3x slower
typescript Identical Identical Identical Identical Identical
es6 1.9x slower 4x faster 6x faster 2.7x slower 7x faster 25x faster 4x faster 1.3x faster Identical 56x faster
object-assign tests babel 5x slower 1.7x faster 2.0x faster 4x slower 1.9x faster 1.5x slower 1.6x slower 1.6x faster 4x faster 2.1x slower
babel-loose 5x slower 4x slower 1.5x slower Identical 2.0x slower
babel-runtime 5x slower 4x slower 1.5x slower 1.5x faster 1.9x slower
typescript 5x slower 1.7x faster 2.0x faster 4x slower 1.8x faster 1.5x slower 2.0x slower 1.8x faster 4x faster 2.1x slower
es6 5x slower 1.8x faster 2.0x faster 4x slower 1.8x faster 1.5x slower 1.8x slower 1.6x faster 4x faster 2.1x slower
object-literal-ext tests babel 4x slower 2.4x slower 2.2x slower 4x slower 2.6x slower 3.0x slower 1.5x slower 1.5x slower 1.6x slower 1.4x slower
babel-loose Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
babel-runtime 4x slower 2.5x slower 2.5x slower 4x slower 2.3x slower 3.0x slower 1.3x slower 1.5x slower 1.4x slower 1.4x slower
typescript Identical Identical 1.2x faster Identical Identical Identical Identical Identical Identical Identical
es6 9x slower 5x slower 4x slower 9x slower 4x slower 12x slower 1.2x slower Identical 1.3x slower 2.7x slower
regex-u tests babel 1.6x slower 2.2x slower 2.0x slower 1.7x slower 5x slower 1.2x slower 1.7x slower 2.6x slower 5x slower 1.6x slower
typescript 1.5x slower 1.8x slower 1.7x slower 1.4x slower 1.7x slower 1.2x slower 1.7x slower 1.8x slower 2.9x slower 2.4x slower
es6 1.4x slower 1.9x slower 1.8x slower 1.4x slower 1.6x slower 1.2x slower 1.9x slower 2.5x slower 3x slower 2.4x slower
rest tests babel 6x faster 5x slower 6x slower 6x faster 1.2x faster 1558x faster 594x faster Identical Identical 23x slower
typescript 1.2x faster 39x slower 64x slower 1.2x faster 5x slower 14x faster 53x faster 40x faster 17x faster 41x slower
es6 1.2x faster Identical Identical 1.3x faster 1.3x faster 17x faster 34x faster 14x faster 7x faster 33x slower
spread tests babel Identical 1.4x slower 1.3x slower Identical 1.4x slower Identical Identical Identical Identical Identical
typescript Identical 16x slower 14x slower Identical 11x slower Identical 6x slower Identical 14x slower Identical
es6 20x slower Identical Identical 22x slower 1.2x faster 5x slower 1.4x slower 1.7x slower 6x slower 5x slower
spread-generator tests babel 19x slower 10x slower 9x slower 29x slower 9x slower 7x slower 5x slower 14x slower 17x slower 6x slower
babel-loose Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect Incorrect
babel-runtime 27x slower 10x slower 10x slower 31x slower 9x slower 5x slower 5x slower 14x slower 18x slower 6x slower
typescript 8x slower 7x slower 7x slower 13x slower 18x slower
es6 8x slower 2.7x slower 2.5x slower 8x slower 2.6x slower 5x slower 5x slower 9x slower 15x slower 4x slower
spread-literal tests babel 5x slower 7x slower 6x slower 2.8x slower 6x slower Identical 1.7x faster 1.2x slower 1.4x slower Identical
typescript 5x slower 18x slower 20x slower 2.8x slower 19x slower Identical 6x slower 1.2x slower 11x slower Identical
es6 8x slower 1.2x slower Identical 9x slower Identical 5x slower 1.2x faster 2.2x slower 2.9x slower 1.8x faster
super tests babel 13x slower 106x slower 112x slower 12x slower 194x slower 27x slower 44x slower 23x slower 14x slower 34x slower
babel-loose 3.0x slower Identical Identical 1.8x slower Identical 8x slower 4x slower 5x slower 1.2x slower 3x slower
babel-runtime 14x slower 86x slower 84x slower 11x slower 145x slower 27x slower 48x slower 24x slower 16x slower 33x slower
typescript Identical Identical Identical Identical Identical Identical 4x slower Identical 1.2x slower 1.8x slower
es6 4x slower 54x slower 55x slower 4x slower 101x slower 56x slower 102x slower 1.7x slower 1.8x slower 15x slower
template string tests babel Identical 88x slower 85x slower Identical 97x slower Identical 169x slower Identical Identical Identical
babel-loose Identical Identical Identical Identical Identical
typescript Identical Identical Identical Identical Identical Identical Identical Identical Identical Identical
es6 Identical Identical Identical 1.2x slower Identical Identical Identical 1.4x faster Identical 18x slower
template string tag tests babel 1.4x slower 2.4x slower 2.1x slower 1.5x slower 7x slower 12x faster Identical 2.1x slower 1.7x slower 1.7x slower
babel-loose Identical 1.2x slower 1.2x slower Identical 2.1x slower 12x faster Identical Identical Identical Identical
babel-runtime 1.4x slower 2.3x slower 2.2x slower 1.5x slower 8x slower 12x faster Identical 2.0x slower 1.7x slower 1.7x slower
typescript 1.3x slower 12x slower 11x slower 1.3x slower 31x slower 74x slower 255x slower 1.4x slower 5x slower 1.5x slower
es6 3x slower 52x faster 52x faster 3x slower 18x faster 12x faster Identical 2.0x slower 1.6x slower 2.1x slower

Testing methodology

Run on 2/13/2019 using babel 7.2.2, babel-runtime 7.3.1 and TypeScript 3.3.3.

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