私はこのマイクロ最適化ではなく、ナノ最適化と呼んでいます。
ケースが...あなたが最も可能性の高いあなたが期待することができ、利得以下の測定精度を持っていますので、似ている
このコードが最適化されている場合は、生成されたアセンブリコードはちょうど(JATO JAEから変更されます
(編集) (x86の)中で、彼らは同じサイクル数を使用しています。0,0000%の変化を。そうでない場合は
、あなたは迷惑なものはそれということで
エンジンのselect
内の一歩を...勝つかもしれません私が間違っていない限り、あなたはここに支店が必要です。そして、あなたが時間を心配しているなら、あなたの入力の統計的分布はより多くのエグゼクティブに影響を与えます定刻。 (まだないというくらい...)
だから、バックステップを歩くと比較:
if (i<2)
return 0;
else
return 1;
と:
if (i>=2)
return 1;
else
return 0;
あなたは(100、20、10のためのことがわかり、1 、50、10)(1)は(0,1,0,0,20,1)に対してより分岐し、(2)はより分岐します。
それはずっと多くの違いをもたらすでしょう...それは測定するのが非常に難しいかもしれません!
(私は読者に残された質問として、どのようにreturn +(i>1)
がコンパイルされているのだろうと思っています。また、分岐を避けるためのトリックがあれば...)
それはあなたが興味可能性がある場合(私は早期に最適化反対ではないよちなみに、私も、ここにいくつかのアドバイスを掲載:https://gamealchemist.wordpress.com/2016/04/15/writing-efficient-javascript-a-few-tips/)
違いはほとんどありませんが、https://jsperf.comでご確認いただけます。 – andlrc
JSPerfはほぼ1年間ダウンしています。私のテストでは、それ以上のスピードは速いものの、それは変動する傾向があるので、私は完全にはわかりません。 –
テストケースをいくつかの数字に含めて、質問が他のものよりも速いのかどうかということではなく、*なぜ*高速であるのかを明確にする必要があります。 – TankorSmash