太吾绘卷吧 关注:273,579贴子:5,010,344
  • 5回复贴,共1

游戏的后端非常明确地禁用了所有 .NET 性能优化

取消只看楼主收藏回复

如题,我只能大概推测:1. 过月/各种操作时不时的爆红字,特别是打了 Mod 之后更加需要能方便调试定位问题,所以只能做这个取舍 2. 开启优化可能会影响 Harmony 框架补丁对应函数(因为可能被 JIT 优化给内联掉,函数消失)。吧里这段时间好像没怎么看到抱怨过月性能的,看来这取舍挺成功?


IP属地:四川1楼2026-07-24 23:13回复
    为了比较严格的测试开启优化到底能提升多少性能,我指挥 GPT 搭了一个测试框架,核心思想是不直接运行完整游戏,而是抽出过月世界演化核心函数 AdvanceMonth 并用固定的随机数种子(DataContext.Random 和 WeightBasedPathfinder._randomSource)在同一个存档上连续进行三次过月(因为 .NET 作为虚拟机语言,其优化部分 JIT 需要进行预热)来测试性能。对比的是原版的 GameData.dll 和我手动去除其中的关闭优化标记的版本。


    IP属地:四川7楼2026-07-25 22:12
    收起回复
      2026-08-04 02:02:26
      广告
      不感兴趣
      开通SVIP免广告
      经测试,开启优化在我使用的存档上有约20%的稳定过月性能提升:


      IP属地:四川8楼2026-07-25 22:14
      回复
        然后我测试了另一个骚操作,由于 .NET 框架的兼容性很好,你可以不改一行源代码和编译出来的 IL 代码,直接用新版本虚拟机运行旧版本,由于新版本虚拟机通常引入新的优化,能够白嫖一些性能提升。于是我将原有的 .NET 8 换成 .NET 11 Preview 5,又得到了稳定的5%性能提升。最终综合使得过月性能提升了三分之一左右:


        IP属地:四川9楼2026-07-25 22:17
        回复
          结论是,虽然螺舟的程序员显然意识到了涉及过月的关键代码 GameData.ActionPlanning.dll 必须开启优化,但主 Assembly GameData.dll 关闭优化仍然会明显地拖累过月性能


          IP属地:四川10楼2026-07-25 22:32
          回复
            另外除了过月本身,后面的存档部分也比较慢,而且慢的原因是比较清楚的,使用单线程 zip 压缩算法压缩存档其实耗费了大量时间,就算改成了倾向于存档速度依旧比较慢。对于这一点我已经在创意工坊发布了多线程存档 Mod,在我这里测试能将存档时间从5到6秒缩短到不足1秒(第二次开启本Mod存档时生效,第一次会备份你原来的存档额外耗时),大家有兴趣的话可以备份自己的存档然后试一试


            IP属地:四川11楼2026-07-25 22:49
            收起回复