fastDOOM의 속도가 빠른 이유

1 week ago 4

왜 FastDOOM이 빠른가

  • 2024년 겨울, IBM PS/1 486-DX2 66Mhz 컴퓨터를 복원하며 FastDOOM을 테스트하게 되었음. 원래 DOOM은 21.5 fps였으나 FastDOOM은 30 fps로 30% 더 빠르게 실행되었음.

역사적 배경

  • DOOM은 NeXT Workstation에서 개발되었으며, DOS I/O는 id Software에서 작성되었음. 1997년에는 DMX라는 사운드 라이브러리 때문에 소스가 공개되지 않았고, 대신 Linux 버전이 공개되었음. 이후 커뮤니티는 PCDOOM v2를 통해 DOS 버전을 복원했음.

성능 향상의 큰 그림

  • Victor "Viti95" Nieto는 FastDOOM의 성능 향상을 위해 많은 노력을 기울였음. 52개의 FastDOOM 릴리스를 다운로드하고 성능을 비교하여 개선점을 분석했음.

Git 고고학

  • Viti95는 git에서 뛰어난 관리 능력을 보여주었으며, 각 커밋이 하나의 작업을 수행하고 각 릴리스가 태그되어 있었음. FastDOOM의 git 기록은 3,042개의 커밋으로 구성되어 있으며, 각 기능을 벤치마크할 수 있었음.

FastDOOM v0.1

  • 이 릴리스는 220개의 커밋을 포함하고 있으며, 주요 최적화는 상태 표시줄의 렌더링을 줄여 2 fps의 성능 향상을 가져왔음.

FastDOOM v0.6

  • 33개의 커밋이 포함된 이 릴리스에서는 불필요한 렌더링을 건너뛰고, 플레이어 포인터의 간접 참조를 제거하는 등의 최적화가 이루어졌음.

FastDOOM v0.8

  • 282개의 커밋이 포함된 이 릴리스에서는 텍스트 모드 렌더러에 초점을 맞추었으며, 여러 최적화가 이루어졌음.

FastDOOM v0.9.2

  • 110개의 커밋이 포함된 이 릴리스에서는 skyflatnum 비교 최적화와 R_DrawColumn 최적화가 이루어졌음.

FastDOOM v0.9.7

  • 293개의 커밋이 포함된 이 릴리스에서는 x86 ASM 변경 테스트와 CPU 선택 최적화가 이루어졌음.

모드 13h 대 모드 Y

  • FastDOOM은 다양한 CPU와 비디오 버스에 맞게 최적화를 시도했음. 모드 13h는 RAM에서 VRAM으로 데이터를 복사하는 방식이며, 모드 Y는 VRAM에서 직접 데이터를 쓰는 방식임. 각 모드는 CPU와 버스 속도에 따라 성능이 달라짐.

추가 최적화

  • OpenWatcom의 프로세서별 플래그를 사용하여 최적화를 시도했으나, 386 버전이 항상 더 빠르게 실행되었음. FastDOOM은 OpenWatcom v2에서 DJGPP(GCC)로 컴파일러를 전환하여 더 빠른 코드를 생성하려고 함.

전반적인 인상

  • Victor Nieto의 뛰어난 작업 덕분에 FastDOOM은 3,000개의 최적화를 통해 놀라운 성능을 보여주었음. 기존의 개선점을 활용하고 새로운 최적화를 도입하여 많은 주목을 받았음.

Read Entire Article