スポンサーリンク
スポンサーリンク

.Net Framework におけるスタックとヒープ

C#VB.NETVisual C++Win32API開発方式

スタックとヒープについてザックリ表現すると、スタックで書かれたプログラムはメモリー上に保持され、ヒープで書かれたプログラムはハードディスクに保持される。という違いがあります。

ハードディスクに比べて、メモリーの処理速度は十倍から百倍くらい速いので、ヒープで書かれたプログラムより、スタックで書かれたプログラムは、十倍から百倍くらい速いと言えます。

VCや、VC++で開発していた10年位前は、可能な限りスタックで処理することを、シビアに求められていましたが、.Net Framework が主流になってからは、あまり聞かなくなりました。

しかし、スタックとヒープの概念は、最新版の .Net Framework にも存在しているので、スタックの力を上手く引き出せば、高速なアプリケーションを開発する事ができます。

スタックを使っているかどうかで、「あの人の作るプログラムは速い!」と言われるか、「あいつのプログラムは遅い!」と言われる違いを生みますので、プロフェッショナル・プログラマーを目指す方には、必須の知識だと言えます。

スタックプログラムをC#で記述する場合、定数と共通処理が対象となり、static class(静的クラス)で表現します。
何度も呼ばれる処理を、静的クラスで定義する事で、プログラムのパフォーマンスを改善するのは、プロフェッショナル・プログラマーの定石だと言えます。

C#で例を示しますが、VB.NETでも同様です。

 

1.静的クラスで記述した定数の、具体的なソースを以下に示します。

【定義例】

【使用例】

 

2.静的クラスで記述した共通処理の、具体的なソースを以下に示します。

【定義例】

【使用例】

スタックが静的クラスなのに対して、ヒープは動的クラスで記述します。
動的クラスは、new メソッドでインスタンスを生成しないと、使用できないのが特徴です。
フォームのように、static が宣言されていない class は全て動的クラスです。

動的クラスで記述されたフォームの具体的なソースを以下に示します。

【使用例】

 

コメント

タイトルとURLをコピーしました