stl のサイズの落とし穴

高洛峰
リリース: 2016-11-22 15:12:39
オリジナル
1427 人が閲覧しました

私が昨年入社したとき、会社の基本ライブラリにはLRUCacheがあり、内部の実装はstd::listを使っていました。ただし、std::list を計算する関数は、stl の size() メソッドを直接使用します。その結果、ストレステスト中、パフォーマンスはここで行き詰まりました。
今日、同僚が基本ライブラリで別のキュー実装を発見しました。これも要素数を取得するときに std::list メソッドが使用されていました。
残念ながら、同社の基本ライブラリはヘッダーファイルのみを公開しており、このピットが他の場所に存在するかどうかを一つ一つ確認することは不可能です。

stl の size() メソッドの実装を見てみましょう:

size_type    
  size() const
      { return std::distance(begin(), end()); }
ログイン後にコピー

上記のコードの g++ バージョンは 4.2.1 です

明らかに、複雑さは O(N) です。リストに多くの要素がある場合、計算は非常に遅くなります。 したがって、std::list を使用するときは、自分でカウントを維持することを忘れないでください。


関連ラベル:
stl
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!