2017-10-21 8 views
-4

に割り当てられたオブジェクトをスタックIは、B/W性能差やC++

sample *s = new sample(); 

サンプルがクラスである
sample s; 

パフォーマンスの違いを知りたいです。

+0

答えは、コンパイラ、プラットフォーム、コンパイラの設定、クラスのサイズ、ヒープ、クラスのコンストラクタである* difference *パーセンテージに依存します。それは一般的に心配する価値がありません。そうであれば、それをテストしなければなりません。 – zzxyz

+3

これらの2行のいずれかがプログラムのパフォーマンスのボトルネックになっている場合は、問題があります。あなたの例には、C++キーワードのように静的なものも含まれていません。 –

+0

@RetiredNinja私はちょうどC + +を学び始めたので、ごめんなさい、質問が理にかなっていなければ。ところで、私は、メモリがコンパイル時とスタックメモリの場所で割り当てられる静的メモリ割り当てについて話していましたが、動的メモリ割り当てではメモリは実行時とヒープメモリ位置に割り当てられます。 2つの違いは? –

答えて

0

違いは、動的割り当てが他のストレージ期間よりも遅いことです。どのくらい:それは依存しています。この違いはまったく無関係である可能性があります(たとえば、コードが使用されておらず、コンパイラーが最適化するのに十分なほどスマートになっている場合や、動的割り振りによってハード・デッドラインを保証できない場合など)。

潜在的なパフォーマンスの違いよりも、ダイナミックアロケーションの大きな問題は、非常に厳密な規則に従わないと、プログラムがメモリをリークしないことや、動作が明確に定義されていることを証明することが非常に難しいことです。