首页 文章

发布/调试版本之间的巨大帧速率差异

提问于
浏览
3

我正在开发一个DirectX游戏,我发现在发布版本中我平均得到170fps,但是在调试版本中我得到了~20fps .

我想知道在发布版本和调试版本之间是否存在这种巨大的差异,特别是因为在调试中我没有任何跟踪信息?我知道调试和发布版本之间应该存在性能差距,这肯定不是很大吗?

5 回答

  • 2

    是的,这完全正常 . 这种情况通常是由像Matrix和Vector这样的类类型的使用引起的,这些类型的行为类似于普通数据类型(即支持, - ,*等)和ASSERT .

    类类型导致这种速度变慢的原因是因为没有任何代码被内联,因为它在内存中会被内联 . 这可能导致巨大的速度差异,令人惊讶的是 .

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

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

  • 0

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

  • 3

    如果您想确切知道,总是可以选择进行一阶性能分析(使用您最喜欢的分析器) . 是的,它仍然值得花一些时间在它上面 .

  • 3

    像往常一样,它取决于(tm) . 不,严重:调试和发布性能之间的一个数量级差异听起来足够合理 . (比其他方式好;))

  • 3

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

    所以是的,完全可能在性能方面有如此大的差异 .

相关问题