我可能已经知道这个问题的答案,但我还是认为问一下是值得的。如果我的代码文件中有一堆没有被使用的 using
语句;
- 这会对性能造成什么样的负面影响吗?
- 编译器在编译/运行时如何处理它们?
谢谢
我可能已经知道这个问题的答案,但我还是认为问一下是值得的。如果我的代码文件中有一堆没有被使用的 using
语句;
谢谢
这会对性能有不良影响吗?
不会。
编译器在编译和运行时如何处理它们?
在编译时,它们的作用就像你所期望的那样,即作为命名空间导入。它们不会出现在编译后的二进制文件中:任何对类型的引用都使用完全限定名称。
即使不需要,编译器也会检查 using
语句中的命名空间;如果删除一个命名空间,则所有引用它的 using
语句都将失败。
对我而言,多余的 using
语句就像多余的注释一样。它们对编译器没有任何影响,但是如果包含太多这样的语句,就可能会让开发者感到困惑。
它不会影响运行时性能。
它可能会略微增加编译时间,因为:
1)编译器需要解析更多字符
2)它必须在更多的候选标识符中查找。但由于这可能使用哈希表,所以代价不应该太大。
我猜编译器减速可以忽略不计。
我猜它会稍微减慢Intellisense,因为它要显示和过滤的列表会变得更长。
删除未使用的using语句更多是一种风格上的改进,而不是性能改进。并且您需要注意扩展方法,因为它们通过using语句引入范围。例如,即使当前未使用,我也不会删除using System.Linq
。
在运行时没有性能影响。但是,许多命名空间可能会使您的代码完成速度变慢,并降低生产力。
在运行时不会有性能损失,使用操作在编译时解析,无用的操作被忽略。
这可能会增加编译时间,但对运行时性能要么没有影响,要么影响微乎其微。
using System.Xml;
"这样的指令。而语句是"using(var conn = CreateConnection()) {...}
"。 - Marc Gravell