7

我一直认为 Debug 构建比 Release 构建慢,因为编译器需要额外生成调试器信息。我最近很惊讶听到我的一位同事说发布版本通常需要更多时间。(我相信这只是因为增量链接/编译)。

一般来说,两者哪个更快?

4

5 回答 5

15

嗯,有许多变量可能会影响事情。以下是调试可能更快的一些原因:

  • 通常调试模式做的优化要少得多,因为那些会弄乱指令和代码行之间的映射。因此,编译器在那里做的工作更少。
  • 即使完整的调试构建速度较慢,调试构建的发生频率也更高,并且通常比发布构建更能利用增量构建。因此,Debug 构建通常不需要像 Release 构建那样做那么多工作。
于 2009-03-24T15:20:58.093 回答
2

总的来说,我希望调试版本的构建速度会更快,但运行速度会更慢,而发布版本的构建时间会更长,但最终结果会运行得更快。

这取决于发布版本可能具有更积极的优化,这些可能会干扰可调试性。此外,一些更大规模的优化确实需要很长时间。在目标文件中插入调试信息的时间小到可以忽略不计,它可能比最初从磁盘读取源代码花费的时间更少。

于 2009-03-24T15:31:16.493 回答
0

只是一个猜测,但我认为由于优化,在大多数情况下发布构建需要更长的时间。

于 2009-03-24T15:19:38.267 回答
0

调试构建通常更快,因为没有进行优化(这在发布构建中很常见)。

您可以选择不使用可执行文件生成调试符号,也不进行优化,但这对于发布版本来说会很奇怪。虽然我认为它会建立得更快。

Debug 和 Release 之间的主要区别在于 Debug 用于调试(因此包括调试符号),而 Release 旨在运行得更快,因此您使用强优化

于 2009-03-24T15:24:42.310 回答
0

发布版本更快的主要原因是编译器对它们进行了大量优化。例如,它可以展开循环、删除不必要的变量和内联函数。优化不是一项简单的任务,需要大量的计算能力,从而减慢构建速度。

大多数编译器会让你关闭发布版本的优化。试试这个。您的构建时间将缩短。您还可以打开调试版本的优化并查看您的构建时间攀升。

于 2009-03-24T15:44:37.897 回答