1 poin oleh GN⁺ 2025-03-05 | 1 komentar | Bagikan ke WhatsApp

Mengapa FastDOOM cepat

  • Pada musim dingin 2024, saat merestorasi komputer IBM PS/1 486-DX2 66Mhz, dilakukan pengujian FastDOOM. DOOM asli berjalan pada 21.5 fps, sedangkan FastDOOM berjalan pada 30 fps, sekitar 30% lebih cepat.

Latar belakang historis

  • DOOM dikembangkan di NeXT Workstation, dan DOS I/O ditulis oleh id Software. Pada 1997, karena adanya pustaka suara bernama DMX, source code tidak dirilis; sebagai gantinya, versi Linux yang dirilis. Setelah itu, komunitas memulihkan versi DOS melalui PCDOOM v2.

Gambaran besar peningkatan performa

  • Victor "Viti95" Nieto telah mencurahkan banyak upaya untuk meningkatkan performa FastDOOM. Dengan mengunduh 52 rilis FastDOOM dan membandingkan performanya, peningkatan yang ada dapat dianalisis.

Arkeologi Git

  • Viti95 menunjukkan kemampuan pengelolaan yang luar biasa di git: setiap commit melakukan satu tugas, dan setiap rilis diberi tag. Riwayat git FastDOOM terdiri dari 3.042 commit, sehingga tiap fitur dapat dibenchmark.

FastDOOM v0.1

  • Rilis ini mencakup 220 commit, dan optimisasi utamanya adalah mengurangi rendering status bar, yang menghasilkan peningkatan performa sebesar 2 fps.

FastDOOM v0.6

  • Dalam rilis ini yang mencakup 33 commit, dilakukan optimisasi seperti melewati rendering yang tidak perlu dan menghapus indirect reference pada pointer pemain.

FastDOOM v0.8

  • Rilis ini mencakup 282 commit dan berfokus pada renderer mode teks, dengan berbagai optimisasi yang diterapkan.

FastDOOM v0.9.2

  • Rilis ini mencakup 110 commit, dengan optimisasi pada perbandingan skyflatnum dan pada R_DrawColumn.

FastDOOM v0.9.7

  • Rilis ini mencakup 293 commit, dengan pengujian perubahan x86 ASM dan optimisasi pemilihan CPU.

Mode 13h vs mode Y

  • FastDOOM mencoba berbagai optimisasi agar sesuai dengan beragam CPU dan video bus. Mode 13h menyalin data dari RAM ke VRAM, sedangkan mode Y menulis data langsung ke VRAM. Performa tiap mode berbeda tergantung CPU dan kecepatan bus.

Optimisasi tambahan

  • Optimisasi sempat dicoba menggunakan flag spesifik prosesor dari OpenWatcom, tetapi versi 386 selalu berjalan lebih cepat. FastDOOM berupaya beralih compiler dari OpenWatcom v2 ke DJGPP(GCC) untuk menghasilkan kode yang lebih cepat.

Kesan keseluruhan

  • Berkat pekerjaan luar biasa Victor Nieto, FastDOOM menunjukkan performa yang mengagumkan melalui 3.000 optimisasi. Dengan memanfaatkan peningkatan yang sudah ada dan memperkenalkan optimisasi baru, proyek ini menarik banyak perhatian.

1 komentar

 
GN⁺ 2025-03-05
Komentar Hacker News
  • Build 36 dari patch MPV v0.1 sangat berkontribusi pada peningkatan performa. "Optimisasi Cripy" mengubah rendering persentase bilah status menjadi noop saat tidak ada perubahan, sehingga menghasilkan peningkatan 2fps. Awalnya sulit dipercaya, tetapi setelah patch diterapkan pada PCDOOMv2, peningkatan kecepatan yang sangat besar pun terkonfirmasi

    • Bottleneck bisa muncul di tempat yang tidak terduga, dan untuk menemukannya diperlukan profiling serta pengukuran
    • Struktur Doom mungkin relatif jelas bagi para ahli, tetapi secara umum ini bukan bagian yang mudah diduga akan menjadi bottleneck
  • Untuk memahami evolusi performa, 52 rilis fastDOOM, PCDOOMv2, dan DOOM.EXE asli diunduh, lalu dibuat RUN.BAT yang menjalankan -timedemo demo1 pada semua versi

    • Dengan menggunakan NETDRIVE dari mTCP, diketahui bahwa opsi penyimpanan melalui jaringan ternyata sudah ada sejak dulu
    • NetDrive adalah driver perangkat DOS yang memungkinkan image disk jarak jauh yang di-host di komputer lain diakses seperti perangkat lokal
  • Thread dengan Ken Silverman di GitHub sangat informatif. Kesan yang menonjol adalah saat penulis FastDOOM dan Ken mendiskusikan efisiensi register 486 dan siklus clock

    • Menyenangkan melihat peningkatan performa Doom masih terus berlanjut
  • "IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168" adalah komputer yang saya inginkan saat remaja tetapi tidak pernah bisa saya miliki

    • Pada 1992, saya sedang menggunakan PC rakitan keempat yang saya bangun sendiri
    • Pameran komputer KCS adalah sumber daya yang luar biasa untuk membeli komponen, merakit PC, memakainya, menjualnya, lalu membeli komponen lagi dan mengulangi proses itu
    • Pada akhir 1992, saya menggunakan 486-DX3 100 dan koprosesor matematika ULSI 487
    • Saya bisa mengklaim memiliki PC tercepat di kampus saat itu
    • Saya mengambil jurusan ilmu lingkungan, tetapi karier saya berkaitan dengan komputer
  • Mode video unik fastDOOM tidak disebutkan

    • Mode teks IBM MDA
    • EGA & Plantronics ColorPlus
    • CGA biru & merah muda klasik
    • CGA, 320x200x16 hack 'ANSI from Hell'
    • Hercules
    • Sebagian besar performanya lebih rendah daripada VGA
  • Dulu saya mungkin akan lebih memilih 486DX50 daripada DX2-66. Antarmuka bus 50MHz lebih baik daripada 33MHz

  • Di dokumen tersebut, nama belakang John Carmack salah ditulis sebagai "Carnmack"

  • Saya tidak memahami ungkapan "harus minum ibuprofen untuk bermain game, tetapi kemudian mengetahui fastDOOM"

  • Demi keterbacaan, bisa dipertimbangkan menambahkan font UI sistem ke HTML. Blok kode tetap akan ditampilkan dengan font monospace. Font monospace tidak cocok untuk prosa

  • Saya tidak mengerti makna ungkapan "harus minum ibuprofen untuk bermain game, tetapi kemudian mengetahui fastDOOM"