피드로 돌아가기
How I Used Bit Manipulation to Speed Up Float-to-Int Conversion in a Storage Engine
Dev.toDev.to
Database

Bit Manipulation을 통한 Float-to-Int Overflow 체크 가속화 및 압축률 최적화

How I Used Bit Manipulation to Speed Up Float-to-Int Conversion in a Storage Engine

Yu Qian Yang2026년 4월 15일7advanced

Context

Columnar Time-series Database에서 IEEE 754 Float 표현식의 특성으로 인해 Delta-of-Delta 및 Simple8b와 같은 고효율 정수 압축 알고리즘 적용이 불가한 한계 존재. 기존의 std::isnan 및 범위 비교 방식의 Overflow 체크는 Floating-point 연산 부하로 인해 Hot Path의 병목 지점으로 작용.

Technical Solution

  • Float 데이터를 정수형으로 재해석하여 Exponent 비트만 추출하는 Bit Manipulation 방식 도입
  • IEEE 754 표준의 Bias 값을 뺀 Real Exponent를 산출하여 정수 타입의 비트 너비와 직접 비교하는 로직 설계
  • E ≤ N - 2 (N은 정수 비트 수) 공식을 통해 부호 비트와 암시적 leading 1을 고려한 Overflow 판별 구조 구현
  • Floating-point Unit(FPU) 사용을 배제하고 정수 레지스터만 사용하여 연산 비용 최소화
  • Scaling factor 적용 후 Overflow 체크를 통과한 값만 정수 압축 파이프라인으로 라우팅하는 게이트웨이 구조 채택
  • 최종적으로 Float → Integer Cast → Delta+ZigZag → Simple8b로 이어지는 Chained Encoding 파이프라인 완성

- Hot Path 내 Floating-point 연산 발생 시 Bit Reinterpretation을 통한 정수 연산 대체 가능성 검토 - 데이터 특성상 정수형 패턴이 반복되는 Float 컬럼에 대해 Scaling-based Integer Conversion 적용 고려 - IEEE 754 표준의 Exponent 구조를 활용한 빠른 범위 체크 로직 도입으로 CPU 사이클 절감

원문 읽기