Ich würde diese Mikro-Optimierung nicht als Nano-Optimierung bezeichnen.
Fälle sind so ähnlich, werden Sie wahrscheinlich ein gewisses Maß Präzision unter dem Gewinn können Sie erwarten ...
(Edit)
Wenn dieser Code optimiert ist, die erzeugte Assembler-Code ändern wird gerade von JATO JAE haben werden (in (x86), und sie verwenden die gleiche Zykluszahl. 0,0000% -Veränderung.
Wenn dies nicht der Fall, könnten Sie einen Schritt in einem select
des Motors gewinnen ...
die ärgerliche Sache, dass es sein lässt Sie das größere Bild vermissen: Wenn ich nicht falsch liege, brauchen Sie hier einen Zweig, und wenn Sie sich Sorgen um die Zeit machen, beeinflusst die statistische Verteilung Ihrer Eingabe WAY mehr die Ausführung pünktlich. (Aber immer noch nicht so viel ...)
So einen Schritt zu Fuß zurück und vergleichen:
if (i<2)
return 0;
else
return 1;
und:
if (i>=2)
return 1;
else
return 0;
Sie sehen, dass für (100, 20, 10, 1 , 50, 10) (1) wird mehr verzweigen und für (0, 1, 0, 0, 20, 1), (2) mehr verzweigen.
Das wird viel mehr Unterschied machen ... das könnte auch sehr schwer zu messen sein !!!
(Als eine Frage, die dem Leser überlassen wird, frage ich mich, wie return +(i>1)
kompiliert, und wenn es einen Trick gibt, um Verzweigung zu vermeiden ...)
(übrigens gegen ich bin nicht früh Optimierung, ich gepostet sogar einige Ratschläge hier, wenn es Sie interessieren könnten: https://gamealchemist.wordpress.com/2016/04/15/writing-efficient-javascript-a-few-tips/)
Es gibt höchstwahrscheinlich keinen Unterschied, aber Sie können sich mit https://jsperf.com überprüfen – andlrc
JSPerf ist seit fast einem Jahr ausgefallen. In meinen Tests scheint es, als ob der größere als schneller ist, aber es neigt dazu, zu schwanken, also bin ich mir nicht ganz sicher. –
Sie sollten einen Testfall mit einigen Ihrer Zahlen einschließen, und stellen Sie klar, dass Ihre Frage nicht so sehr ist, ob einer schneller ist als der andere, aber * warum * es schneller ist. – TankorSmash