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

Debugging 版本/调试版本之间的帧速率差异巨大,debugging,optimization,directx,release,Debugging,Optimization,Directx,Release,我正在开发一款DirectX游戏,我发现在发布版本中,我的平均速度是170fps,而在调试版本中,我的平均速度是20fps 我想知道发行版和调试版之间的这种巨大差异是否正常,特别是在调试时,我没有任何跟踪输出?我知道调试版本和发布版本之间应该存在性能差距,但肯定不会有这么大?和往常一样,这取决于(tm)。不,说真的:调试和发布性能之间的数量级差异听起来足够合理。(比另一种方法更好;)调试构建通常禁用所有优化。许多库(包括DirectX)也在调试模式下执行更多验证和详细诊断 因此,是的,在性能上有

我正在开发一款DirectX游戏,我发现在发布版本中,我的平均速度是170fps,而在调试版本中,我的平均速度是20fps


我想知道发行版和调试版之间的这种巨大差异是否正常,特别是在调试时,我没有任何跟踪输出?我知道调试版本和发布版本之间应该存在性能差距,但肯定不会有这么大?

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

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


因此,是的,在性能上有如此大的差异是完全可能的。

当然。调试构建有未优化的代码,包含额外的元数据,以便可以在pdb文件中跟踪它们,还有各种其他的小精灵正在蚕食您的fps。很多测试代码也只在调试环境中执行,如果代码处于紧密循环中(例如,视频游戏渲染场景),您会注意到这一点。

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

是的,这是完全正常的。这种情况通常是由于使用类似于正常数据类型(即支持+、-、*等)和断言的类类型(如矩阵和向量)引起的

类类型导致这种速度减慢的原因是,在版本中没有内联的代码。这会导致巨大的速度差异,令人惊讶的是

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

正如已经意识到的那样,缺乏优化也无济于事。尽管在某种程度上,这反映在缺乏内联(这是一种优化)上