我有一个大的项目,使用Qt框架,并试图find最快的方式来编译我的Windows安装。
在我家里的linux机器上,我用了3年前的Linux Mint安装了一个双核(这个机器是3年,而不是Linux Mint安装) ,使用:make -j2这两个核心都使用完整(ish)并且编译代码相对快,从干净的构build大约10分钟。
然而,在我工作的Windows PC 2.0 GHz英特尔®酷睿™2四核(XP)我似乎无法得到编译速度一样快,我的Linux机器。 程序的开发人员文档推荐使用Visual Studio C ++使用cmake生成的项目文件,但似乎只使用一个核心,并花费了一个多小时的时间来编译我的Linux安装上大约10分钟(从干净的版本)。
我已经使用jom,但即使使用所有的内核,它仍然需要大约一个半小时,因为它似乎只使用每个核心less量的CPU。
对我来说没有意义的是,我的旧的Linux机器快速build立,但四核心只是下滑。
以下这些已经帮助我们的Windows C ++ Qt的构建速度,多年来:
我们的Windows版本比Linux版本还要慢,但我不能说这是一个公平的比较,因为我们的共享Linux构建盒比开发PC要高得多。
(顺便说一句,如果你之前没有见过它,那么值得一读的是Jeff Atwood所说的关于开发人员电脑良好配置的内容:例如程序员的权利法案(Bill of Rights )
更新日期:25/10/2012
如果您使用的是Visual Studio 2008,但是使用DLL构建, 我目前不推荐移植到Visual Studio 2010 :依赖项目的不必要的重新链接存在一个问题,绝对会使开发人员的工作效率降低,至少在.sln中使用20或所以.vcxproj文件:
有可能是一个解决方案 – 我会稍后更新,一旦我测试了一下 – 看到不必要的重新链接的依赖项目时,建设与Visual Studio 2010 CORCOR说:
如果别人有类似的问题:
关闭DLL项目的表现创建,并只为应用程序项目打开帮助!
与VS2008这似乎没有问题。
这可能是一个解决方法,但我们使用Incredibuild,它分布在多个机器上,这工作得很好。 从40到10分钟,我们的建设时间缩短。 (我们有6个开发人员联系起来分担工作量)
Visual Studio可以并行编译多个项目,但每个项目都是按顺序编译的。 所以如果你用两个项目编译一个解决方案,那么两个进程将并行启动,但是如果你只有一个项目,那么只有一个进程将会启动,它将顺序编译你的源代码。
如果你使用MingW,你可以按照这个线程: http : //www.mail-archive.com/qt-creator@trolltech.com/msg00156.html
在那里您将找到解决方案(安装MSys并在启动make时指定参数-j以指定并行作业的数量)。
更简单的解决方案在这里: http : //developer.qt.nokia.com/forums/viewthread/855/ (在QtCreator工具 – >选项指定Jom作为构建工具,而不是NMake)
我有同样的问题。 在我们的机器上运行的是一个试图确定与Windows 7兼容性的软件。这个软件将软件的每一个启动记录到一个数据库,从而减缓了新进程的启动。 由于编译器为每个文件启动一个新的进程,这显着减慢了整个编译运行。
在Visual Studio中你是否去了:
项目 – >属性 – > C ++并将“多处理器编译”为是? 这对我来说打开了多核,这应该加快其实际上相当多。
我认为最好的办法是把你的项目分解成多个项目,每个项目都是静态库项目,通过一般是MainWindow类的容器项目将它们连接在一起。 因此,编译时间首次需要一段时间,然后将会很短(取决于您的修改)。