1 Punkte von GN⁺ 2025-03-05 | 1 Kommentare | Auf WhatsApp teilen

Warum FastDOOM schnell ist

  • Im Winter 2024 wurde beim Restaurieren eines IBM PS/1 486-DX2 66Mhz-Computers FastDOOM getestet. Das ursprüngliche DOOM lief mit 21,5 fps, FastDOOM dagegen mit 30 fps und damit 30 % schneller.

Historischer Hintergrund

  • DOOM wurde auf einer NeXT Workstation entwickelt, und das DOS-I/O wurde von id Software geschrieben. 1997 wurde der Quellcode wegen einer Sound-Bibliothek namens DMX nicht veröffentlicht; stattdessen wurde die Linux-Version freigegeben. Später rekonstruierte die Community die DOS-Version über PCDOOM v2.

Das große Bild der Leistungssteigerung

  • Victor "Viti95" Nieto investierte viel Arbeit in die Leistungssteigerung von FastDOOM. Es wurden 52 FastDOOM-Releases heruntergeladen und in ihrer Performance verglichen, um Verbesserungen zu analysieren.

Git-Archäologie

  • Viti95 zeigte in git hervorragende Pflege und Organisation: Jeder Commit erfüllte genau eine Aufgabe, und jedes Release war mit einem Tag versehen. Die Git-Historie von FastDOOM besteht aus 3.042 Commits, wodurch sich einzelne Funktionen benchmarken ließen.

FastDOOM v0.1

  • Dieses Release enthält 220 Commits; die wichtigste Optimierung reduzierte das Rendering der Statusleiste und brachte einen Leistungsgewinn von 2 fps.

FastDOOM v0.6

  • In diesem Release mit 33 Commits wurden Optimierungen umgesetzt, etwa das Überspringen unnötigen Renderings und das Entfernen indirekter Dereferenzierung des Spieler-Zeigers.

FastDOOM v0.8

  • Dieses Release mit 282 Commits konzentrierte sich auf den Textmodus-Renderer und enthielt verschiedene Optimierungen.

FastDOOM v0.9.2

  • In diesem Release mit 110 Commits wurden eine Optimierung des skyflatnum-Vergleichs und eine Optimierung von R_DrawColumn vorgenommen.

FastDOOM v0.9.7

  • In diesem Release mit 293 Commits wurden Änderungen an x86-ASM getestet und die CPU-Auswahl optimiert.

Modus 13h vs. Modus Y

  • FastDOOM versuchte, für verschiedene CPUs und Video-Busse zu optimieren. Modus 13h kopiert Daten aus dem RAM ins VRAM, während Modus Y Daten direkt ins VRAM schreibt. Die Leistung jedes Modus hängt von CPU- und Bus-Geschwindigkeit ab.

Zusätzliche Optimierungen

  • Es wurden Optimierungen mit prozessorspezifischen Flags von OpenWatcom versucht, doch die 386-Version lief stets schneller. FastDOOM wechselt den Compiler von OpenWatcom v2 zu DJGPP (GCC), um schnelleren Code zu erzeugen.

Gesamteindruck

  • Dank der herausragenden Arbeit von Victor Nieto zeigt FastDOOM mit 3.000 Optimierungen eine bemerkenswerte Leistung. Durch die Nutzung bestehender Verbesserungen und die Einführung neuer Optimierungen erhielt es viel Aufmerksamkeit.

1 Kommentare

 
GN⁺ 2025-03-05
Hacker-News-Kommentare
  • Build 36 des MPV-Patches v0.1 hat erheblich zur Leistungssteigerung beigetragen. Die „Cripy-Optimierung“ wandelte das Rendern der Prozentanzeige in der Statusleiste in ein No-op um, wenn sich nichts geändert hatte, was 2 fps mehr brachte. Anfangs war das kaum zu glauben, aber nach dem Anwenden des Patches auf PCDOOMv2 wurde eine enorme Geschwindigkeitssteigerung bestätigt

    • Ein Engpass kann an unerwarteten Stellen liegen, und um ihn zu finden, sind Profiling und Messungen nötig
    • Die Struktur von Doom mag für Experten relativ klar sein, allgemein ist das aber kein Bereich, in dem man ohne Weiteres einen Engpass vermuten würde
  • Um die Entwicklung der Leistung zu verstehen, wurden 52 Releases von fastDOOM, PCDOOMv2 und dem ursprünglichen DOOM.EXE heruntergeladen und eine RUN.BAT erstellt, die bei allen Versionen -timedemo demo1 ausführt

    • Durch die Verwendung von NETDRIVE aus mTCP wurde klar, dass es schon damals Speicheroptionen über das Netzwerk gab
    • NetDrive ist ein DOS-Gerätetreiber, der den Zugriff auf ein auf einem anderen Computer gehostetes Remote-Disk-Image wie auf ein lokales Gerät ermöglicht
  • Der Thread auf GitHub mit Ken Silverman ist sehr aufschlussreich. Eindrucksvoll ist, wie der fastDOOM-Autor und Ken über die Effizienz von 486-Registern und Taktzyklen diskutieren

    • Es ist erfreulich, dass die Leistungsverbesserungen bei Doom weiter vorangetrieben werden
  • Der „IBM PS/1 486-DX2 66Mhz, „Mini-Tower“, Modell 2168“ war der Computer, den man sich als Teenager gewünscht hatte, aber nicht besitzen konnte

    • 1992 nutzte man den vierten selbst zusammengebauten PC
    • Die KCS Computer Show war eine großartige Quelle, um Teile zu kaufen, einen PC zusammenzubauen, ihn nach der Nutzung zu verkaufen und dann wieder Teile zu kaufen
    • Ende 1992 nutzte man einen 486-DX3 100 und einen ULSI-487-Mathe-Koprozessor
    • Man konnte behaupten, den schnellsten PC auf dem Campus zu haben
    • Das Hauptfach war Umweltwissenschaften, aber die Karriere hängt mit Computern zusammen
  • Die einzigartigen Videomodi von fastDOOM wurden nicht erwähnt

    • IBM-MDA-Textmodus
    • EGA & Plantronics ColorPlus
    • klassisches blaues und pinkes CGA
    • CGA, 320x200x16, Hack „ANSI from Hell“
    • Hercules
    • die meisten sind langsamer als VGA
  • Früher hätte man einen 486DX50 einem DX2-66 vorgezogen. Das 50-MHz-Bus-Interface war besser als 33 MHz

  • In dem Dokument wurde John Carmacks Nachname fälschlich als „Carnmack“ geschrieben

  • Die Formulierung „Ich musste Ibuprofen nehmen, um das Spiel zu spielen, aber dann lernte ich fastDOOM kennen“ ist nicht verständlich

  • Für eine bessere Lesbarkeit könnte man erwägen, in HTML System-UI-Schriftarten hinzuzufügen. Code-Blöcke würden weiterhin in einer nichtproportionalen Schrift angezeigt. Nichtproportionale Schriften eignen sich nicht für Fließtext

  • Ich verstehe die Bedeutung der Formulierung „Ich musste Ibuprofen nehmen, um das Spiel zu spielen, aber dann lernte ich fastDOOM kennen“ nicht