0

私はC++プログラマーで、頭をC#に巻き付けようとしていて、気になることがあります。配列を宣言するには、New演算子を使用する必要がありますか?しかし、それはガベージコレクターを巻き込むのではないでしょうか?

仮に、その関数内で使用するためだけに配列を作成する関数があり、それがフレームごとに数千回呼び出されていた場合、New演算子へのこれらの呼び出しはすべて、ガベージコレクターに大きなオーバーヘッドをもたらすのではないでしょうか。

C ++では、これらはスタック上で宣言された配列であり、関数が終了するとすぐにスコープから外れ、パフォーマンスのオーバーヘッドは最小限に抑えられますが、C#では、この場合、ガベージコレクターがどれだけのパフォーマンスを発揮するかが心配です。

だから私はこれを正しい方法で考えていますか?ガベージコレクターはここに関係していますか?それは問題を引き起こしますか?これを行うためのより良い「C#の方法」はありますか?

4

1 に答える 1

0

基本的に、ガベージコレクターについて心配する必要はありません。ガベージコレクターは、それが何をしているのかを知っており、非常に優れています。

画像を処理している場合は、問題が発生する可能性があります...ただし、これを回避することはできます。たとえば、stackallochttp://msdn.microsoft.com/en-us/library/cx9s2sy4.aspxを使用できます

ただし、コードを「安全でない」に設定する必要があることを意味します。

int* frameData;
frameData = stackalloc int[200];
于 2012-06-26T02:49:42.210 に答える