que*_*ons 8 c++ optimization gcc
我有一个包含所有类定义和函数的源文件.
为了更好地组织,我将类声明(.h)和实现(.cpp)移动到单独的文件中.
但是当我编译它们时,它导致比我从单个源可执行文件获得的可执行文件更慢.对于相同的输入,它大约慢20-30秒.我改变任何代码.
为什么会这样?我怎样才能让它再次变快?
更新:单个源可执行文件在40秒内完成,而多个源可执行文件需要60个.我指的是运行时而不是编译.
Evg*_*uev 10
我认为,当编译为单个文件时,您的程序运行得更快,因为在这种情况下,编译器需要更多信息来优化代码.例如,它可以自动内联某些函数,这在单独编译时是不可能的.
为了更快地再次让,你可以尝试启用链接时优化器(或整个程序优化器)使用此选项:-flto.
如果-flto选项不可用(并且仅从gcc 4.6开始可用)或者由于某种原因您不想使用它,则至少有2个选项:
for better organization,则可以为此文件创建单个源文件(如all.cxx)和#include所有源文件(所有其他*.cxx文件).然后,您只需要构建它all.cxx,并且所有编译器优化都可以再次使用.或者,如果您将其拆分以进行编译增量,则可以准备2个构建选项:增量构建和统一构建.第一个构建所有单独的源,第二个仅构建all.cxx.在这里查看更多相关信息.