Heim  >  Artikel  >  Backend-Entwicklung  >  Fallbericht zur Verwendung von C++ Map und zum Finden von Leistungstests

Fallbericht zur Verwendung von C++ Map und zum Finden von Leistungstests

php是最好的语言
php是最好的语言Original
2018-08-02 10:36:172311Durchsuche

Vor kurzem führe ich eine Leistungsoptimierung für den Empfehlungsdienst durch. Die Hauptlogik dieses Dienstes besteht darin, offline berechnete Modelldaten zu verwenden, um jede Anzeige in der Anfrage zu bewerten und dann die Sortierergebnisse dieser Anzeigen zurückzugeben Verwendet die Daten in der Anfrage, um eine große Karte zu überprüfen. Der Code ist relativ alt und verwendet boost::unordered_map, um dieses Problem zu lösen , ich habe einige gefunden Vergleich der Drittanbieterbibliothek und der Standardbibliothek

Das Folgende sind die Testergebnisse auf einer AWS r4.xlarge Maschine (beachten Sie, dass -O2 beim Kompilieren hinzugefügt werden muss):

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

Sie können sehen, dass die Leistung von tsl::robin_map grundsätzlich das Zehnfache der Leistung von std::unordered_map erreichen kann. Diese Leistung hängt auch vom Betriebssystem und der Bibliotheksversion ab Code und testen Sie es in Ihrer eigenen Umgebung

Wir haben die ursprüngliche boost::unordered_map online durch tsl::robin_map ersetzt und die Gesamtleistung ist natürlich auch mit einigen anderen Optimierungen verbunden gilt als relativ großer Optimierungspunkt

Verwandte Artikel:

MySQL-Such- und Optimierungstest für langsame Abfragen

Lookup-Leistungstest der PHP-Funktion

Ähnliche Videos:

C++-Handbuch-Tutorial

Das obige ist der detaillierte Inhalt vonFallbericht zur Verwendung von C++ Map und zum Finden von Leistungstests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn