あなたはこのような方法がある場合:変数に複数のクラス呼び出しを格納する方が速いのですか?
float method(myClass foo)
{
return foo.PrivateVar() + foo.PrivateVar();
}
が、代わりに、これを行うために/常に速いほうがよい?:
float method(myClass foo)
{
float temp = foo.PrivateVar();
return temp + temp;
}
を、私はあなたがfoo.PrivateVar()
のようなコールを置くことになっていない知っていますたとえば、forループでは、実際に値を1回だけ使用する必要がある場合、何度も評価するためです(場合によっては
for (int i = 0; i < foo.PrivateInt(); i++)
{
//iterate through stuff with 'i'
}
これより最初の例のようなコードを2番目の例に変更することを前提にしていますが、コンパイラよりも賢くならないように人々に言われました!そしてそれは通話を非常によくインラインにすることができます。
私は何もプロファイルしたくありません。これについては、いくつかの簡単なルールが必要です。私は仕事のアプリケーションのデモを書いています。誰かがコードを見てルーキーミスをすることを望んでいません。
この関数には副作用がないと想定できますか?さもなければ、これは無意味な比較です。 –
どちらかの方法で不平を言う人がいるでしょう。魔法の弾丸はありません。例えば* I *は 'for'ループ最適化を*習慣*にしないことをお勧めします。なぜなら、' PrivateInt() 'によって返された値がループのコース。 IMOの "正しい"ことは、正確で読みやすいコードを書く方法を学び、いつどのように最適化するかを個別に学ぶことです。 – Hurkyl