제약 조건 활용을 통한 성능 향상: C++에서 짝수 계산 최적화

2025-03-09

본 문서는 C++에서 uint8_t 배열 내의 짝수 개수를 세는 성능을 최적화하는 방법을 다룹니다. `std::count_if`와 사용자 정의 계산 함수 두 가지 방법을 비교하여 짝수 값의 개수가 0에서 255 사이라는 제약 조건을 활용하는 사용자 정의 함수가 성능을 크게 향상시켜 테스트에서 최대 9.5배의 속도 향상을 달성할 수 있음을 보여줍니다. 본 문서에서는 두 가지 방법으로 생성된 어셈블리 코드를 분석하여 성능 차이를 설명하고 특정 GCC 버전에서의 벡터화 문제도 언급합니다.

더 보기

Clang 최적화 회귀: C++ 벤치마크에서 인라인 함수의 역효과

2025-02-19

C++ 벤치마크에서 Clang의 인라인 함수 최적화의 성능 저하가 발견되었습니다. `increment` 함수를 인라인으로 처리하면 분기 예측 실패로 인해 인라인 처리되지 않은 버전보다 약 5배 느려졌습니다. `perf stat`을 통해 분기 예측 오류가 원인임을 확인했습니다. 흥미롭게도 Zig 툴체인으로 컴파일하면 성능이 크게 향상되어 Clang 19의 버그를 시사합니다. 이 문제는 Clang/LLVM 저장소에 보고되었으며, 초기 조사 결과 SROA와 SimplifyCFG 최적화 패스 간의 절충이 원인일 가능성이 제기되었습니다.

더 보기
개발