ホームページ > バックエンド開発 > C#.Net チュートリアル > C++ マップの使用とパフォーマンス テストの検索に関するケースの共有

C++ マップの使用とパフォーマンス テストの検索に関するケースの共有

php是最好的语言
リリース: 2018-08-02 10:36:17
オリジナル
2334 人が閲覧しました

最近、レコメンデーション サービスのパフォーマンス チューニングを行っています。このサービスの主なロジックは、オフラインで計算されたモデル データを使用して、リクエスト内の各広告をスコアリングし、これらの広告の並べ替え結果を返すことです。ここでのスコアリング プロセスは実際にはリクエスト内のデータは、大きなマップをチェックするためにさまざまなキーに結合されます。この種の計算は非常に多く、主要なパフォーマンスのボトルネックになっています。コードは比較的古く、boost::unowned_map を使用します。この問題を解決するには、 、サードパーティのライブラリと標準ライブラリの比較

以下は、aws r4.xlarge マシンでのテスト結果です (コンパイル時に -O2 を追加する必要があることに注意してください) :

std::map<int, int>                                 => 51866903
std::unordered_map<int, int>                       => 3838175
std::unordered_map<int, int, nohashint>            => 3508570
std::unordered_map<int, int>(N)                    => 3804471
boost::unordered_map<int, int>                     => 3291384
boost::unordered_map<int, int, nohashint>          => 3293934
boost::unordered_map<int, int>(N)                  => 3265856
google::dense_hash_map<int, int>                   => 785969
google::dense_hash_map<int, int, nohashint>        => 784455
google::dense_hash_map<int, int>(N)                => 899262
tsl::hopscotch_map<int, int>                       => 654668
tsl::hopscotch_map<int, int, nohashint>            => 680964
tsl::hopscotch_map<int, int>(N)                    => 663607
tsl::robin_map<int, int>                           => 406176
tsl::robin_map<int, int, nohashint>                => 411358
tsl::robin_map<int, int>(N)                        => 409993
ログイン後にコピー

tsl::robin_map のパフォーマンスは、基本的に std::unowned_map の 10 倍に達することがわかります。このパフォーマンスは、オペレーティング システムとライブラリのバージョンにも関係します。実際の運用環境では、コードをプルダウンして独自の環境で実行することをお勧めします。次にテストしてみましょう

元の boost::unowned_map をオンラインの tsl::robin_map に置き換えたところ、全体的なパフォーマンスが 5 倍向上しました。もちろん、他の最適化も含まれています。この最適化は比較的大規模です。最適化のポイント

関連記事:

MySQL の低速クエリ検索とチューニング テスト

php 関数検索パフォーマンス テスト

関連ビデオ:

C マニュアル チュートリアル

以上がC++ マップの使用とパフォーマンス テストの検索に関するケースの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート