FastDOOM तेज़ क्यों है
- 2024 की सर्दियों में, IBM PS/1 486-DX2 66Mhz कंप्यूटर को restore करते समय FastDOOM का परीक्षण किया गया। मूल DOOM 21.5 fps पर चलता था, जबकि FastDOOM 30 fps पर चला, यानी लगभग 30% अधिक तेज़।
ऐतिहासिक पृष्ठभूमि
- DOOM को NeXT Workstation पर विकसित किया गया था, और DOS I/O को id Software ने लिखा था। 1997 में DMX नाम की sound library के कारण source जारी नहीं किया गया, उसकी जगह Linux version जारी किया गया। बाद में community ने PCDOOM v2 के जरिए DOS version को restore किया।
प्रदर्शन सुधार की बड़ी तस्वीर
- Victor "Viti95" Nieto ने FastDOOM के performance सुधार के लिए बहुत मेहनत की। 52 FastDOOM releases डाउनलोड करके और उनके performance की तुलना करके सुधारों का विश्लेषण किया गया।
Git पुरातत्व
- Viti95 ने git में शानदार प्रबंधन क्षमता दिखाई; हर commit एक ही काम करता था और हर release को tag किया गया था। FastDOOM का git history 3,042 commits से बना है, जिससे हर feature को benchmark किया जा सका।
FastDOOM v0.1
- इस release में 220 commits शामिल थे, और मुख्य optimization status bar की rendering घटाना था, जिससे 2 fps का performance gain मिला।
FastDOOM v0.6
- 33 commits वाली इस release में अनावश्यक rendering को skip करना, player pointer की indirect dereference हटाना जैसी optimizations की गईं।
FastDOOM v0.8
- 282 commits वाली इस release में text mode renderer पर फोकस किया गया, और कई optimizations की गईं।
FastDOOM v0.9.2
- 110 commits वाली इस release में
skyflatnum comparison optimization और R_DrawColumn optimization की गई।
FastDOOM v0.9.7
- 293 commits वाली इस release में x86 ASM changes की testing और CPU selection optimization की गई।
Mode 13h बनाम Mode Y
- FastDOOM ने अलग-अलग CPU और video bus के अनुसार optimization करने की कोशिश की। Mode 13h RAM से VRAM में data copy करता है, जबकि Mode Y सीधे VRAM में data लिखता है। हर mode का performance CPU और bus speed के अनुसार बदलता है।
अतिरिक्त optimization
- OpenWatcom के processor-specific flags का उपयोग करके optimization की कोशिश की गई, लेकिन 386 version हमेशा ज़्यादा तेज़ चला। FastDOOM तेज़ code generation के लिए compiler को OpenWatcom v2 से DJGPP(GCC) पर switch करने की कोशिश कर रहा है।
समग्र प्रभाव
- Victor Nieto के बेहतरीन काम की बदौलत FastDOOM ने 3,000 optimizations के जरिए शानदार performance दिखाया। इसने पुराने improvements का लाभ उठाते हुए नए optimizations जोड़े, और इसी वजह से इसने काफी ध्यान आकर्षित किया।
1 टिप्पणियां
Hacker News की राय
MPV patch v0.1 का build 36 performance improvement में बहुत बड़ा योगदान था। "Cripy optimization" ने status bar percent rendering को, जब वह बदला नहीं था, noop में बदल दिया, जिससे 2fps का सुधार मिला। शुरू में इस पर भरोसा करना मुश्किल था, लेकिन PCDOOMv2 पर patch लागू करके बहुत बड़ा speedup पुष्टि हुआ
performance evolution को समझने के लिए fastDOOM, PCDOOMv2, और मूल DOOM.EXE के 52 releases डाउनलोड किए गए, और सभी versions पर -timedemo demo1 चलाने वाला RUN.BAT बनाया गया
GitHub पर Ken Silverman के साथ thread बहुत उपयोगी है। FastDOOM के author और Ken के बीच 486 registers और clock cycle efficiency पर हुई चर्चा प्रभावशाली है
"IBM PS/1 486-DX2 66Mhz, "Mini-Tower", model 2168" वह computer था जिसे किशोरावस्था में चाहता था लेकिन पा नहीं सका
FastDOOM के अनोखे video modes का ज़िक्र नहीं किया गया
अतीत में शायद 486DX50 को DX2-66 पर तरजीह देता। 50MHz bus interface, 33MHz से बेहतर था
दस्तावेज़ में John Carmack का surname गलती से "Carnmack" लिखा गया है
"Ibuprofen लेकर game खेलना पड़ता था, लेकिन फिर fastDOOM के बारे में पता चला" इस अभिव्यक्ति का मतलब समझ नहीं आया
readability के लिए HTML में system UI font जोड़ने पर विचार किया जा सकता है। code blocks तब भी monospace font में दिखेंगे। monospace font prose के लिए उपयुक्त नहीं है
"Ibuprofen लेकर game खेलना पड़ता था, लेकिन फिर fastDOOM के बारे में पता चला" इस अभिव्यक्ति का अर्थ समझ में नहीं आता