1 puan yazan GN⁺ 2025-03-05 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2025-03-05
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ı

    • Darboğazlar beklenmedik yerlerde olabilir; bunları bulmak için profilleme ve ölçüm gerekir
    • Doom'un yapısı uzmanlar için nispeten açık olabilir, ancak genel olarak bunun bir darboğaz olacağını tahmin etmek zordur
  • 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şturuldu

    • mTCP'nin NETDRIVE'ı kullanılarak, ağ üzerinden depolama seçeneğinin geçmişte de var olduğu görüldü
    • NetDrive, başka bir bilgisayarda barındırılan uzak disk imajlarına yerel aygıt gibi erişmeyi sağlayan bir DOS aygıt sürücüsüdür
  • GitHub'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

    • Doom performansının hâlâ iyileştirilmeye devam etmesi sevindirici
  • "IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168", gençlik yıllarında istenip sahip olunamayan bilgisayardı

    • 1992'de kendi topladığı dördüncü PC'yi kullanıyordu
    • KCS Computer Show, parça satın alıp PC toplayarak kullanıp satma ve sonra tekrar parça alma döngüsünü sürdürmek için harika bir kaynaktı
    • 1992'nin sonunda 486-DX3 100 ve ULSI 487 matematik yardımcı işlemcisi kullanıyordu
    • O dönemde kampüsteki en hızlı PC'ye sahip olduğunu iddia edebilirdi
    • Çevre bilimi okumuş olsa da kariyeri bilgisayarlarla ilgili oldu
  • FastDOOM'un kendine özgü video modlarından bahsedilmedi

    • IBM MDA metin modu
    • EGA & Plantronics ColorPlus
    • klasik mavi ve pembe CGA
    • CGA, 320x200x16 'ANSI from Hell' hack'i
    • Hercules
    • çoğu VGA'dan daha düşük performanslı
  • 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