일반적으로 std::Vector가 배열과 유사하게 작동한다고 믿고 있지만, 최근 테스트에서는 이 개념에 도전했습니다. 이 기사에서는 std::벡터와 일반 배열의 성능 차이를 조사하고 근본적인 이유를 밝힐 것입니다.
테스트를 수행하기 위해 대규모 배열을 반복적으로 생성하고 수정하는 벤치마크가 구현되었습니다. 픽셀 객체의 테스트는 std::벡터와 일반 배열을 시뮬레이션하는 원시 포인터라는 두 가지 구현을 사용하여 수행되었습니다.
초기 결과에서는 std::벡터가 일반 배열보다 약 3~4배 느린 등 상당한 성능 차이가 드러났습니다.
UseArray completed in 2.619 seconds UseVector completed in 9.284 seconds UseVectorPushBack completed in 14.669 seconds
이 놀라운 발견은 코드를 면밀히 조사하게 만들었습니다. 명백한 성능 차이는 벡터의 요소를 수정하려면 벡터에 두 번 액세스해야 한다는 사실에서 비롯된다는 사실이 밝혀졌습니다. 한 번은 벡터 크기를 조정하고 다시 한 번 요소를 초기화했습니다.
벡터 구현을 최적화하여 각 요소를 초기화했습니다. 단 한 번만 요소를 사용하여 극적으로 향상된 성능을 얻었습니다.
UseVector completed in 2.216 seconds
이 수정된 성능은 이제 일반 배열의 성능과 비슷합니다. 관찰된 약간의 차이는 기본 데이터 구조와 관련 없는 요인에 기인할 수 있다는 점에 유의하는 것이 중요합니다.
결론적으로 std::벡터는 편리하고 다재다능한 데이터 구조이지만 성능은 요인에 의해 영향을 받을 수 있습니다. 요소가 초기화되고 액세스되는 방식과 같은 것입니다. 성능이 중요한 경우에는 특정 요구 사항을 신중하게 고려하고 일반 배열이나 기타 데이터 구조와 같은 대체 옵션을 탐색하는 것이 현명합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3