C에서 스마트 포인터의 메모리 및 시간 오버헤드
C 11의 std::shared_ptr 및 std::unique_ptr과 같은 스마트 포인터, 자동 메모리 관리를 제공하고 소유권 의미를 단순화합니다. 그러나 일부 개발자는 기존 포인터와 비교하여 스마트 포인터를 사용할 때 잠재적인 성능 영향에 대해 궁금해할 수 있습니다.
메모리 오버헤드:
std::unique_ptr은 다음과 같은 경우에만 메모리 오버헤드를 부과합니다. 중요한 삭제자가 제공됩니다. 그러나 std::shared_ptr은 상대적으로 적은 양이지만 참조 카운터를 위한 추가 메모리가 항상 필요합니다.
시간 오버헤드:
std::unique_ptr은 수행하는 동안 시간 오버헤드를 발생시킵니다. 제공된 삭제자를 복사해야 하거나 포인터가 null로 초기화되어야 하고 소멸 중에 소유한 객체를 파괴해야 하는 경우 생성합니다.
std::shared_ptr은 주로 참조 카운터를 생성하기 위해 생성하는 동안, 소멸하는 동안 시간 오버헤드를 경험합니다. 참조 카운터를 감소시키고 잠재적으로 객체를 파괴하고 할당 중에 참조 카운터를 증가시킵니다. 또한 이러한 증가/감소는 스레드 안전성을 위해 원자적으로 이루어지며 오버헤드에 더욱 기여합니다.
성능에 미치는 영향:
포인터에는 역참조 중에 시간 오버헤드가 있습니다. 이는 일반적으로 포인터에 대해 가장 자주 수행되는 작업입니다.
일반적으로 스마트 포인터와 관련된 오버헤드는 최소화되며 코드 성능에 큰 영향을 미치지 않습니다. 그러나 스마트 포인터의 지속적인 생성 및 소멸로 인해 성능 병목 현상이 발생할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3