Note that this is comparing whatever Babel does with destructuring to the native implementation, in the same engine.<p>This means two things:<p>1)  Comparing these numbers across engines is pointless: if engine A runs the Babel code 5x faster than engine B but runs the native code at the same sped as enging B, this table will show engine A with a 5x bigger slowdown over Babel than engine B.<p>2)  To make the comparison at all reasonable, this assumes the Babel implementation is correct per spec.<p>I can&#x27;t speak to what Babel is doing here, but simply looking at the tests in <a href="https:&#x2F;&#x2F;github.com&#x2F;kpdecker&#x2F;six-speed&#x2F;tree&#x2F;master&#x2F;tests&#x2F;destructuring" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kpdecker&#x2F;six-speed&#x2F;tree&#x2F;master&#x2F;tests&#x2F;dest...</a> it&#x27;s clear that the &quot;es5&quot; version and &quot;es6&quot; version are testing different behaviors: the former indexes into the array, while the latter destructures it.  Indexing is fundamentally a O(1) operation in array length, while destructuring is O(N) unless you manage to prove quite a lot statically about your operating environment, and they will produce different results in general (though again, if you can prove enough statically about your operating environment you may be able to prove that they are identical).  This happens because in ES2015 array destructuring is defined in terms of array iteration, not indexing.<p>In practice, proving anything statically about JS is a nightmare at best and impossible in pretty much any case of interest, so the best you can do with destructuring is dynamic sanity checks on the hot path...<p>See also <a href="https:&#x2F;&#x2F;bugzilla.mozilla.org&#x2F;show_bug.cgi?id=1177319" rel="nofollow">https:&#x2F;&#x2F;bugzilla.mozilla.org&#x2F;show_bug.cgi?id=1177319</a> for some more info, though not much.