是否有大量警告会使C#编译时间更长?

nae*_*n84 15 .net c# visual-studio

我们有一个包含数千个警告的大解决方案.如果我删除了所有警告(手动或使用工具),编译解决方案会花费更少吗?

我已经尝试将详细级别降低到无声,没有用.最大冗长级别也没有区别.

Ond*_*cny 20

不,它不会对编译时间产生重大影响.与FX Cop这样的特殊工具不同,编译器本身不执行任何复杂的检查,因此就其执行它的其他逻辑而言,这是无关紧要的.

在从命令行进行编译时,实际上可能会降低性能,从而将大量消息输出到控制台窗口中.在这种情况下,将输出重定向到文件是一种可能的改进.

但是,修复生成警告的代码部分是个好主意.您将获得更高质量的代码库,并减轻一些否则会更容易发生的错误.


更新:实验结果.

我们的代码库大约有.34万行C#代码在一个解决方案中分为48个项目.重新编译产生460个警告.编译器的输出长度为2800行,重定向到文件时占用近400 kB.

Core i7 920,9 GB RAM,单个7.2 krpm磁盘的编译速度:

  • 输出到控制台窗口时47秒,
  • 重定向到文件时为43秒 - 编译时间减少了9.1%.

所有时间都是三个编译的平均值,有一些初始编译强制文件进入缓存.请注意,我没有关闭警告进行任何测量.

  • 您可以忽略某些警告.我想象你的5000+,其中4500个是警告1591,"缺少公开可见类型或成员的XML评论......".我的建议不是要解决所有警告,而是选择低调的果实.如果你能在不到一个小时的时间内处理80%的问题,那么就这样做,并称之为一天. (2认同)

Fox*_*x32 7

你不应该沉默警告.大多数警告表示您的代码存在问题.您应该查看代码并修复它们.

处理所有警告应该花费编译时间(compieler需要向visual studio发送警告,更多警告应该意味着更多的输出数据.但我不知道影响有多大).但是,如果您修复警告,您也可以修复错误.

  • 是的,但这不是OP所要求的。 (2认同)