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
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
Untuk memahami evolusi performa, 52 rilis fastDOOM, PCDOOMv2, dan DOOM.EXE asli diunduh, lalu dibuat RUN.BAT yang menjalankan
-timedemo demo1pada semua versiThread dengan Ken Silverman di GitHub sangat informatif. Kesan yang menonjol adalah saat penulis FastDOOM dan Ken mendiskusikan efisiensi register 486 dan siklus clock
"IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168" adalah komputer yang saya inginkan saat remaja tetapi tidak pernah bisa saya miliki
Mode video unik fastDOOM tidak disebutkan
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"