Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 我们应该做哪些硬件改进来加速构建机器?_Performance_Msbuild_Build Process_Continuous Integration_Hardware - Fatal编程技术网

Performance 我们应该做哪些硬件改进来加速构建机器?

Performance 我们应该做哪些硬件改进来加速构建机器?,performance,msbuild,build-process,continuous-integration,hardware,Performance,Msbuild,Build Process,Continuous Integration,Hardware,我们的开发部门有一台构建机器,我们将其设置为在整个工作日内持续构建。 它的作用是: 删除以前签出的源代码(5分钟) 从subversion进行干净的签出(15分钟) 构建了一组C++和.NET代码(35分钟) 构建安装程序并运行单元测试(5分钟) 鉴于上述情况,添加不同的硬件会对改进执行上述操作所需的时间产生什么样的影响 例如,我曾考虑在硬盘上使用SSD,因为编译涉及大量随机磁盘访问 subversion服务器当前是一个虚拟机-将其切换为物理机是否有助于降低签出速度 从Core2Duo处理器

我们的开发部门有一台构建机器,我们将其设置为在整个工作日内持续构建。 它的作用是:

  • 删除以前签出的源代码(5分钟)
  • 从subversion进行干净的签出(15分钟)
  • 构建了一组C++和.NET代码(35分钟)
  • 构建安装程序并运行单元测试(5分钟)
鉴于上述情况,添加不同的硬件会对改进执行上述操作所需的时间产生什么样的影响

例如,我曾考虑在硬盘上使用SSD,因为编译涉及大量随机磁盘访问

subversion服务器当前是一个虚拟机-将其切换为物理机是否有助于降低签出速度

从Core2Duo处理器升级到i7会产生什么影响


关于加快上述进程还有其他建议吗?

我认为你自己也提出了很好的建议。一定要添加更快的硬盘(SSD或其他),并升级CPU。我认为您的代码存储库(Subversion)绝对应该位于物理机器上,最好与构建机器分开。我想升级硬件后你会注意到一个很大的不同。此外,确保机器没有任何其他大型任务与生成任务(例如病毒扫描)同时运行,以便生成任务不会减慢速度


构建机器如何设置以执行其任务?您正在使用持续集成软件吗?机器本身是服务器还是普通桌面机器?

可能加快SVN签出过程的一个技巧是在生成机器上有一个工作副本,更新工作副本,并从工作副本到生成目录执行一次检查。这将减少SVN服务器上的负载并减少网络流量


减少前5分钟清理的另一个技巧是将旧版本目录移动到同一磁盘上的临时文件夹中,然后在主版本完成时使用另一个后台任务删除旧版本目录(可能是夜间清理任务)。

另一种加速SVN的方法是使用二进制协议而不是HTTP


看起来构建时间是最耗时的部分——这是优化的最佳候选者。如果并行构建扩展到办公室中的其他机器上呢?像这样的产品可能会显著缩短编译时间。

其中有多少已经并行完成了?e、 你是在并行地检查不同的项目,还是在并行构建?(我觉得很奇怪,清除以前的结帐要花5分钟……)所有这些都不是并行完成的。删除需要很长时间,因为有很多代码,C++项目生成一个大的中间文件。最终的结果是,我们必须删除分布在大量文件中的超过5GB的数据。我可能会尝试移动旧的源代码,而不是删除它,因为这几乎是即时的。您专门要求硬件解决方案,但我看到一个软件优化:您的svn签出。我们编写了一个脚本,该脚本执行svn状态,解析其输出,并使用它删除所有未版本化的文件,还原所有版本化的文件,然后只执行svn更新,而不是删除和执行新签出。每次构建都会节省大量时间。唯一的缺点是,如果我们在一个VPN操作的中间停止构建,它会锁定工作副本,而在构建再次通过之前,我们必须手动解锁。我们认为这样的不便是值得的。它只是一台普通的台式机。除了构建解决方案,它还运行MSBuild并执行许多自定义构建任务。您肯定需要增强桌面计算机。我还建议使用Hudson之类的持续集成服务器来自动化这些任务。我发现它非常有用。+1用于提及病毒扫描程序。有一次,当病毒扫描程序被禁用时,我们的生成时间从50分钟下降到2分钟。我们发现使用SSD时,msbuild生成速度较慢。我们假设这是因为编译器对obj目录等进行了所有随机写入。你可能想考虑一个带有大磁盘缓存的快速硬盘,甚至是RAID。谢谢你的建议。我将构建修改为移动而不是删除,这几乎是即时的。现在,一项计划任务会在清晨运行,以删除前一天的所有旧版本。在构建过程中,这是一个单独的线程,但它有点混乱:)