원래 결론에 대한 오해
처음에는 결함이 있는 벤치마크 std::array 반복이 std::Vector 반복보다 빠르다고 제안했습니다. 그러나 벤치마크를 수정한 결과 std::Vector가 훨씬 더 빠른 것으로 나타났습니다.
벤치마크 구현
정확성을 보장하기 위해 벤치마크에서는 몇 가지 개선 사항을 적용했습니다.
결과 및 설명
벤치마크 결과에 따르면 std::Vector 반복은 약 30밀리초 만에 완료되는 반면 std::array 반복은 약 99밀리초가 소요되는 것으로 나타났습니다.
이러한 차이는 메모리 페이지 동작에서 비롯됩니다. 벤치마크에서 std::array는 실행 파일의 .bss 섹션(0 초기화 포함)에 있었기 때문에 해당 메모리 페이지가 프로세스 주소 공간에 로드되지 않았습니다. 반대로, std::Vector가 할당되고 0으로 채워져 페이지가 존재하게 되었습니다.
해결책
std::array의 페이지를 0으로 사전 오류 설정 -Linux에서 mlock()을 채우거나 사용하면 페이지가 주소 공간으로 이동하여 반복 속도가 std::Vector의 속도와 동일해집니다.
위 내용은 초기 벤치마크에서 다르게 제안되었음에도 불구하고 std::벡터 반복이 std::array 반복보다 빠른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!