未使用的 using 语句
我可能已经知道这个问题的答案,但我认为无论如何还是值得问的。如果我的代码文件中有大量 using
语句,但没有被使用;
- 这会对性能产生任何不利影响吗?
- 编译器在编译/运行时如何处理它们?
谢谢
I may already know the answer to this question, but I thought it was worth asking anyway. If I have a load of using
statements within my code file that aren't being used;
- Does that have any sort of detrimental performance impact?
- How does the compiler deal with them at compile/run time?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不。
在编译时,它们会执行您所期望的操作,即充当命名空间导入。它们不会出现在编译的二进制文件中:对类型的任何引用都使用完全限定名称。
即使不需要,编译器也会检查
using
语句中的命名空间;如果删除命名空间,则引用该命名空间的所有using
语句都将失败。对我来说,多余的
using
语句就像多余的注释。它们对编译器没有任何影响,但包含太多,您就有可能让开发人员感到困惑。No.
At compile time they do what you'd expect, i.e. act as namespace imports. They don't appear in the compiled binary: any reference to a type uses the fully-qualified name.
The compiler does check the namespace in a
using
statement even if it's not needed; if you remove a namespace, then all theusing
statements that refer to it will fail.To me, redundant
using
statements are like redundant comments. They make no difference to the compiler, but include too many of them, and you risk confusing your developers.它根本不会影响运行时的性能。
它可能会稍微增加编译时间,因为:
1)编译器需要解析更多字符
2)它必须在更多候选者中查找标识符。但由于这可能使用哈希表,所以它也不应该昂贵。
我猜编译器的速度减慢可以忽略不计。
我猜它会减慢 Intellisense 的速度,因为它必须显示和过滤的列表变得相当长。
删除未使用的用法更多的是一种风格而不是性能改进。您需要小心扩展方法,因为它们是通过 using 语句引入范围的。例如,即使当前未使用,我也不会删除
using System.Linq
。It doesn't affect performance at runtime at all.
It will probably increase compile-time very slightly since:
1) The compiler needs to parse a few more characters
2) It has to look up identifiers among more candidates. But since this probably uses hashtables it shouldn't be expensive either.
I'd guess the compiler slowdown is negligible.
I'd guess it slows Intellisense down a bit more since the list it has to display and filter gets quite a bit longer.
Removing unused usings is more a stylistic than a performance improvement. And you need to be careful about extension methods since they are brought into scope by using statements. For example I don't remove
using System.Linq
even when it's currently unused.运行时不会影响性能。但是,大量命名空间可能会在一定程度上减慢代码完成速度并降低工作效率
No performance impact in run time. However, a lot of namespaces can somewhat slow down your code completion and decrease productivity
运行时不会影响性能,使用会在编译时解决,无用的会被忽略。
There is no performance hit at runtime, usings are resolved at compile time and useless ones are ignored.
它根本没有影响 - 请参阅对此问题的答复:
如何未使用的 using 指令是否会影响性能?
It has no impact at all - see response to this question:
How is performance affected by an unused using directive?
它可能会使编译时间更长,但对运行时性能没有影响或影响可以忽略不计。
It may make the compile time longer, but it will have either no or a negligible effect on run-time performance.