There is an article Optimization killers in wiki of Bluebird library. In this article there is a phrase:
Currently not optimizable:
...
F
Yes, that seems to be exactly what it means. I had the following code (irrelevant additional lines removed):
function updatePlayer(player) {
let direction = player.getDirection();
if (player.isPressingLeft()) {
direction += angleChange;
}
if (player.isPressingRight()) {
direction -= angleChange;
}
player.setDirection(direction);
}
updatePlayer
generated a warning, Not optimized: Unsupported let compound assignment, in Chrome's Profiles tab, so instead of l += r
I tried l = l + r
and got a significant, consistent performance improvement.
jsPerf shows that let compound assignments are indeed extremely slow in Chrome 49.0.2623, compared to l = l + r
or var
! I guess this will be fixed in a future version, since neither Firefox nor IE11 nor Edge is affected, and since Google apparently know about the issue.