为什么 fastDOOM 很快

2025 年 3 月 4 日,作者修复了一台 IBM PS/1 486-DX2 66Mhz 电脑,测试《毁灭战士》(DOOM)在其上的运行帧率。最初帧率约为 21.5fps,后发现 fastDOOM 版本能使帧率提升 30%至 48%,达 30.1fps 等。

  • 代码来源:DOOM 原开发于 NeXT Workstation,商业版基于 DOS I/O 编写,开源的是 Linux 版本,DOS 版由 Linux 核心、Heretic I/O 和 APODMX 重构而来,fastDOOM 起始于 PCDOOM v2。
  • 性能提升过程:Viti95 频繁发布 fastDOOM 版本,每个版本都有性能改进。通过下载 52 个 fastDOOM、PCDOOMv2 和原始 DOOM.EXE 版本,用 go 程序生成运行脚本并测试,发现 fastDOOM 改进并非主要源于现代编译器。

    • fastDOOM v0.1:此版本 220 个提交,MVP 补丁是 build 36 的“Crispy optimization”,还有多个优化提升约 0.5fps 的提交,该版本大量删除代码,可能有助于利用 486 缓存。
    • fastDOOM v0.6:33 个提交,包含多个小优化和 MVP 提交,如 Build 342 跳过渲染不需要的视平面等。
    • fastDOOM v0.8:282 个提交,声音系统不稳定导致 timedemo 时需无声音且归一化 fps,该版本重点似乎在文本模式渲染,有多个 MVP 提交,如 Build 792 为每个渲染器提供一个可执行文件等。
    • fastDOOM v0.9.2:110 个提交,有多个优化提交,如 Build 1639 优化 skyflatnum 比较等。
    • fastDOOM v0.9.7:294 个提交,多次测试仍无法降低此版本噪声。
  • 模式对比:fastDOOM 探索多种使速度变快的方法,包括不同视频模式。在作者机器上,使用视频模式 13h 性能更差,因为其数据分发方式导致写入字节次数增加且需阻塞 VSYNC;模式 Y 可让程序员单独访问 VGA 银行,实现三缓冲且写入字节次数少,但绘制隐形幽灵更慢。DOOM 采用模式 Y 有多种原因,如图形工具支持、页面翻转完美等,Heretic 发布后硬件变化使模式 13h 更具吸引力,fastDOOM 提供多种可执行文件让用户选择。
  • 其他优化尝试:还探索了 OpenWatcom 的处理器特定标志,但最终因 386 版本更快而放弃。
  • 总体印象:Victor Nieto 对 fastDOOM 进行了大量优化,不仅利用现有改进,还提出新的优化方法,引发热议,作者对其工作表示赞赏。
阅读 11
0 条评论