There is an article Optimization killers in wiki of Bluebird library. In this article there is a phrase:
Currently not optimizable:
...
Functions that contain a compound let assignment
Functions that contain a compound const assignment
What does compound let assignment and compound const assignment mean? In ECMAScript 5.1 there was notion of compound assignment but in ECMAScript 2015, it seems there is no notion of any compound assignment there is only regular assignments.
I suspect that compound let and const assignment, it is just compound assignment after declaration. For example:
let n = 1;
n += 4;
Am I right?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With