C の配列ではなく、C++ で標準ライブラリのベクトルを操作すると、パフォーマンスが低下しますか?
質問する
1199 次
2 に答える
7
いいえ、malloc で取得した動的にサイズ変更された C の「配列」を意味する場合は、ありません (最適化を使用してコンパイルし、インライン化が発生する場合)。
C の固定サイズの配列には、リンク後にアドレスが固定される (グローバルの場合)、またはヒープ上のどこかへのポインターを介して間接的にではなく、スタック上に直接存在するというわずかな利点があります。パフォーマンスの違いはまだないと思います。定数ベース アドレスは可変ベース アドレスよりも高速ではありません。どちらも CPU レジスタにロードされます。
于 2009-09-19T02:36:28.707 に答える
1
唯一の実際の違いは、std::vector を使用したアクセスが単純な関数を経由することです。これらの関数呼び出しがインライン化されるような適切な最適化レベルを使用している限り、それらは同じになります。
于 2009-09-23T15:24:01.423 に答える