建设需要很长时间。如何应对?

6
谈到编译语言(我以C#为例),无论您的开发机器性能如何,问题似乎都会存在。构建时间可能会因具体环境而异,但通常足以使您的注意力从任务转移到其他事情,例如stackoverflow、youtube、twitter等,这非常令人烦恼。
对于Java开发人员来说,由于Java的动态类加载,我感到很高兴,但是.NET(和其他)开发人员该怎么做才能使构建过程变得不那么痛苦和烦人呢?

1
任何超过10秒钟的时间,我都会忘记我最初是为什么而建立的。购买更快的计算机、执行更小的项目、使用更多的库等等可以提高效率。 - Seth
2
SSD(固态硬盘)可以提高10倍的性能,具体取决于您的项目大小。此外,如果您进行改进,CPU也不会浪费。我知道这是一种“使用更大的锤子”的方法,但它确实有效。升级后,我1)加载VS2008,2)加载项目3)完成重建,所需时间比之前的配置能够完成步骤1和部分步骤2的时间要短。 - Daniel Mošmondor
2
其实,我应该说“Python”。大多数时候,我根本不需要构建任何东西——这导致我在使用那些其他语言时注意力不集中。 - Seth
@bpeterson76 我的意思是,当应用程序启动时,动态加载修改后的类需要花费相当长的时间。 - x__dos
开始用C++构建项目,您会享受构建C#项目所需的时间。 - default
显示剩余2条评论
7个回答

8
我们使用多个构建配置来权衡速度和全面性构建的关系。
完整的构建会进行耗时的操作,如FX cop分析、ASP.NET编译、所有单元测试项目、Entity Framework视图预生成等。
“快速构建”通常只需要几秒钟,并且只包括启动项目所需的最少内容。
开发人员根据需要在完整构建和快速构建之间切换。

6
班级文件不需要构建吗?那不是把工作负载放到运行时而不是编译时?这并不是真正的区别,对吧?随着软件变得越来越大,自然而然地,构建所需的时间就会变得更长,这取决于机器而不是语言或框架。这是强类型、解释字节码(或二进制码,具体取决于语言/编译器)与每次运行时解释源代码(如使用php和python等)之间的权衡。我认为Java并没有多大改善,你必须在一定时间内构建应用程序。
与C和C++相比,我认为C#和Java在编译时间方面有了很大的改进。
只需利用空闲时间: Compiling 来源:source

3

一些可以尝试的方法:

  1. 对包含源代码的驱动器进行碎片整理

  2. 从病毒扫描程序中排除源代码文件夹

  3. 从Windows搜索索引器中排除源代码文件夹

  4. 禁用您未使用的任何Visual Studio扩展功能


2
你的问题中提到注意力偏离任务的评论让我想起了 Joel on Software 的一篇文章。因此,投资于固态硬盘(因为我假设你在开发和调试过程中谈论构建过程时是在使用开发者电脑)可能会有所帮助。此外,总体上让你的电脑更快当然也不会有坏处,对吧? :)

1
除了其他让计算机更快的建议,例如从解决方案中删除不必要的项目等等,还要考虑使用Visual Studio 2010和多核机器。VS2010在构建时可以利用所有核心。查看this thread以获取有关如何设置的更多信息。

我不知道VS2010是否能够利用所有的核心,但对于WPF项目来说,即使是相对较小的项目(Core Duo 3GHz和4GB RAM),构建速度在我的机器上仍然非常缓慢。 - Thomas Levesque

1
你是每次都进行全量重建还是将所有内容放在同一个程序集中?我正在处理相当大的项目,但我的构建时间并不长。我有几个程序集,每次对项目进行更改时只修改其中几个。
如果你发现自己需要在各个程序集中进行修改,那么你可以尝试重构代码结构。或者你可能还没有花时间进行单元测试?它们不仅可以帮助你进行测试,还可以获得更好的代码结构(设计糟糕的应用程序很难进行测试)。
另一种选择是使用加速构建的工具,例如:http://www.xoreax.com/

1

我曾经参与过一些非常大的C#项目,很少见到Debug构建时间超过2分钟。

通常会浪费时间的是静态分析(例如fxcop)、单元测试、代码签名(如果使用代码签名服务)等。控制这些步骤的最简单方法是将它们限制在Release构建中,或者为“完整构建”定义一个单独的构建,并从Debug和Release构建中排除这些步骤。

如果这些不是你的问题,请像其他人所说的那样查看你的计算机性能。碎片化、慢速构建磁盘、反病毒软件等都可能导致构建变慢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接