10

IKM C# テストを受けました。質問の1つは次のとおりです。

次のうち、C# プログラムのパフォーマンスを向上させるものはどれですか?

  • A. ボクシングを使う
  • B. アンボックスを使用する
  • C. 定数を使用しない
  • D. 空のデストラクタを使用する
  • E. 参照型の代わりに値型を使用する

結局、私は質問をスキップしました。私が見ることができる唯一の可能な答えは E です。状況によっては、値型より良いパフォーマンスを提供する可能性があります (小さな型の場合: 逆参照は必要なく、マネージド ヒープ上ではありません [参照型のメンバーではないことを前提としています] ]) ですが、常にそうであるとは限りません。

4

2 に答える 2

8

答えはおそらく E でしょう。ほとんどの場合、値型を使用するとパフォーマンスが向上します。まず、関数で値型を使用すると、呼び出しが行われる前に割り当てられるスタック領域が作成され、オブジェクト割り当てのオーバーヘッドが回避されます。次に、ヒープ上に値型の配列を作成すると、オブジェクト割り当てのオーバーヘッドが回避され、データのキャッシュ コヒーレントが向上する傾向があります。

値型のコピーでメモリ帯域幅のオーバーヘッドが発生する可能性があることは事実ですが、最近のメモリ帯域幅は非常に大きいため、通常、他の節約によって損失が大きく圧倒されます。さらに、64 ビット以下の型を処理する場合、実質的に損失はありません。

于 2012-08-01T17:06:21.983 に答える