과거 윈도우(Windows) 운영체제에 포함되었던 x86 에뮬레이터 개발팀이 매우 비효율적인 코드를 발견하고, 이를 에뮬레이터 수준에서 직접 수정하여 성능을 개선했던 흥미로운 일화가 공개되었습니다. 당시 x86이 아닌 다른 프로세서 기반 시스템에서 x86-32 프로그램을 실행하기 위해 이 에뮬레이터는 바이너리 번역(binary translation) 방식을 사용했는데, 이는 원본 x86 코드를 네이티브 코드로 변환하여 실행하는 방식으로 인터프리터 방식보다 훨씬 뛰어난 성능을 제공했습니다.
문제의 코드는 스택(stack)에 약 64KB의 메모리를 할당하고 초기화하는 부분이었습니다. 일반적으로는 스택 공간을 확보한 뒤 작은 반복문(loop)을 이용해 메모리를 초기화하는 것이 효율적입니다. 하지만 특정 컴파일러가 생성한 코드에서는 이 64KB 초기화를 위해 반복문 대신 65,536개의 개별 '1바이트 쓰기' 명령어를 사용했습니다. 각 명령어가 4바이트라고 가정하면, 64KB의 데이터를 초기화하는 데 무려 256KB에 달하는 코드가 필요했던 것입니다. 이는 데이터 크기보다 코드 크기가 4배나 큰 비정상적인 상황이었습니다.
이러한 극단적인 비효율성에 충격을 받은 에뮬레이터 개발팀은 해당 패턴을 감지하고, 이를 효율적인 반복문 코드로 자동 교체하는 특별한 기능을 에뮬레이터에 추가했습니다. 이 사례는 컴파일러의 '최적화'가 때로는 의도치 않게 시스템 성능을 저해할 수 있으며, 하위 시스템(여기서는 에뮬레이터)이 상위 시스템(컴파일러가 생성한 코드)의 문제를 보완해야 하는 상황이 발생할 수 있음을 보여줍니다. 또한, 소프트웨어 개발 과정에서 코드의 효율성과 자원 사용에 대한 깊은 이해가 얼마나 중요한지 다시 한번 일깨워주는 교훈이기도 합니다.