node | chrome | firefox | edge | safari | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6.9.3 | 10.15.1 | 13.8.0 | 18.9.1 | 55 | 72 | 80 | 106 | 53 | 65 | 72 | 105 | 15.14959 | 18.17763 | 105 | 10 | ||
arrow tests | babel | 1.2x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x slower | Identical | Identical | Identical |
typescript | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x slower | Identical | Identical | 1.2x faster | 1.2x slower | Identical | Identical | |
es6 | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | Identical | 1.2x faster | 1.2x slower | Identical | Identical | |
arrow-args tests | babel | Identical | Identical | Identical | Identical | Identical | 1.7x faster | Identical | Identical | Identical | Identical | Identical | Identical | 1.5x slower | Identical | Identical | Identical |
typescript | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | |
es6 | Identical | Identical | Identical | Identical | Identical | 1.7x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 69x slower | |
arrow-declare tests | babel | 1.6x slower | Identical | 2.0x slower | Identical | 1.4x slower | Identical | Identical | Identical | 23x slower | Identical | Identical | Identical | 1.7x slower | 1.4x slower | Identical | Identical |
typescript | 1.4x slower | 1.3x faster | Identical | Identical | 1.3x slower | Identical | Identical | Identical | 23x slower | Identical | Identical | Identical | 1.4x slower | 1.6x slower | Identical | Identical | |
es6 | 1.4x slower | Identical | 2.0x slower | Identical | 1.3x slower | Identical | Identical | Identical | 56x slower | Identical | Identical | Identical | 1.5x slower | 1.5x slower | Identical | Identical | |
bindings tests | babel | Identical | Identical | 2.0x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.4x slower | Identical | Identical | Identical |
typescript | Identical | 1.9x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.5x slower | Identical | Identical | |
es6 | Identical | Identical | 2.0x slower | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x faster | Identical | Identical | Identical | 1.4x slower | Identical | Identical | |
bindings-compound tests | babel | Identical | Identical | 2.0x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.2x slower | Identical | Identical | Identical |
typescript | Identical | 1.7x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.4x slower | Identical | Identical | |
es6 | Identical | Identical | 2.0x slower | Identical | 1.6x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.4x slower | Identical | Identical | |
classes tests | babel | 1.9x slower | Identical | Identical | 8x slower | 1.5x slower | Identical | Identical | 32x slower | 33x slower | 3x slower | 23x slower | 1.4x slower | 1.2x slower | Identical | 30x slower | 7x slower |
babel-loose | 1.7x slower | 1.3x slower | 1.5x slower | 1.2x faster | 1.6x slower | 1.6x slower | 1.5x slower | 2.0x slower | 34x slower | Identical | Identical | Identical | 1.6x slower | Identical | 1.9x slower | 8x slower | |
babel-runtime | 1.8x slower | 1.3x slower | 1.5x slower | 8x slower | 1.5x slower | 1.6x slower | 1.5x slower | 33x slower | 40x slower | 4x slower | 26x slower | 1.6x slower | 2.0x slower | 1.2x slower | 30x slower | 7x slower | |
typescript | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
es6 | Identical | Identical | 1.3x slower | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.5x slower | 1.4x slower | Identical | Identical | |
defaults tests | babel | 1.5x slower | 7x slower | Identical | Identical | 1.4x slower | 16x slower | Identical | Identical | Identical | Identical | Identical | 19x slower | 575x slower | 204x slower | Identical | 2.2x slower |
babel-loose | 1.9x slower | 2.0x slower | 2.5x slower | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | ||||||
typescript | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | Identical | |
es6 | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | Identical | |
destructuring tests | babel | 2.4x slower | 7x slower | 5x slower | Identical | 1.4x slower | 6x slower | 5x slower | Identical | Identical | Identical | Identical | 18x slower | 3x slower | 1.6x slower | Identical | 16x slower |
babel-loose | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | 1.2x slower | Identical | Identical | |
babel-runtime | 2.5x slower | 7x slower | 5x slower | 2.8x slower | 1.4x slower | 7x slower | 5x slower | 2.6x slower | Identical | Identical | 12x slower | 19x slower | 4x slower | 2.0x slower | 2.5x slower | 21x slower | |
typescript | Identical | 126x slower | 155x slower | 109x slower | Identical | 131x slower | 121x slower | 96x slower | Identical | 444x slower | 459x slower | 95x slower | Identical | 74x slower | 91x slower | Identical | |
es6 | 17x slower | 5x slower | 6x slower | 5x slower | 16x slower | 3.0x slower | 5x slower | 5x slower | 98x slower | 19x slower | 18x slower | 49x slower | 53x slower | 55x slower | 5x slower | 9x slower | |
destructuring-simple tests | babel | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.3x slower | Identical | Identical | Identical |
typescript | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 1.4x slower | Identical | Identical | |
es6 | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | 2.4x slower | Identical | 1.3x slower | Identical | Identical | |
for-of-array tests | babel | 18x slower | Identical | 1.4x slower | 5x slower | 17x slower | Identical | 1.4x slower | 4x slower | 16x slower | Identical | 17x slower | 7x slower | 10x slower | Identical | 4x slower | 1.6x slower |
babel-loose | 1.4x slower | Identical | 4x slower | 1.2x slower | Identical | 3x slower | Identical | Identical | 8x slower | 1.7x slower | 3x slower | 1.2x slower | |||||
babel-runtime | 18x slower | 17x slower | 13x slower | 13x slower | 1.6x slower | ||||||||||||
typescript | Identical | 3x slower | 4x slower | 3x slower | Identical | 2.8x slower | 4x slower | 3x slower | Identical | 6x slower | 16x slower | 4x slower | Identical | 9x slower | 3x slower | Identical | |
es6 | 17x slower | 1.2x slower | 1.4x slower | 1.3x slower | 17x slower | Identical | 1.3x slower | 1.2x slower | 2.5x slower | 1.5x slower | 2.3x slower | 2.4x slower | 7x slower | 8x slower | 1.2x slower | 1.3x slower | |
for-of-object tests | babel | 4x slower | 2.4x slower | 1.9x slower | 2.8x slower | 1.9x slower | 2.1x slower | 2.4x slower | 2.6x slower | 6x slower | 2.4x slower | 2.3x slower | 2.6x slower | 4x slower | 1.3x slower | 2.6x slower | 2.3x slower |
babel-loose | 3x slower | 2.2x slower | 1.8x slower | 1.9x slower | 2.1x slower | 2.0x slower | 2.4x slower | 2.0x slower | 3x slower | 1.3x slower | 1.3x slower | 2.3x slower | 6x slower | Identical | 2.0x slower | 2.5x slower | |
babel-runtime | 4x slower | 2.1x slower | 5x slower | 5x slower | 2.3x slower | ||||||||||||
typescript | Incorrect | 2.2x slower | 2.2x slower | 1.8x slower | Incorrect | 2.7x slower | 2.7x slower | 1.9x slower | Incorrect | 2.4x slower | 2.4x slower | 1.5x slower | Incorrect | 1.5x slower | 2.0x slower | Incorrect | |
es6 | 4x slower | 2.0x slower | 1.8x slower | 1.6x slower | 1.8x slower | 2.4x slower | 2.2x slower | 1.7x slower | 2.6x slower | 1.3x slower | 1.3x slower | 1.4x slower | 4x slower | 1.3x slower | 1.7x slower | 2.3x slower | |
generator tests | babel | 7x slower | 5x slower | 7x slower | 11x slower | 6x slower | 5x slower | 7x slower | 17x slower | 10x slower | 15x slower | 32x slower | 52x slower | 38x slower | 10x slower | 16x slower | 8x slower |
babel-loose | 6x slower | 4x slower | 7x slower | 13x slower | 5x slower | 4x slower | 7x slower | 17x slower | 10x slower | 13x slower | 31x slower | 53x slower | 54x slower | 11x slower | 16x slower | 8x slower | |
babel-runtime | 6x slower | 5x slower | 7x slower | 14x slower | 6x slower | 4x slower | 7x slower | 17x slower | 9x slower | 14x slower | 31x slower | 52x slower | 45x slower | 11x slower | 16x slower | 8x slower | |
typescript | 7x slower | 8x slower | 11x slower | 6x slower | 7x slower | 14x slower | 37x slower | 81x slower | 43x slower | 18x slower | 14x slower | ||||||
es6 | 6x slower | 1.3x slower | 1.5x slower | 3x slower | 7x slower | 1.3x slower | 1.5x slower | 5x slower | 11x slower | 20x slower | 42x slower | 43x slower | 24x slower | 19x slower | 5x slower | 5x slower | |
map-set tests | babel | 5x slower | 3x slower | 2.4x slower | 2.6x slower | 4x slower | 3x slower | 2.8x slower | 2.5x slower | 13x slower | 12x slower | 17x slower | 12x slower | 24x slower | 2.7x slower | 2.5x 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.4x slower | 2.6x slower | 4x slower | 4x slower | 2.8x slower | 2.5x slower | 14x slower | 11x slower | 17x slower | 12x slower | 22x slower | 2.6x slower | 2.5x slower | 8x slower | |
es6 | 5x slower | 2.9x slower | 2.4x slower | 2.6x slower | 4x slower | 4x slower | 2.8x slower | 2.5x slower | 13x slower | 11x slower | 17x slower | 12x slower | 23x slower | 2.6x slower | 2.5x slower | 8x slower | |
map-set-lookup tests | babel | 9x faster | 64x faster | 73x faster | 71x faster | 8x faster | 47x faster | 75x faster | 30x faster | 36x faster | 14x faster | 9x faster | 13x faster | 60x faster | 130x faster | 91x 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 | 74x faster | 70x faster | 8x faster | 50x faster | 76x faster | 30x faster | 36x faster | 12x faster | 8x faster | 13x faster | 79x faster | 111x faster | 90x faster | 60x faster | |
es6 | 9x faster | 68x faster | 75x faster | 70x faster | 8x faster | 50x faster | 76x faster | 30x faster | 35x faster | 14x faster | 9x faster | 13x faster | 77x faster | 118x faster | 91x faster | 60x faster | |
map-set-object tests | babel | 8x slower | 6x slower | 4x slower | 3x slower | 8x slower | 6x slower | 5x slower | 4x slower | 5x slower | 3x slower | 6x slower | 3x slower | 45x slower | 4x slower | 5x 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 | 4x slower | 3x slower | 8x slower | 6x slower | 5x slower | 4x slower | 5x slower | 2.9x slower | 5x slower | 3x slower | 45x slower | 4x slower | 5x slower | 6x slower | |
es6 | 8x slower | 6x slower | 4x slower | 3x slower | 8x slower | 6x slower | 5x slower | 4x slower | 5x slower | 3.0x slower | 5x slower | 3x slower | 45x slower | 4x slower | 5x slower | 6x slower | |
map-string tests | babel | 2.4x slower | Identical | 1.7x slower | 20x slower | 1.8x slower | 1.4x slower | 25x slower | 20x slower | 59x slower | 56x slower | 63x slower | Identical | 11x slower | 6x slower | 18x 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 | 1.7x slower | 19x slower | 1.8x slower | 1.4x slower | 25x slower | 20x slower | 59x slower | 53x slower | 62x slower | Identical | 11x slower | 7x slower | 18x slower | 1.5x faster | |
es6 | 2.4x slower | Identical | 1.7x slower | 19x slower | 1.7x slower | 1.4x slower | 25x slower | 20x slower | 59x slower | 53x slower | 62x slower | Identical | 11x slower | 7x slower | 18x slower | 1.5x faster | |
new-target tests | babel | 4x faster | 9x faster | 1.3x faster | 7x faster | 12x faster | 4x faster | 3x faster | 4x slower | 4x slower | 1.2x slower | 3x faster | |||||
babel-loose | 4x faster | 9x faster | 1.3x faster | 7x faster | 12x faster | 4x faster | 3x faster | 4x slower | 4x slower | 1.2x slower | 3x faster | ||||||
babel-runtime | 4x faster | 9x faster | 1.3x faster | 7x faster | 12x faster | 3x faster | 2.8x faster | 4x slower | 4x slower | 1.3x slower | 3x faster | ||||||
typescript | Identical | Identical | 1.7x slower | Identical | 1.6x faster | 1.2x slower | Identical | 3x slower | 3x slower | Identical | 1.2x slower | ||||||
es6 | 1.9x slower | 4x faster | 9x faster | 1.6x slower | 2.7x slower | 7x faster | 12x faster | 4x faster | 25x faster | 4x faster | 7x faster | 5x faster | 1.3x faster | Identical | 3x faster | 56x faster | |
object-assign tests | babel | 5x slower | 1.7x faster | 1.8x faster | 1.7x faster | 4x slower | 1.9x faster | 1.6x faster | 1.7x faster | 1.5x slower | 1.6x slower | 1.4x slower | Identical | 1.6x faster | 4x faster | 1.7x 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 | 1.7x faster | 1.8x faster | 4x slower | 1.8x faster | 1.9x faster | 1.8x faster | 1.5x slower | 2.0x slower | 1.3x slower | Identical | 1.8x faster | 4x faster | 1.7x faster | 2.1x slower | |
es6 | 5x slower | 1.8x faster | 1.7x faster | 1.8x faster | 4x slower | 1.8x faster | 1.9x faster | 1.8x faster | 1.5x slower | 1.8x slower | 1.3x slower | Identical | 1.6x faster | 4x faster | 1.7x faster | 2.1x slower | |
object-literal-ext tests | babel | 4x slower | 2.4x slower | 2.7x slower | 3x slower | 4x slower | 2.6x slower | 1.6x slower | 3x slower | 3.0x slower | 1.5x slower | 1.3x slower | Identical | 1.5x slower | 1.6x slower | 3x slower | 1.4x slower |
babel-loose | Identical | Identical | Identical | Identical | Identical | Identical | 1.6x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
babel-runtime | 4x slower | 2.5x slower | 3x slower | 3x slower | 4x slower | 2.3x slower | 1.6x slower | 3x slower | 3.0x slower | 1.3x slower | 1.4x slower | Identical | 1.5x slower | 1.4x slower | 3x slower | 1.4x slower | |
typescript | Identical | Identical | 1.3x slower | Identical | Identical | Identical | 1.7x faster | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | |
es6 | 9x slower | 5x slower | 7x slower | 7x slower | 9x slower | 4x slower | 3x slower | 5x slower | 12x slower | 1.2x slower | Identical | Identical | Identical | 1.3x slower | 5x slower | 2.7x slower | |
regex-u tests | babel | 1.6x slower | 2.2x slower | 6x slower | 4x slower | 1.7x slower | 5x slower | 7x slower | 4x slower | 1.2x slower | 1.7x slower | 1.8x slower | 1.3x slower | 2.6x slower | 5x slower | 4x slower | 1.6x slower |
typescript | 1.5x slower | 1.8x slower | 1.8x slower | 1.5x slower | 1.4x slower | 1.7x slower | 1.9x slower | 1.6x slower | 1.2x slower | 1.7x slower | 2.0x slower | 1.4x slower | 1.8x slower | 2.9x slower | 1.7x slower | 2.4x slower | |
es6 | 1.4x slower | 1.9x slower | 1.8x slower | 1.6x slower | 1.4x slower | 1.6x slower | 1.8x slower | 1.6x slower | 1.2x slower | 1.9x slower | 2.1x slower | 1.3x slower | 2.5x slower | 3x slower | 1.7x slower | 2.4x slower | |
rest tests | babel | 6x faster | 5x slower | Identical | 14x faster | 6x faster | 1.2x faster | Identical | Identical | 1558x faster | 594x faster | 766x faster | Identical | Identical | Identical | Identical | 23x slower |
typescript | 1.2x faster | 39x slower | 68x slower | 2.5x slower | 1.2x faster | 5x slower | 55x slower | 30x slower | 14x faster | 53x faster | 40x faster | 25x slower | 40x faster | 17x faster | 31x slower | 41x slower | |
es6 | 1.2x faster | Identical | Identical | 6x faster | 1.3x faster | 1.3x faster | Identical | Identical | 17x faster | 34x faster | 26x faster | 8x slower | 14x faster | 7x faster | Identical | 33x slower | |
spread tests | babel | Identical | 1.4x slower | 1.4x slower | Identical | Identical | 1.4x slower | 1.4x slower | 1.4x slower | Identical | Identical | Identical | Identical | Identical | Identical | 1.5x slower | Identical |
typescript | Identical | 16x slower | 15x slower | 1.3x faster | Identical | 11x slower | 18x slower | Identical | Identical | 6x slower | 8x slower | Identical | Identical | 14x slower | Identical | Identical | |
es6 | 20x slower | Identical | Identical | Identical | 22x slower | 1.2x faster | Identical | Identical | 5x slower | 1.4x slower | 1.6x slower | 1.5x slower | 1.7x slower | 6x slower | Identical | 5x slower | |
spread-generator tests | babel | 19x slower | 10x slower | 12x slower | 17x slower | 29x slower | 9x slower | 13x slower | 19x slower | 7x slower | 5x slower | 6x slower | 21x slower | 14x slower | 17x slower | 16x slower | 6x slower |
babel-loose | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | Incorrect | |
babel-runtime | 27x slower | 10x slower | 12x slower | 17x slower | 31x slower | 9x slower | 13x slower | 18x slower | 5x slower | 5x slower | 5x slower | 21x slower | 14x slower | 18x slower | 16x slower | 6x slower | |
typescript | 8x slower | 9x slower | 9x slower | 7x slower | 11x slower | 10x slower | 13x slower | 16x slower | 27x slower | 18x slower | 10x slower | ||||||
es6 | 8x slower | 2.7x slower | 4x slower | 6x slower | 8x slower | 2.6x slower | 4x slower | 7x slower | 5x slower | 5x slower | 6x slower | 15x slower | 9x slower | 15x slower | 7x slower | 4x slower | |
spread-literal tests | babel | 5x slower | 7x slower | 5x slower | 7x slower | 2.8x slower | 6x slower | 10x slower | 8x slower | Identical | 1.7x faster | 1.6x faster | 1.6x slower | 1.2x slower | 1.4x slower | 8x slower | Identical |
typescript | 5x slower | 18x slower | 16x slower | 8x slower | 2.8x slower | 19x slower | 32x slower | 10x slower | Identical | 6x slower | 7x slower | 2.6x slower | 1.2x slower | 11x slower | 10x slower | Identical | |
es6 | 8x slower | 1.2x slower | Identical | 1.2x slower | 9x slower | Identical | 1.3x slower | 1.3x slower | 5x slower | 1.2x faster | Identical | 1.6x slower | 2.2x slower | 2.9x slower | 1.3x slower | 1.8x faster | |
super tests | babel | 13x slower | 106x slower | 44x slower | 916x slower | 12x slower | 194x slower | 47x slower | 2068x slower | 27x slower | 44x slower | 76x slower | 5x slower | 23x slower | 14x slower | 1892x slower | 34x slower |
babel-loose | 3.0x slower | Identical | Identical | Identical | 1.8x slower | Identical | Identical | Identical | 8x slower | 4x slower | 33x slower | Identical | 5x slower | 1.2x slower | Identical | 3x slower | |
babel-runtime | 14x slower | 86x slower | 94x slower | 964x slower | 11x slower | 145x slower | 91x slower | 2306x slower | 27x slower | 48x slower | 116x slower | 25x slower | 24x slower | 16x slower | 2118x slower | 33x slower | |
typescript | Identical | Identical | Identical | 1.2x slower | Identical | Identical | Identical | Identical | Identical | 4x slower | 34x slower | Identical | Identical | 1.2x slower | Identical | 1.8x slower | |
es6 | 4x slower | 54x slower | 117x slower | 1.6x slower | 4x slower | 101x slower | 121x slower | 6x slower | 56x slower | 102x slower | 689x slower | Identical | 1.7x slower | 1.8x slower | 6x slower | 15x slower | |
template string tests | babel | Identical | 88x slower | 146x slower | 66x slower | Identical | 97x slower | 154x slower | 62x slower | Identical | 169x slower | 118x slower | 51x slower | Identical | Identical | 55x slower | Identical |
babel-loose | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | Identical | ||||||
typescript | Identical | Identical | Identical | 59x slower | Identical | Identical | Identical | 93x slower | Identical | Identical | Identical | 50x slower | Identical | Identical | 56x slower | Identical | |
es6 | Identical | Identical | Identical | Identical | 1.2x slower | Identical | Identical | Identical | Identical | Identical | Identical | 11x slower | 1.4x faster | Identical | Identical | 18x slower | |
template string tag tests | babel | 1.4x slower | 2.4x slower | 24x faster | 3x slower | 1.5x slower | 7x slower | 24x faster | 3x slower | 12x faster | Identical | 15x faster | 2.0x slower | 2.1x slower | 1.7x slower | 4x slower | 1.7x slower |
babel-loose | Identical | 1.2x slower | 24x faster | 1.4x slower | Identical | 2.1x slower | 19x faster | 1.6x slower | 12x faster | Identical | 15x faster | 2.0x slower | Identical | Identical | 1.6x slower | Identical | |
babel-runtime | 1.4x slower | 2.3x slower | 24x faster | 3x slower | 1.5x slower | 8x slower | 24x faster | 3x slower | 12x faster | Identical | 15x faster | 2.0x slower | 2.0x slower | 1.7x slower | 4x slower | 1.7x slower | |
typescript | 1.3x slower | 12x slower | 45x slower | 26x slower | 1.3x slower | 31x slower | 45x slower | 21x slower | 74x slower | 255x slower | 20x slower | 165x slower | 1.4x slower | 5x slower | 24x slower | 1.5x slower | |
es6 | 3x slower | 52x faster | 4x slower | 3x slower | 3x slower | 18x faster | 4x slower | 3x slower | 12x faster | Identical | 16x faster | Identical | 2.0x slower | 1.6x slower | 3x slower | 2.1x slower |
Run on 28/09/2022 using babel 7.19.3, babel-runtime 7.19.0 and TypeScript 4.8.4.
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.