Por qué FastDOOM es rápido
- En el invierno de 2024, mientras restauraba una IBM PS/1 486-DX2 de 66Mhz, terminé probando FastDOOM. El DOOM original corría a 21.5 fps, pero FastDOOM lo hacía a 30 fps, un 30% más rápido.
Contexto histórico
- DOOM fue desarrollado en una NeXT Workstation, y el I/O para DOS fue escrito por id Software. En 1997, el código fuente no se publicó por culpa de una biblioteca de sonido llamada DMX, y en su lugar se liberó la versión para Linux. Después, la comunidad restauró la versión para DOS a través de PCDOOM v2.
Panorama general de la mejora de rendimiento
- Victor "Viti95" Nieto dedicó mucho esfuerzo a mejorar el rendimiento de FastDOOM. Se descargaron 52 lanzamientos de FastDOOM y se comparó su desempeño para analizar qué mejoras se habían introducido.
Arqueología de Git
- Viti95 mostró una capacidad de organización sobresaliente en git: cada commit realizaba una sola tarea y cada lanzamiento estaba etiquetado. El historial de git de FastDOOM está compuesto por 3,042 commits, lo que permitió hacer benchmarks de cada funcionalidad.
FastDOOM v0.1
- Esta versión incluye 220 commits, y la optimización principal consistió en reducir el renderizado de la barra de estado, lo que aportó una mejora de 2 fps.
FastDOOM v0.6
- En esta versión, que incluye 33 commits, se aplicaron optimizaciones como omitir renderizado innecesario y eliminar la indirección del puntero del jugador.
FastDOOM v0.8
- Esta versión, con 282 commits, se enfocó en el renderer en modo texto e incluyó varias optimizaciones.
FastDOOM v0.9.2
- Esta versión, con 110 commits, introdujo optimizaciones en la comparación de
skyflatnum y en R_DrawColumn.
FastDOOM v0.9.7
- Esta versión, con 293 commits, incluyó pruebas de cambios en ASM x86 y optimizaciones de selección de CPU.
Modo 13h vs modo Y
- FastDOOM intentó optimizarse para distintos CPU y buses de video. El modo 13h copia datos de RAM a VRAM, mientras que el modo Y escribe los datos directamente en VRAM. El rendimiento de cada modo varía según la velocidad del CPU y del bus.
Optimizaciones adicionales
- Se intentó optimizar usando flags específicos de procesador de OpenWatcom, pero la versión para 386 siempre corría más rápido. FastDOOM busca cambiar el compilador de OpenWatcom v2 a DJGPP (GCC) para generar código más rápido.
Impresión general
- Gracias al extraordinario trabajo de Victor Nieto, FastDOOM mostró un rendimiento sorprendente a través de 3,000 optimizaciones. Aprovechó mejoras ya existentes e introdujo nuevas optimizaciones, lo que le ganó mucha atención.
1 comentarios
Comentarios en Hacker News
El build 36 del parche MPV v0.1 contribuyó enormemente a mejorar el rendimiento. La "optimización Cripy" convirtió el renderizado del porcentaje de la barra de estado en un noop cuando no había cambios, lo que aportó una mejora de 2 fps. Al principio parecía difícil de creer, pero al aplicar el parche a PCDOOMv2 se confirmó una mejora de velocidad enorme
Para entender la evolución del rendimiento, se descargaron 52 lanzamientos de fastDOOM, PCDOOMv2 y el DOOM.EXE original, y se creó un RUN.BAT que ejecuta
-timedemo demo1en todas las versionesEl hilo con Ken Silverman en GitHub es muy informativo. Resulta impresionante ver al autor de FastDOOM y a Ken discutir la eficiencia de los registros del 486 y los ciclos de reloj
La "IBM PS/1 486-DX2 66Mhz, "Mini-Tower", modelo 2168" era una computadora que quise en mi adolescencia pero nunca pude tener
No se mencionaron los modos de video únicos de FastDOOM
En el pasado habría preferido un 486DX50 antes que un DX2-66. La interfaz de bus de 50 MHz era mejor que la de 33 MHz
En el documento, el apellido de John Carmack aparece mal escrito como "Carnmack"
No se entiende la frase "Tenía que tomar ibuprofeno para poder jugar, pero descubrí fastDOOM"
Para mejorar la legibilidad, podría considerarse agregar una fuente de system UI al HTML. Los bloques de código seguirían mostrándose con una fuente monoespaciada. Las fuentes monoespaciadas no son adecuadas para la prosa
No entiendo el significado de la frase "Tenía que tomar ibuprofeno para poder jugar, pero descubrí fastDOOM"