Debugging 调试与调试之间的性能测试;释放模式

Debugging 调试与调试之间的性能测试;释放模式,debugging,release,Debugging,Release,我在测试性能。程序通过TCP连接从另一方接收巨大的字节,并解析为目标结构 如果我在调试(F5)中尝试,延迟会非常严重。但如果我在Release(Ctrl+F5)中尝试它,它的工作会非常顺利。 我使用WireShark检查情况,TCP窗口更新语句让我知道接收端的状态 我想知道我是否想做一个最终用户程序。程序应该在调试模式和发布模式下工作 数据量很大,传输间隔很短。在这种情况下,调试和发布之间的性能差异将非常明显?我从来没有看到过这种区别。当您发布应用程序时,它应该只在“发布”模式下编译。调试模式用

我在测试性能。程序通过TCP连接从另一方接收巨大的字节,并解析为目标结构

如果我在调试(F5)中尝试,延迟会非常严重。但如果我在Release(Ctrl+F5)中尝试它,它的工作会非常顺利。 我使用WireShark检查情况,TCP窗口更新语句让我知道接收端的状态

我想知道我是否想做一个最终用户程序。程序应该在调试模式和发布模式下工作


数据量很大,传输间隔很短。在这种情况下,调试和发布之间的性能差异将非常明显?我从来没有看到过这种区别。

当您发布应用程序时,它应该只在“发布”模式下编译。调试模式用于在开发过程中进行真正的“调试”

您应该只考虑发布模式。这确实是你的应用程序中唯一一个能够到达最终用户的版本。调试模式仅适用于“内务管理”以及。。。调试。这不是用户真正关心的问题。

这个问题将两个不同的问题混为一谈。一个是调试版本与发布版本。调试构建速度较慢的原因有很多,所有这些都是为了使调试更容易

第二个问题是,在调试器(F5)下启动应用程序与不在调试器(Ctrl+F5)下启动应用程序会影响性能。在调试器下启动时,Windows堆会执行额外的检查,OutputDebugString和模块加载的处理可能需要更长的时间,等等

这两个问题是完全正交的。可以在调试器下启动发布版本,也可以不在调试器下启动调试版本

如果问题是调试构建速度较慢,那么,是的,确实如此。您可以通过在某些源文件中启用优化或关闭调试迭代器来控制这一点,但调试构建应该会稍微慢一些

如果问题是在调试器下启动的构建速度较慢,那么在关心性能时不要这样做。您可以始终在之后附加调试器,这将避免某些速度减慢,或者根本不附加调试器。

性能测试“调试”版本毫无价值。如果您的应用程序在“发布”模式下按预期运行,则一切正常。没必要为此而失眠。切勿将“调试”版本部署到客户端。您应仅在发布模式下配置文件。您应该尽可能多地使用调试构建,因为它应该包含断言和其他错误检查,以帮助确保代码是正确的。