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