>  기사  >  백엔드 개발  >  C++ 맵 활용 사례 공유 및 성능 테스트 찾기

C++ 맵 활용 사례 공유 및 성능 테스트 찾기

php是最好的语言
php是最好的语言원래의
2018-08-02 10:36:172320검색

최근에 추천 서비스에 대한 성능 조정을 하고 있습니다. 이 서비스의 주요 논리는 오프라인으로 계산된 모델 데이터를 사용하여 요청의 각 광고에 점수를 매긴 다음 이러한 광고의 정렬 결과를 반환하는 것입니다. 큰 맵을 확인하기 위해 데이터를 다양한 키로 결합하는데, 이런 종류의 계산은 매우 큰 성능 병목 현상이 되었습니다. 코드는 상대적으로 오래되었으며 이 문제를 해결하기 위해 일부는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.