<story><title>Performance of ES6 features relative to ES5</title><url>https://kpdecker.github.io/six-speed/?utm_source=ESnextNews.com&amp;utm_medium=Weekly%20Newsletter&amp;utm_campaign=Week%2010</url></story><parent_chain></parent_chain><comment><author>stymaar</author><text>The results given by this benchmark are bothering me because they do not fit with what I&amp;#x27;ve seen in production.
For example, the `for-of-array` is transpiled by babel to something that has 2 nested try&amp;#x2F;catch blocks, and unfortunately, V8 has a nasty deoptimisation when dealing with these, even if no exception is ever thrown.&lt;p&gt;This deopt led to a several orders of magnitude slowdown compare to a simple `for` loop in Google Chrome, forcing use to abandon the `for of` construction.&lt;p&gt;I suspect that the benchmark shown on this page does not expose this kind of behavior because it doesn&amp;#x27;t iterate enough for the JIT to kick in. If it&amp;#x27;s the case, it means that these values reflects only the behavior of the cold, interpreted code, and not the hot one. (which is quite sad for a performance benchmark, because the performance matter only for the former …)</text></comment>
<story><title>Performance of ES6 features relative to ES5</title><url>https://kpdecker.github.io/six-speed/?utm_source=ESnextNews.com&amp;utm_medium=Weekly%20Newsletter&amp;utm_campaign=Week%2010</url></story><parent_chain></parent_chain><comment><author>white-flame</author><text>The thing about JIT languages is that there&amp;#x27;s no such thing as overall speed of a particular operation; you can only sample current speed on current implementations.&lt;p&gt;New features pursue correctness, then as their place in the JITs mature interesting new approaches will change their speed characteristics later.  Things like contrasting the speed of various ways of iterating an array are all semantically equivalent, and as the JIT learns the various semantics they should all theoretically approach similar speeds, even if the newer ones are slower now.</text></comment>