최근에 추천 서비스에 대한 성능 조정을 하고 있습니다. 이 서비스의 주요 논리는 오프라인으로 계산된 모델 데이터를 사용하여 요청의 각 광고에 점수를 매긴 다음 이러한 광고의 정렬 결과를 반환하는 것입니다. 큰 맵을 확인하기 위해 데이터를 다양한 키로 결합하는데, 이런 종류의 계산은 매우 큰 성능 병목 현상이 되었습니다. 코드는 상대적으로 오래되었으며 이 문제를 해결하기 위해 일부는 Boost::unordered_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::unordered_map에 도달할 수 있으며 이 성능은 운영 체제 및 라이브러리 버전과도 관련이 있습니다. tsl::robin_map online.::unordered_map을 사용하면 전반적인 성능이 5배 향상되었습니다. 물론 이 최적화에는 비교적 큰 최적화 지점이 포함되어 있습니다.
관련 기사:
MySQL 느린 쿼리 검색 및 튜닝 테스트PHP 함수 성능 테스트 찾기 C++ 매뉴얼 튜토리얼
위 내용은 C++ 맵 활용 사례 공유 및 성능 테스트 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!