我一直认为 Debug 构建比 Release 构建慢,因为编译器需要额外生成调试器信息。我最近很惊讶听到我的一位同事说发布版本通常需要更多时间。(我相信这只是因为增量链接/编译)。
一般来说,两者哪个更快?
我一直认为 Debug 构建比 Release 构建慢,因为编译器需要额外生成调试器信息。我最近很惊讶听到我的一位同事说发布版本通常需要更多时间。(我相信这只是因为增量链接/编译)。
一般来说,两者哪个更快?
嗯,有许多变量可能会影响事情。以下是调试可能更快的一些原因:
总的来说,我希望调试版本的构建速度会更快,但运行速度会更慢,而发布版本的构建时间会更长,但最终结果会运行得更快。
这取决于发布版本可能具有更积极的优化,这些可能会干扰可调试性。此外,一些更大规模的优化确实需要很长时间。在目标文件中插入调试信息的时间小到可以忽略不计,它可能比最初从磁盘读取源代码花费的时间更少。
只是一个猜测,但我认为由于优化,在大多数情况下发布构建需要更长的时间。
调试构建通常更快,因为没有进行优化(这在发布构建中很常见)。
您可以选择不使用可执行文件生成调试符号,也不进行优化,但这对于发布版本来说会很奇怪。虽然我认为它会建立得更快。
Debug 和 Release 之间的主要区别在于 Debug 用于调试(因此包括调试符号),而 Release 旨在运行得更快,因此您使用强优化
发布版本更快的主要原因是编译器对它们进行了大量优化。例如,它可以展开循环、删除不必要的变量和内联函数。优化不是一项简单的任务,需要大量的计算能力,从而减慢构建速度。
大多数编译器会让你关闭发布版本的优化。试试这个。您的构建时间将缩短。您还可以打开调试版本的优化并查看您的构建时间攀升。