0

配列内の 2 つの KeyValuePair オブジェクトを交換するための現在のスワップ コードを次に示します。

KeyValuePair<int, T> t = a[i];
            a[i] = a[j];
            a[j] = t;

安全でないコードを使用し、2 つのオブジェクトのポインターを交換するだけで、速度の利点はありますか? それとも、コンパイラはこの安全なコードを効果的に煮詰めて、それを効果的に行うのでしょうか?

4

2 に答える 2

4

いいえ、これ以上速くなりません。

これは、最悪の場合、時期尚早のマイクロ最適化です。

実際には、配列へのポインターを取得するために(fixedキーワードを使用して) 配列を固定する必要があるため、桁違いに遅くなります。

于 2010-10-17T19:15:34.253 に答える
0

最適化ごとに .Net ポインター用のスペースがあります。あなたの特定のケースではあまりありませんが、循環冗長性チェックのようなものは、ポインターがより最適なソリューションを提供してくれます。

于 2012-04-19T17:38:27.260 に答える