0

2つのバリアントのどちらがより速く動作するか、同じであるか、または比較するのが間違っているという知識はありますか?

Vector test(Vector &vec)
{
 // return modified vector, or write directly to vec,
 // or do not return anything, but access vec anyway
}

Vector test(Vector vec)
{
 // same (but no reference)
}

Direct3D ゲーム用に最適化されたコードを作成するために、おそらくそれを知っている必要があるため、質問しています。

更新: xnamath.h(d3d sdk) の XMVECTOR について話している - 16 バイト、4 浮動小数点数。

4

5 に答える 5

0

時期尚早の最適化は諸悪の根源です。

それは主に時期尚早の最適化です。これもマイクロ最適化です。そのため、Vector型と目的の使用法、コンパイラ、およびその他の多くの要因について、より多くの知識が必要です。

これら 2 つも同じではありません。後者は右辺値を受け入れず、関数によってベクトルを変更できます。const&それらを本当に似たものにするために使用する必要があります。

あなたはそれが D3D アプリだと言いました。その場合 (事前計算を除く)、実際には GPU でベクトルと行列の計算を実行する必要があります。単純なプロファイラーでは役に立ちません。CPU と GPU コードの両方をプロファイリングする必要があります。

@Potatoswatter が気付いたように、これは参照渡しの場合よりも CPU が最適化するタイプです。

于 2013-07-29T22:54:41.530 に答える