1 คะแนน โดย GN⁺ 2025-03-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ทำไม FastDOOM ถึงเร็ว

  • ในฤดูหนาวปี 2024 มีการบูรณะคอมพิวเตอร์ IBM PS/1 486-DX2 66Mhz และได้ทดสอบ FastDOOM โดย DOOM รุ่นดั้งเดิมทำได้ 21.5 fps แต่ FastDOOM ทำได้ 30 fps ซึ่งรันได้เร็วขึ้น 30%

ภูมิหลังทางประวัติศาสตร์

  • DOOM ถูกพัฒนาบน NeXT Workstation และ DOS I/O ถูกเขียนโดย id Software ในปี 1997 ซอร์สโค้ดไม่ได้ถูกเปิดเผยเพราะมีไลบรารีเสียงชื่อ DMX จึงมีการเปิดเผยเวอร์ชัน Linux แทน หลังจากนั้นชุมชนได้กู้คืนเวอร์ชัน DOS ผ่าน PCDOOM v2

ภาพรวมของการเพิ่มประสิทธิภาพ

  • Victor "Viti95" Nieto ทุ่มเทอย่างมากเพื่อเพิ่มประสิทธิภาพของ FastDOOM มีการดาวน์โหลด FastDOOM ทั้ง 52 รีลีสและเปรียบเทียบประสิทธิภาพเพื่อวิเคราะห์จุดที่ปรับปรุงได้

โบราณคดี Git

  • Viti95 แสดงให้เห็นถึงความสามารถยอดเยี่ยมในการจัดการ git โดยแต่ละคอมมิตทำงานเพียงอย่างเดียวและแต่ละรีลีสมีการติดแท็กไว้ ประวัติ git ของ FastDOOM ประกอบด้วยคอมมิต 3,042 รายการ ทำให้สามารถเบนช์มาร์กแต่ละฟีเจอร์ได้

FastDOOM v0.1

  • รีลีสนี้มี 220 คอมมิต และการปรับให้เหมาะสมหลักคือการลดการเรนเดอร์แถบสถานะ ซึ่งเพิ่มประสิทธิภาพได้ 2 fps

FastDOOM v0.6

  • รีลีสนี้มี 33 คอมมิต และมีการปรับให้เหมาะสม เช่น ข้ามการเรนเดอร์ที่ไม่จำเป็น และลบการอ้างอิงทางอ้อมของพอยน์เตอร์ผู้เล่น

FastDOOM v0.8

  • รีลีสนี้มี 282 คอมมิต โดยมุ่งเน้นที่ตัวเรนเดอร์โหมดข้อความ และมีการปรับให้เหมาะสมหลายจุด

FastDOOM v0.9.2

  • รีลีสนี้มี 110 คอมมิต และมีการปรับให้เหมาะสมในการเปรียบเทียบ skyflatnum และการปรับ R_DrawColumn

FastDOOM v0.9.7

  • รีลีสนี้มี 293 คอมมิต และมีการทดสอบการเปลี่ยนแปลง x86 ASM กับการปรับให้เหมาะสมด้านการเลือก CPU

โหมด 13h เทียบกับโหมด Y

  • FastDOOM พยายามปรับให้เหมาะกับ CPU และบัสวิดีโอหลากหลายแบบ โหมด 13h เป็นวิธีคัดลอกข้อมูลจาก RAM ไปยัง VRAM ส่วนโหมด Y เป็นวิธีเขียนข้อมูลลง VRAM โดยตรง แต่ละโหมดให้ประสิทธิภาพต่างกันตามความเร็วของ CPU และบัส

การปรับแต่งเพิ่มเติม

  • มีความพยายามใช้แฟล็กเฉพาะโปรเซสเซอร์ของ OpenWatcom เพื่อปรับแต่ง แต่เวอร์ชัน 386 กลับทำงานได้เร็วกว่าเสมอ FastDOOM จึงพยายามเปลี่ยนคอมไพเลอร์จาก OpenWatcom v2 ไปเป็น DJGPP(GCC) เพื่อสร้างโค้ดที่เร็วกว่า

ความประทับใจโดยรวม

  • ด้วยผลงานอันยอดเยี่ยมของ Victor Nieto ทำให้ FastDOOM แสดงประสิทธิภาพน่าทึ่งผ่านการปรับแต่งกว่า 3,000 จุด ทั้งการใช้ประโยชน์จากแนวทางปรับปรุงเดิมและการนำการปรับแต่งใหม่มาใช้ จนได้รับความสนใจอย่างมาก

1 ความคิดเห็น

 
GN⁺ 2025-03-05
ความคิดเห็นจาก Hacker News
  • บิลด์ 36 ของแพตช์ MPV v0.1 มีส่วนช่วยเพิ่มประสิทธิภาพอย่างมาก “การปรับแต่ง Cripy” เปลี่ยนการเรนเดอร์เปอร์เซ็นต์ในแถบสถานะให้เป็น noop เมื่อไม่มีการเปลี่ยนแปลง ทำให้เพิ่มขึ้น 2fps ตอนแรกฟังดูไม่น่าเชื่อ แต่เมื่อลองใช้แพตช์กับ PCDOOMv2 ก็ยืนยันได้ว่าความเร็วเพิ่มขึ้นอย่างมาก

    • คอขวดอาจอยู่ในจุดที่ไม่คาดคิด และจำเป็นต้องมีการโปรไฟล์และการวัดเพื่อค้นหามัน
    • โครงสร้างของ Doom อาจค่อนข้างชัดเจนสำหรับผู้เชี่ยวชาญ แต่โดยทั่วไปแล้วเป็นจุดที่เดาได้ยากว่าจะเป็นคอขวด
  • เพื่อทำความเข้าใจวิวัฒนาการของประสิทธิภาพ ได้ดาวน์โหลด fastDOOM, PCDOOMv2 และ DOOM.EXE ต้นฉบับรวม 52 รีลีส แล้วสร้าง RUN.BAT ที่รัน -timedemo demo1 ในทุกเวอร์ชัน

    • ทำให้ได้รู้ว่าตัวเลือกการบันทึกผ่านเครือข่ายก็มีอยู่ในอดีตแล้ว โดยใช้ NETDRIVE ของ mTCP
    • NetDrive เป็นไดรเวอร์อุปกรณ์ DOS ที่ทำให้เข้าถึงอิมเมจดิสก์ระยะไกลที่โฮสต์บนคอมพิวเตอร์อีกเครื่องได้เหมือนเป็นอุปกรณ์ภายในเครื่อง
  • เธรดกับ Ken Silverman บน GitHub มีประโยชน์มาก น่าประทับใจกับการที่ผู้เขียน FastDOOM และ Ken พูดคุยกันเรื่องประสิทธิภาพของรีจิสเตอร์ 486 และ clock cycle

    • ดีใจที่ยังมีการปรับปรุงประสิทธิภาพของ Doom อย่างต่อเนื่อง
  • “IBM PS/1 486-DX2 66Mhz, "Mini-Tower", รุ่น 2168” คือคอมพิวเตอร์ที่เคยอยากได้มากในวัยรุ่นแต่ไม่มีโอกาสได้ครอบครอง

    • ในปี 1992 กำลังใช้พีซีที่ประกอบเองเป็นเครื่องที่สี่
    • งานแสดงคอมพิวเตอร์ KCS เป็นแหล่งที่ยอดเยี่ยมสำหรับซื้อชิ้นส่วน ประกอบพีซี ใช้งานแล้วขายต่อ แล้วกลับไปซื้อชิ้นส่วนอีกครั้งวนซ้ำได้
    • ช่วงปลายปี 1992 ใช้ 486-DX3 100 และโคโปรเซสเซอร์คณิตศาสตร์ ULSI 487
    • ตอนนั้นอาจอ้างได้ว่ามีพีซีที่เร็วที่สุดในมหาวิทยาลัย
    • แม้จะเรียนเอกวิทยาศาสตร์สิ่งแวดล้อม แต่เส้นทางอาชีพเกี่ยวข้องกับคอมพิวเตอร์
  • ยังไม่ได้พูดถึงโหมดวิดีโออันเป็นเอกลักษณ์ของ FastDOOM

    • โหมดข้อความ IBM MDA
    • EGA และ Plantronics ColorPlus
    • CGA สีน้ำเงินและชมพูแบบคลาสสิก
    • แฮ็ก CGA, 320x200x16 แบบ ‘ANSI from Hell’
    • Hercules
    • ส่วนใหญ่ประสิทธิภาพแย่กว่า VGA
  • ในอดีตน่าจะชอบ 486DX50 มากกว่า DX2-66 เพราะบัสอินเทอร์เฟซ 50MHz ดีกว่า 33MHz

  • ในเอกสารสะกดนามสกุลของ John Carmack ผิดเป็น “Carnmack”

  • ไม่เข้าใจข้อความที่ว่า “ต้องกิน Ibuprofen แล้วถึงเล่นเกมได้ แต่ก็ได้รู้จัก fastDOOM”

  • เพื่อให้อ่านง่ายขึ้น อาจพิจารณาเพิ่มฟอนต์ system UI ให้กับ HTML โดยบล็อกโค้ดยังคงแสดงด้วยฟอนต์ monospaced ฟอนต์ monospaced ไม่เหมาะกับข้อความร้อยแก้ว

  • ไม่เข้าใจความหมายของข้อความ “ต้องกิน Ibuprofen แล้วถึงเล่นเกมได้ แต่ก็ได้รู้จัก fastDOOM”