Performance of ES6 features relative to the ES5 baseline operations per second.
node chrome firefox edge safari
8.6.0 12.18.1 60.0.3112.20 88.0.4324.41 87 13.10586 9 14
arrow tests babel Identical Identical Identical Identical
traceur Identical Identical Identical Identical
typescript Identical Identical Identical Identical
es5-bind Identical Identical Identical 1.6x faster 9x slower 4x slower 12x slower 7x slower
es6 Identical 1.2x faster Identical 1.4x faster Identical Identical Identical
arrow-args tests babel Identical Identical Identical Identical
traceur Identical Identical Identical Identical
typescript Incorrect Incorrect Incorrect Incorrect
es6 Identical 11x slower 4x faster Identical Identical Identical Identical
arrow-declare tests babel 1.2x slower Identical 1.5x slower Identical
traceur 1.4x slower Identical 1.5x slower Identical
typescript 1.2x slower Identical 1.5x slower Identical
es6 1.2x slower Identical Identical Identical Identical 1.5x slower Identical
bindings tests babel Identical Identical Identical Identical
traceur Identical Identical Identical Identical
typescript Identical Identical Identical Identical
es6 Identical Identical Identical Identical Identical Identical Identical
bindings-compound tests babel Identical 1.3x slower Identical Identical
traceur Identical Identical Identical Identical
typescript Identical 1.7x faster Identical Identical
es6 Identical Identical Identical 1.2x faster Identical Identical Identical
classes tests babel Identical 32x faster 1.3x slower Identical
babel-loose Identical 37x faster Identical Identical
babel-runtime Identical 35x faster 1.3x slower Identical
traceur Identical 32x faster Identical Identical
typescript Identical 1.6x faster Identical Identical
es6 Identical Identical Identical Identical Identical 1.3x slower 1.2x slower Identical
defaults tests babel 15x slower 16x slower 2.6x slower 6x slower
traceur 99x slower 99x slower 250x slower 9x slower
typescript Identical Identical Identical Identical
es6 Identical Identical Identical Identical Identical Identical 1.2x faster
destructuring tests babel 4x slower Identical 4x slower 2.3x slower
babel-loose Identical Identical Identical Identical
babel-runtime 6x slower 1.2x slower 4x slower 2.3x slower
traceur 4x slower Identical 35x slower 32x slower
typescript Identical Identical Identical Identical
es6 10x slower 1.5x slower Identical Identical 70x slower 21x slower 26x slower 4x slower
destructuring-array tests es6 4x slower 5x faster 5x faster Identical 44x slower 1.8x slower
destructuring-custom-iterator tests es6 Identical Identical Identical Identical 1.6x slower Identical
destructuring-default-values tests es6 Identical Identical Identical Identical 1.8x slower 4x faster
destructuring-nested-object tests es6 Identical Identical 1.2x faster 1.2x faster 3x slower 1.2x faster
destructuring-simple tests babel Identical 1.7x faster Identical Identical
traceur Identical 1.6x faster Identical Identical
typescript Identical 1.3x slower Identical Identical
es6 Identical Identical 1.3x slower 1.5x faster 2.3x slower Identical Identical Identical
destructuring-string tests es6 9x slower 1.5x slower 3x slower 1.5x slower 41x slower 21x slower
for-of-array tests babel Identical 1.2x slower 10x slower 7x slower
babel-loose Identical Identical 1.3x slower 1.3x slower
babel-runtime 1.8x slower 1.2x slower 25x slower 7x slower
traceur 1.2x slower 1.2x slower 9x slower 7x slower
typescript 1.2x faster Identical Identical Identical
es6 Identical 1.2x slower Identical 1.2x slower 5x slower 5x slower 5x slower Identical
for-of-object tests babel 2.0x slower 1.8x slower 5x slower 3x slower
babel-loose 2.3x slower 1.9x slower 13x slower 2.4x slower
babel-runtime 3x slower 1.9x slower 24x slower 3x slower
traceur 2.1x slower 1.8x slower 5x slower 3.0x slower
typescript Incorrect Incorrect Incorrect Incorrect
es6 2.1x slower 5x slower 1.9x slower 4x slower 3x slower 3x slower 2.4x slower 2.2x slower
generator tests babel 4x slower 3x slower 33x slower 17x slower
babel-loose 4x slower 3.0x slower 32x slower 18x slower
babel-runtime 5x slower 3x slower 32x slower 18x slower
traceur 86x slower 33x slower 36x slower 17x slower
es6 1.2x slower 1.2x slower 1.3x slower 2.5x slower 13x slower 18x slower Identical
map-set tests babel 4x slower 4x slower 1.6x slower 7x slower
babel-loose 9x slower 8x slower 6x slower 23x slower
babel-runtime 9x slower 8x slower 6x slower 23x slower
traceur 5x slower 4x slower 1.6x slower 8x slower
typescript 4x slower 4x slower 1.5x slower 8x slower
es6 4x slower 2.7x slower 4x slower 2.8x slower 7x slower 1.5x slower 9x slower 6x slower
map-set-lookup tests babel 10x faster 7x faster 66x faster 63x faster
babel-loose 4x faster 4x faster 11x faster 8x faster
babel-runtime 2.9x faster 4x faster 11x faster 8x faster
traceur 10x faster 9x faster 61x faster 65x faster
typescript 17x faster 9x faster 62x faster 65x faster
es6 17x faster 39x faster 15x faster 29x faster 87x faster 65x faster 65x faster 140x faster
map-set-object tests babel 11x slower 8x slower 1.6x slower 2.1x slower
babel-loose 17x slower 16x slower 6x slower 7x slower
babel-runtime 23x slower 17x slower 6x slower 7x slower
traceur 10x slower 9x slower 1.7x slower 2.2x slower
typescript 9x slower 9x slower 1.5x slower 2.2x slower
es6 9x slower 5x slower 9x slower 5x slower 2.8x slower 1.6x slower 2.3x slower 5x slower
map-string tests babel 1.7x slower 2.4x slower 9x slower 1.4x faster
babel-loose 5x slower 6x slower 26x slower 5x slower
babel-runtime 6x slower 6x slower 24x slower 4x slower
traceur 1.8x slower 1.8x slower 9x slower 1.3x faster
typescript 1.7x slower 2.2x slower 9x slower 1.3x faster
es6 1.8x slower 1.4x slower 6x slower 1.4x slower 35x slower 10x slower 1.3x faster 1.4x slower
new-target tests es6 4x faster Identical Identical Identical 10x faster Identical 1.3x slower
nodesource-array-includes tests es6 Identical Identical Identical Identical Identical 1.5x slower
nodesource-default-params tests es6 Identical Identical 1.7x slower Identical Identical Identical
object-assign tests babel 3x slower 4x slower 1.6x faster 4x slower
babel-loose 3x slower 3x slower 1.6x faster 3x slower
babel-runtime 4x slower 3x slower 1.7x faster 3x slower
traceur 4x slower 3x slower 1.6x faster 3x slower
typescript 3x slower 3x slower 1.7x faster 3x slower
es6 4x slower 1.4x faster 3x slower 1.5x faster Identical 1.8x faster 1.2x faster
object-literal-ext tests babel 3x slower 5x slower 1.6x slower 1.4x faster
babel-loose Identical Identical Identical 1.6x faster
babel-runtime 4x slower 5x slower 1.6x slower 1.5x faster
traceur 44x slower 42x slower 4x slower 3x slower
typescript Identical Identical Identical 1.2x faster
es6 6x slower 2.9x slower 5x slower 4x slower Identical Identical 1.8x faster Identical
promises tests babel Identical 2.0x faster Identical 7x faster
babel-loose Identical 1.9x faster Identical 7x faster
babel-runtime Identical 1.9x faster Identical 7x faster
traceur Identical 2.0x faster Identical 7x faster
typescript Identical 2.0x faster Identical 7x faster
es6 Identical Identical 2.0x faster 3x slower 2.2x faster Identical 7x faster 2.3x slower
regex-u tests babel 1.4x slower 1.6x slower 7x slower 4x slower
traceur 1.6x slower 1.4x slower 1.5x slower 1.4x slower
typescript 1.4x slower 1.5x slower 1.3x slower
es6 1.4x slower 1.7x slower 1.4x slower 1.6x slower 1.4x slower 1.3x slower 2.3x slower
rest tests babel 4x faster 4x faster 1.6x slower 1.3x faster
traceur 1.6x slower 1.4x slower 1.7x slower Identical
typescript 1.5x slower 1.4x slower 1.7x slower Identical
es6 Identical 11x slower Identical Identical 8x faster 11x faster 5x faster
spread tests babel Identical 1.2x slower Identical Identical
traceur 2.0x slower 2.1x slower 21x slower 28x slower
typescript Identical Identical Identical Identical
es6 1.3x slower Identical Identical Identical 1.6x slower 1.5x slower 5x slower 1.2x slower
spread-generator tests babel 7x slower 7x slower 90x slower 13x slower
babel-loose Incorrect Incorrect Incorrect Incorrect
babel-runtime 9x slower 8x slower 36x slower 13x slower
traceur 57x slower 28x slower 43x slower 10x slower
es6 4x slower 2.8x slower 3x slower 5x slower 3x slower 10x slower Identical
spread-literal tests babel 3x slower 3x slower 1.6x slower 1.3x slower
traceur 4x slower 3.0x slower 25x slower 8x slower
typescript 3x slower 3x slower 2.2x slower 1.5x slower
es6 5x slower Identical 4x slower Identical 2.9x slower 1.9x slower 6x slower 21x faster
spread-super tests es6 7x slower 1.6x slower Identical 1.3x faster 5x slower 1.4x faster
super tests babel 133x slower 27x slower 22x slower 21x slower
babel-loose 11x slower 3x slower 7x slower 1.8x slower
babel-runtime 145x slower 31x slower 26x slower 21x slower
traceur 202x slower 30x slower 22x slower 22x slower
typescript Identical 6x slower 1.3x slower Identical
es6 41x slower 9x slower 17x slower 9x slower Identical 2.9x slower 7x slower 8x slower
template string tests babel Identical 2.2x slower 1.9x faster Identical
traceur 1.3x slower 2.5x slower 1.8x faster Identical
typescript Identical 1.3x slower 2.3x faster Identical
es6 Identical Identical 2.3x slower Identical 10x slower 2.5x faster Identical Identical
template string tag tests babel 1.4x slower 1.3x slower 1.4x slower 2.0x slower
babel-loose Identical 1.8x faster 1.4x faster 1.4x faster
babel-runtime 1.8x slower Identical 1.4x slower 2.0x slower
traceur 11x slower 6x slower 12x slower 7x slower
typescript Identical Identical 1.2x slower 2.8x slower
es6 3x slower 2.3x faster 2.1x slower 1.3x slower 22x faster 1.3x slower 2.3x slower 13x faster

Testing methodology

Run on 2021-4-7 using babel 6.26.3, babel-runtime 6.26.0, and traceur 0.0.108.

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.