C++ shared_ptr의 비원자적 참조 카운팅: 마이크로 벤치마킹에서의 예상치 못한 발견
2025-08-31
Rust와 C++ 데이터 구조를 비교하는 마이크로 벤치마킹에서 C++의 `shared_ptr`에 예상치 못한 동작이 발견되었습니다. 단일 스레드 환경에서 GNU libstdc++는 `pthread_create`가 임포트되지 않은 경우 `shared_ptr`의 참조 카운팅을 비원자적으로 최적화합니다. 이 성능 최적화는 일반적으로 안전하지만, 동적으로 링크된 라이브러리가 정적으로 링크된 프로그램에 의해 로드되는 등의 드문 시나리오에서는 문제를 일으킬 수 있습니다. 저자는 다른 C++ 구현(libcxx 및 Visual C++)을 조사했고, 마침내 벤치마킹에서 `pthread_create`를 참조함으로써 성능 차이를 해결했습니다. 이 발견은 저수준 최적화의 복잡성과 잠재적인 의도하지 않은 결과를 강조합니다.
더 보기
개발