代码之家  ›  专栏  ›  技术社区  ›  Saturn K

在Visual Studio中有更多的项目会增加编译时间吗?

  •  4
  • Saturn K  · 技术社区  · 15 年前

    下面哪个场景的编译速度更快?

    1. 解决方案中的两个项目。每个项目有5个类。

    2. 解决方案中的一个项目。该项目有10个类(场景A中两个项目的组合)。

    基本上,我想看看有两个项目是否会影响解决方案的编译时间。

    9 回复  |  直到 15 年前
        1
  •  2
  •   Nathan Wheeler    15 年前

    编译器通过引用获取每个类。必须首先编译底层(没有内部项目引用),然后编译引用其他内部项目的层,依此类推。因此,是的,由于编译器必须对引用进行排序并创建多个二进制文件,因此编译时间将稍微增加。

    另一方面,大多数大型项目应该划分为多个项目和名称空间,以便于可读性和导航。它实际上取决于你在做什么,但是你可以把1000个类放在一个文件中,或者多个文件中,或者多个项目中的多个文件中。编译时节省的时间(最少)不会与在布局不合理的解决方案中查找内容所浪费的时间相比。

    对于包含5个类的2个项目的解决方案,编译时间将与包含10个类的单个项目的编译时间相差毫秒。链接和引用是您将看到的唯一真正的增加,这是最小的。

    编辑:另一个注意事项是,如果您有一个足够大的项目,以至于您注意到编译时存在真正的差异,那么您可能应该考虑实现某种连续集成(请参见: http://en.wikipedia.org/wiki/Continuous_integration )环境,它将为您准备一个当前的构建,并让您知道是否有什么东西坏了。

        2
  •  4
  •   Jim Cooper    15 年前

    是的,在大型C解决方案中,拥有更多的项目会使编译时间明显更长(几分钟)。至少,这是我的经验。但是,我会增加一个警告。我怀疑项目是在完全不必要的情况下编译的,因为C对于它选择编译的内容并不是那么聪明。因此,如果大多数项目不太参考其他项目,这可能不是一个问题。我不能确定,因为我所处理的代码(遗留的东西,而不是我的,我急于添加)有这种问题,并不是松散地与POV耦合。

    请注意,缓慢编译是某些语言的一个特性(例如,所有基于C的语言)。可以一次编译的语言(如Delphi等Pascal派生语言),编译速度快得多(10^6 loc秒)。

    所以不管怎样,你的速度是有限制的。这主要是硬件问题,因为大多数语言的编译都是磁盘密集型的(即速度慢)(FLS可能是一个例外)。这里的其他线程讨论了加速编译时间的方法,最大的改进总是获得一个真正快速的高清,或者更好的,一个现代的固态硬盘。

        3
  •  2
  •   Stevoni    15 年前

    我会说是的,但我认为时间上的差别是很小的,除非文件很大(当我开始放慢速度时,是10公里的线)

    注: 我用10k行编译的文件仅仅是因为我觉得无聊,我从来没有把它实际用于生产,它是我从以前的项目迁移到一个项目的大量代码。

        4
  •  1
  •   Daniel A. White    15 年前

    我会说是的,有单独的项目确实有影响。一个项目是一个独立的输出,链接是不同的。它还必须从另一个项目中的引用中找到依赖项。找到答案的唯一方法就是尝试。

        5
  •  1
  •   JaredPar    15 年前

    拥有更多的项目意味着有更多的工作要做,因此几乎肯定会花费更多的时间。除了实际编译之外,至少还必须复制以下操作

    • MSBug任务
    • 将文件写入磁盘
    • 依赖程序集的读取
    • 在解决方案中拥有多个IPLE项目的一般开销
        6
  •  1
  •   Heather M    15 年前

    我有一个很大的项目,我正在拆分成较小的项目,我注意到编译时间只需要一个 小的 比以前长。所以是的,它会增加编译时间,但在我的例子中,它只增加了几秒钟。我可以想象,变化会更大,更大的项目的问题。

        7
  •  1
  •   HeathenWorld    15 年前

    更多的项目需要稍长的时间。项目的类型会有很大的不同。安装项目需要很长时间才能编译,因为所有的压缩操作都会发生,而且(对我来说)SQL报表项目可能需要很长时间。

        8
  •  1
  •   Erich    15 年前

    根据我在.NET开发方面的经验,这取决于您是否启用了多线程编译。

    VS能够在不同的核心上连续地编译多个项目,因此,如果您有一个多核系统,那么在单独的项目中,它比一个巨大的项目要快得多。

        9
  •  0
  •   Jay Bazuzi Buck Hodges    15 年前

    您想让我们告诉您哪个更快:一个项目中有10个类,或者两个项目中每个项目中有5个类。

    你不能自己说区别吗?

    如果你能分辨出不同,那么你就可以选一个速度更快的。

    如果你看不出两者的区别,为什么速度越快就越重要?选择一个对你更有意义的。

    你的问题出了点问题 但是。编译任何合理大小的10个类的时间都很短,因此试图优化它是浪费您的精力。你真正的问题是什么?