Maison > Article > développement back-end > Partage de cas sur l'utilisation de la carte C++ et recherche de tests de performances
Récemment, j'effectue un réglage des performances du service de recommandation. La logique principale de ce service est d'utiliser les données de modèle calculées hors ligne pour noter chaque publicité dans la demande, puis de renvoyer les résultats de tri de ces publicités ici. utilise Les données de la requête sont combinées en diverses clés pour vérifier une grande carte. Ce type de calcul est devenu un goulot d'étranglement majeur en termes de performances. Le code est relativement ancien et utilise boost::unordered_map pour résoudre ce problème. , j'ai trouvé une comparaison entre la bibliothèque tierce et la bibliothèque standard
Voici les résultats des tests sur une machine aws r4.xlarge
(notez que -O2 doit être ajouté lors de la compilation) :
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
On peut voir que les performances de tsl::robin_map peuvent atteindre fondamentalement 10 fois celles de std::unordered_map. Ces performances sont également liées à la version du système d'exploitation et de la bibliothèque. recommandé d'extraire le code et de le tester dans votre propre environnement
Nous avons remplacé le boost::unordered_map d'origine par tsl::robin_map en ligne, et les performances globales ont été multipliées par 5. Bien sûr, il en inclut également. d'autres optimisations. Cette optimisation est un point d'optimisation relativement important
Articles connexes :
Test de recherche et de réglage de requêtes lentes MySQL
Recherche. test de performances de la fonction php
Vidéos associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!