发布构建与调试构建性能

时间:2014-08-29 20:05:51

标签: c++ performance debugging release

Release Build是否总是比Debug版本更快(因为,版本构建正在优化很多)?,即使我编写了最快的性能代码?

或者是否可以编写C ++代码(使用调试),这与发布版本一样快?

我只是好奇我的代码是否太慢,因为当我进行性能测试时,我注意到了一个可观的差异。

3 个答案:

答案 0 :(得分:10)

一个好的算法选择肯定会对调试版本的速度产生很大的影响,但调试版本永远不会那么快。这是因为优化器完全不同地调度寄存器,试图使代码快速运行,而调试编译器试图保留临时变量的值,以便您可以从调试器中读取它们。

由于您可能拥有比CPU寄存器多得多的变量,这意味着调试编译器将发出指令将这些值复制到RAM。在发布版本中,如果不再使用该值,优化器将把它丢弃。

答案 1 :(得分:0)

一般来说,这取决于。

某些发布版本可能与调试版本不同。

还取决于调试和发布版本之间的配置差异。如果唯一的区别是调试版本中的符号信息,那么它们将具有相同的性能。

在我的商店,我们正在发布调试软件。可执行文件在没有任何符号的情况下进入Flash。

答案 2 :(得分:0)

如果你的代码中有数据结构验证,它可能会使调试比发布慢很多。

另一方面,如果您的应用程序属于花费大部分时间调用系统例程的类型,例如I / O,内存分配,信号量等等,那么release会比调试快得多

另一方面,如果你的程序使用大量自我时间的函数,那么在发布版本中它们会更快。