날짜 카운트에서 요일을 계산하는 `% 7` 연산은 겉보기엔 단순하지만, 실제 기계어 수준에서는 여러 복잡한 연산으로 풀려 성능 저하를 일으킬 수 있습니다. 최근 벤조페(benjoffe.com)에서 발표된 새로운 알고리듬은 이 `% 7` 연산을 기존 구현보다 최대 3배 빠르게 처리하는 방법을 제시하며, 특히 메르센 수(Mersenne number)의 특성을 활용해 나눗셈을 곱셈과 비트 연산으로 대체하는 것이 핵심입니다.
새로운 알고리듬은 7이 `2^3 - 1`이라는 메르센 수라는 점을 이용해 `% 7` 연산을 `% 8`에 가까운 형태로 변환합니다. 이는 나눗셈 대신 고정소수점 역수 곱셈과 비트 추출을 사용하는 방식입니다. 제한된 날짜 범위에서는 단 3개의 연산(곱셈, 덧셈, 시프트)으로 요일을 계산할 수 있으며, 32비트 전체 범위에 대해서도 보정 시프트나 두 번의 곱셈, 또는 곱셈 결과의 상위/하위 비트를 활용하는 여러 변형이 가능합니다. AMD 라이젠 9(Ryzen 9)과 애플 M4 프로(Apple M4 Pro) 벤치마크 결과, 새로운 전체 범위 알고리듬들은 기존 방식 대비 약 0.3~0.5배의 시간으로 실행되어 상당한 성능 향상을 보였습니다. 특히 ARM 프로세서에서는 MADD(곱셈-덧셈)와 시프트 결합 덕분에 매우 간결한 명령열로 컴파일될 수 있습니다.
이러한 최적화 기법은 단순히 요일 계산에만 국한되지 않습니다. 같은 원리를 `% 3`, `% 15`, `% 31`과 같은 다른 메르센 수뿐만 아니라 `% 24`, `% 60`과 같은 시간 계산에도 확장 적용할 수 있습니다. 이는 날짜 라이브러리, 데이터베이스 엔진, 그리고 임베디드 시스템의 시간 계산 등 저수준 최적화가 중요한 분야에서 핵심적인 성능 개선을 가져올 수 있습니다. 특히 1초라도 빠르게 데이터를 처리해야 하는 고성능 컴퓨팅 환경이나 배터리 효율이 중요한 모바일 기기 개발에 기여할 것으로 기대됩니다.