我正在测试性能。程序通过TCP连接从其他端接收大量字节并解析为目标结构。
如果我在Debug(F5)中尝试,请非常认真地延迟。但如果我在Release(Ctrl + F5)中尝试它,它的工作非常顺利。 我使用WireShark查看情况,TCP窗口更新语句让我知道接收方的状态。
我想知道我是否想制作最终用户计划。该程序应该在调试模式和发布模式下工作?
数据大小非常大,传输间隔非常短。在这种情况下,调试和发布之间的性能差异将非常明确?我无法看到那种差异。
答案 0 :(得分:1)
这个问题混淆了两个不同的问题。一个是Debug与Release版本。由于众多原因,调试版本速度较慢,所有这些都旨在使调试更容易。
第二个问题是在调试器(F5)下启动应用程序而不是在调试器(Ctrl + F5)下启动应用程序会影响性能。在调试器下启动时,Windows堆会执行额外的检查,OutputDebugString的处理和模块加载可能需要更长时间等。
这两个问题是完全正交的。您可以在调试器下启动Release版本,也可以在调试器下启动Debug版本。
如果问题是Debug构建速度慢,那么,是的,它们是。您可以通过在某些源文件中启用优化或关闭调试迭代器来稍微控制这一点,但调试版本应该稍慢。
如果问题是在调试器下启动的构建速度较慢,那么在关心性能时不要这样做。您可以随时附加调试器,这样可以避免一些减速,或者根本不附加调试器。
答案 1 :(得分:0)
发布应用程序时,应仅以“发布”模式进行编译。调试模式用于在开发时真正“调试”。
答案 2 :(得分:0)
您应该只考虑发布模式进行编程。它确实是应用程序唯一可以覆盖最终用户的版本。调试模式仅适用于“管家”和调试。不是用户的关注。