【问题标题】:HUGE framerate difference between release/debug builds发布/调试版本之间的巨大帧速率差异
【发布时间】:2015-12-07 10:53:50
【问题描述】:

我正在开发 DirectX 游戏,我发现在发布构建期间我的平均速度为 170 fps,但在调试版本中我获得约 20 fps。

我想知道发布版本和调试版本之间的这种巨大差异是否正常,尤其是因为在调试中我没有任何痕迹被输出?我知道调试和发布版本之间应该存在性能差距,但肯定不会这么大吗?

【问题讨论】:

    标签: debugging optimization directx release


    【解决方案1】:

    像往常一样,这取决于 (tm)。不,说真的:调试和发布性能之间的数量级差异听起来很合理。 (比其他方式更好;))

    【讨论】:

      【解决方案2】:

      调试版本通常禁用所有优化。许多库(包括 DirectX)还在调试模式下执行更多验证和详细诊断。

      所以是的,完全有可能在性能上有这么大的差异。

      【讨论】:

        【解决方案3】:

        当然。调试版本具有未优化的代码,包含额外的元数据,以便可以在 pdb 文件中跟踪它们,以及各种其他 gremlins 侵蚀你的 fps。许多测试代码也仅在调试环境中执行,如果您的代码处于紧密循环中(例如视频游戏渲染场景),您会注意到这一点。

        【讨论】:

          【解决方案4】:

          是的,这是完全正常的。这种情况通常是由于使用了像普通数据类型(即支持+、-、* 等)和ASSERT 的类类型(如Matrix 和Vector)。

          类类型导致速度如此缓慢的原因是因为没有代码被内联,在发布时它确实被内联。这可能会导致巨大的速度差异,令人惊讶的是。

          ASSERT 是检查事物安全性的额外工作。额外的工作意味着额外的处理时间,因此事情会变慢。

          正如已经提到的,缺乏优化也无济于事。虽然在某种程度上,这反映在缺乏内联(这是一种优化)。

          【讨论】:

            【解决方案5】:

            如果您想确定,总是可以选择进行一阶性能分析(使用您最喜欢的分析器)。是的,花时间优化调试版本通常不是一个好主意,但如果您发现性能与发布版本相差太远,仍然值得花一些时间。 p>

            【讨论】:

              猜你喜欢
              • 2011-12-15
              • 2017-06-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多