std::vector とプレーン配列のパフォーマンス比較
指定されたコードでは、std::vector 実装は、std::vector 実装の動作が大幅に遅いです。プレーンな配列。テストによると、std::vector は単純な配列よりも約 3 ~ 4 倍遅いことがわかりました。
しかし、コードを詳しく調べると、std::vector が 2 回アクセスされていることがわかります。1 回目はサイズ変更のため、もう 1 回目はメンバーのためにです。初期化。シングル パスでベクトル要素を初期化するようにコードを変更することで、
std::vector<Pixel> pixels(dimensions * dimensions, Pixel(255, 0, 0));
std::vector とプレーン配列間のパフォーマンスのギャップは無視できる程度になります。これは、最初のパフォーマンスの違いが主に冗長ベクトル演算によるものであることを示唆しています。
テストで使用された Pixel クラスは、動的メモリ割り当てを採用しておらず、複雑なメンバーの初期化も行っていないことに注意することが重要です。追加のパフォーマンスのオーバーヘッドが発生する可能性があります。より複雑なシナリオでは、パフォーマンス特性が異なる場合があります。
さらに、UseArray() メソッドは Pixel オブジェクトを初期化または破棄しないため、より複雑なオブジェクトでは潜在的な問題が発生する可能性があることを考慮する価値があります。
以上がstd::vector がプレーン配列よりも遅いのはなぜですか? このパフォーマンスのギャップを最小限に抑えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。