2016-12-06 3 views
0

スタックとヒープ変数へのアクセス速度については多くのトピックがありますが、静的変数とヒープ変数のアクセス速度に関する質問と適切な答えは見つかりませんでした。静的メモリとヒープメモリへのアクセス速度

オブジェクトの有効期間がプログラムの有効期間と同じ場合は、どのようなアクセス速度を選択する必要がありますか?どちらが速いですか?静的に割り当てられたオブジェクトまたはオブジェクトをヒープ内で使用していますか?

私は関連性があるならば、C++について話しています。

+1

最新のオペレーティングシステムでは、違いはありません。 –

答えて

2

違いはありません。絶対に。あなたのプログラムがロードされると、CPUはそれが扱っているメモリの種類(ヒープまたは静的)を単に知ることができません。

上記は、最も一般的なCPUアーキテクチャ/実装の95%に当てはまります。いくつかのコンピュータは、異なる速度で動作する異なるメモリ領域を持つことがあります。この場合、これをチェックする必要があります。このメモリがどのようにマップされているか - これは設計に依存します。

静的領域が大きいコンパイラ/環境プログラムによっては、ロードが多少遅くなることがあります。しかし、これは絶対的なルールではありません。

あなたのデータのローカル性(あなたのデータが互いに接近しているかどうか)と、どの値がCPUキャッシュから他の値を引き出すのかを考える方が良いでしょう。キャッシュに何かをロードすると、既にキャッシュにあるものにアクセスするよりも10〜100倍遅くなります。これは非常に顕著な違いになります。

+0

答えをいただきありがとうございます。データのローカリティとプログラムのアーキテクチャは問題の範囲外です。私はちょうど静的/ヒープメモリの実際のアクセス時間についての良い情報を見つけることができず、それについてコミュニティに尋ねました。 – avtomaton

関連する問題