black_box — 컴파일러 최적화 막기
black_box — 컴파일러 최적화 막기
black_box는 컴파일러에게 "이 값을 그대로 보존하고, 즉시 사용하거나 버리지 마라"라고 힌트를 주는 함수예요. 주로 벤치마크나 성능 테스트에서 컴파일러가 불필요한 계산을 최적화로 날려버리는 것을 막는 데 사용해요.
출처: Rust 공식 문서
본문
pub const fn black_box<T>(dummy: T) -> T
dummy를 그대로 돌려주지만, 컴파일러는 그 값을 관찰 가능한 부작용이 있는 것처럼 취급해서 제거하지 못해요. 흔히 std::hint::black_box(x) 형태로 인자를 감싸 컴파일러가 상수로 접어버리거나 죽은 코드로 제거하는 걸 방지해요.