프로그래밍

CMake 설정 별 성능 비교 자동화: 벤치마크 스크립트 예제

slowbyslow 2025. 5. 1. 15:20
반응형

왜 설정 별 벤치마크가 필요할까?

CMake를 사용하는 프로젝트에서 개발을 하다 보면, 다음과 같은 설정을 종종 바꾸게 됩니다.

  • SIMD 명령어를 사용할지 여부
  • 스레드 수를 몇 개로 설정할지
  • 디버그 vs 릴리즈 빌드
  • 특정 기능의 ON/OFF

이런 설정들이 프로그램의 성능에 어떤 영향을 주는지 알고 싶지만, 매번 수동으로 빌드하고 테스트하는 건 꽤 번거로운 작업입니다.

이번 글에서는 CMake 빌드 옵션을 활용해서 다양한 설정 조합을 자동으로 빌드하고, 벤치마크까지 자동 수행하는 방법을 소개합니다.


CMakeLists.txt에서 벤치마크용 옵션 정의 방법

먼저 CMake에서 사용할 옵션을 정의해 줍니다.
CMakeLists.txt에 아래와 같이 작성합니다

option(USE_SIMD "Enable SIMD optimization" ON)
set(THREAD_NUM 8 CACHE STRING "Number of threads")

그리고 코드에서는 해당 옵션을 사용하여 조건문을 구성할 수 있습니다.

#ifdef USE_SIMD
    run_simd_version();
#else
    run_scalar_version();
#endif

run_with_threads(THREAD_NUM);

설정 조합 자동 빌드 + 실행 스크립트 (Bash 예시)

여러 설정을 테스트하려면 조합이 많아지기 때문에, 자동화가 필요합니다.
다음은 Bash 스크립트 예시입니다:

 
#!/bin/bash

for simd in ON OFF; do
  for thread in 4 8 16; do
    build_dir="build_${simd}_${thread}"
    
    cmake -B $build_dir -DUSE_SIMD=$simd -DTHREAD_NUM=$thread
    cmake --build $build_dir
    
    echo "Running benchmark: SIMD=$simd, THREAD_NUM=$thread"
    ./$build_dir/my_benchmark >> result.txt
  done
done

 


실제로 프로젝트를 운영하면서 이렇게 실험을 해보면, 정확한 기준을 가지고 성능 최적화를 논의할 수 있는 장점이 있습니다.

자동화된 벤치마크 환경을 만들어두면, 새로운 기능을 추가하거나 시스템이 바뀌었을 때도 빠르게 영향을 파악할 수 있습니다.

반응형