【发布时间】:2012-03-16 18:52:54
【问题描述】:
我有一个包含所有类定义和函数的源文件。
为了更好地组织,我将类声明 (.h) 和实现 (.cpp) 移动到单独的文件中。
但是当我编译它们时,它导致的可执行文件比我从单一源可执行文件获得的要慢。对于相同的输入,它慢了大约 20-30 秒。我尽力更改任何代码。
为什么会这样?我怎样才能让它再次变得更快?
更新:单源可执行文件在 40 秒内完成,而多源可执行文件需要 60 秒。我指的是运行时而不是编译。
【问题讨论】:
-
20-30 秒总共多长时间?
-
另外,您是在命令行上链接/编译,还是使用 VS 之类的 IDE?显然,将源文件链接在一起比将所有内容都放在一个文件中要花费更长的时间,但是对于大型应用程序以外的所有应用程序来说,20-30 秒的差异都太长了。如果我不得不猜测,而这纯粹是猜测,我会说你必须将源代码分散到数千个文件中才能获得这种构建时间。
-
您确定您没有使用“调试”标志进行编译吗? 20 秒很多。
-
@prelic:他说“(...)它导致的可执行文件比那个(...)慢”。他的意思是 20 秒的运行时间,而不是编译时间。
-
可执行文件的大小是否具有可比性?无论源代码是如何组织的,编译器都应该产生类似的机器指令。我们可能需要查看一些代码才能了解您遇到问题的原因。由于我们在这里讨论的是运行性能,我猜问题隐藏在代码中的某个地方,而不是您构建它的方式。
标签: c++ optimization gcc