FastDOOM neden hızlı?
- 2024 kışında, bir IBM PS/1 486-DX2 66Mhz bilgisayarı restore ederken FastDOOM test edildi. Orijinal DOOM 21.5 fps çalışırken FastDOOM 30 fps ile, yani %30 daha hızlı çalıştı.
Tarihsel arka plan
- DOOM, NeXT Workstation üzerinde geliştirildi ve DOS I/O kısmı id Software tarafından yazıldı. 1997'de DMX adlı ses kütüphanesi nedeniyle kaynak kodu yayımlanmadı; bunun yerine Linux sürümü yayımlandı. Daha sonra topluluk, PCDOOM v2 aracılığıyla DOS sürümünü yeniden ortaya çıkardı.
Performans artışının genel resmi
- Victor "Viti95" Nieto, FastDOOM'un performansını artırmak için büyük çaba harcadı. 52 FastDOOM sürümü indirilip performansları karşılaştırılarak iyileştirmeler analiz edildi.
Git arkeolojisi
- Viti95, git üzerinde olağanüstü bir düzen gösterdi; her commit tek bir işi yapıyor ve her sürüm etiketlenmiş durumda. FastDOOM'un git geçmişi 3.042 commit'ten oluşuyor ve her özelliğin benchmark'ı yapılabiliyordu.
FastDOOM v0.1
- Bu sürüm 220 commit içeriyor ve ana optimizasyon, durum çubuğu render'ını azaltarak 2 fps'lik performans artışı sağlamak oldu.
FastDOOM v0.6
- 33 commit içeren bu sürümde, gereksiz render işlemleri atlandı ve oyuncu işaretçisinin dolaylı başvurusunun kaldırılması gibi optimizasyonlar yapıldı.
FastDOOM v0.8
- 282 commit içeren bu sürüm, metin modu render'ına odaklandı ve çeşitli optimizasyonlar yapıldı.
FastDOOM v0.9.2
- 110 commit içeren bu sürümde,
skyflatnum karşılaştırması ve R_DrawColumn için optimizasyonlar yapıldı.
FastDOOM v0.9.7
- 293 commit içeren bu sürümde, x86 ASM değişiklik testleri ve CPU seçimi optimizasyonları gerçekleştirildi.
Mode 13h ve Mode Y
- FastDOOM, farklı CPU'lar ve video veri yolları için optimizasyon yapmaya çalıştı. Mode 13h, veriyi RAM'den VRAM'e kopyalama yaklaşımını kullanırken, Mode Y doğrudan VRAM'e yazıyor. Her modun performansı CPU ve veri yolu hızına göre değişiyor.
Ek optimizasyonlar
- OpenWatcom'un işlemciye özgü bayraklarıyla optimizasyon denenmiş olsa da, 386 sürümü her zaman daha hızlı çalıştı. FastDOOM, daha hızlı kod üretmek için derleyiciyi OpenWatcom v2'den DJGPP(GCC)'ye geçirmeyi hedefliyor.
Genel izlenim
- Victor Nieto'nun olağanüstü çalışması sayesinde FastDOOM, 3.000 optimizasyonla etkileyici performans sergiledi. Mevcut iyileştirmelerden yararlanıp yeni optimizasyonlar ekleyerek büyük ilgi topladı.
1 yorum
Hacker News görüşleri
MPV yaması v0.1'in build 36 sürümü performans artışına büyük katkı sağladı. "Cripy optimizasyonu", durum çubuğu yüzde render'ını değişmediğinde noop'a çevirerek 2fps artış getirdi. İlk başta buna inanmak zordu, ancak yama PCDOOMv2'ye uygulandığında muazzam bir hız artışı doğrulandı
Performansın nasıl evrildiğini anlamak için fastDOOM, PCDOOMv2 ve orijinal DOOM.EXE'nin 52 sürümü indirildi ve tüm sürümlerde
-timedemo demo1çalıştıran bir RUN.BAT oluşturulduGitHub'daki Ken Silverman ile olan ileti dizisi çok faydalı. FastDOOM'un yazarıyla Ken'in 486 register'ları ve clock cycle verimliliğini tartışması etkileyici
"IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168", gençlik yıllarında istenip sahip olunamayan bilgisayardı
FastDOOM'un kendine özgü video modlarından bahsedilmedi
Geçmişte 486DX50, DX2-66'ya tercih edilirdi; 50MHz bus arayüzü 33MHz'den daha iyiydi
Belgede John Carmack'in soyadı yanlışlıkla "Carnmack" olarak yazılmış
"Oyunu ibuprofen alarak oynamak zorundaydım ama fastDOOM'u keşfettim" ifadesi anlaşılmıyor
Okunabilirlik için HTML'e system UI fontları eklenmesi düşünülebilir. Kod blokları yine monospace fontla gösterilir. Monospace font, düz yazı için uygun değildir
"Oyunu ibuprofen alarak oynamak zorundaydım ama fastDOOM'u keşfettim" ifadesinin ne anlama geldiği anlaşılmıyor