11

マネージコードの方がネイティブコードよりもメモリ割り当てが速いかどうかは明らかだと思いましたが、いくつかの論争があるようです。おそらく、OSへのコンテキスト交換呼び出しがないため、仮想マシンでのメモリ管理は高速ですが、VM自体がOSを定期的に呼び出してメモリを増やす必要があり、メモリ自体の管理オーバーヘッドがあります。 OSではなく。

私のように根拠のない主張をするのではなく、あなたの立場を裏付ける参考文献へのリンクを提供してください。

4

2 に答える 2

6

http://msdn.microsoft.com/en-us/library/ms973852.aspxをお読みください

.NETでのメモリ割り当ての仕組みについて詳しく説明し、C++モデルと簡単に比較します。

要約すると、.NETでのメモリ割り当てには、現在のスタックポイントをオブジェクトのアドレスとして取得し、オブジェクトのデータサイズをスタックポインタに追加することが含まれます。比較すると、C ++は、解放されたポインタのリストを検索して、オブジェクトに十分な大きさのヒープの領域を探す必要があります。したがって、ほとんどの場合、.NETの方が高速です。

于 2008-10-06T10:12:44.813 に答える
1

WintellectのJeffRichterに耳を傾けてください、彼はこの主題の権威です:

http://www.dotnetrocks.com/default.aspx?showNum=361

于 2008-10-06T10:08:41.123 に答える