未使用的using指令如何影响性能?


110

每当您创建新页面或项目时,Visual Studio都会自动为您创建using语句。其中一些您将永远不会使用。

Visual Studio具有“删除未使用的用法”的有用功能。

我想知道,如果永不访问的using语句仍然在文件顶部提到,则对程序性能是否有负面影响。


我在询问之前确实进行了搜索,但没有显示出来。
KdgDev

6
FWIW,此帖子具有更好的SEO:对我来说,这是Google的第一个结果。在链接的2个原件中,一个不可用(已删除),而另一个的措词则足以为该帖子添加一些价值,即使只是重定向。
DaveD

@DaveD首先为您服务,因为Google知道您的确切偏好和搜索历史。在我朋友的电脑里不是第一台。
ilias iliadis

Answers:


133

未使用的使用不会影响应用程序的运行时性能。

它可能会影响IDE的性能以及整个编译阶段。原因是它创建了必须在其中进行名称解析的其他名称空间。但是,在大多数情况下,这些影响很小,并且不会对您的IDE体验产生明显影响。

出于相同的原因,它也会影响调试器中评估表达式的性能。


38
使用次数越多,Intellisense的运行速度就会越慢
Riegardt Steyn 2012年

14

不,这只是编译时/编码风格的事情。.NET二进制文件在后台使用完全限定的名称。


3
这是否意味着较长的类和方法名称会对JIT编译时间产生较小但实际(如果无法衡量)的影响?
Jared Updike'5

8

对执行速度没有影响,但对编译速度/智能的影响可能会略有影响,因为有更多潜在的名称空间来搜索适当的类。我不太担心,但是您可以使用Organize Usings菜单项来删除using语句并对其进行排序。


8

以下链接很好地说明了为什么要删除未使用的引用,它说明了如何从应用程序中删除未使用的引用。

以下是链接的一些摘录:

  1. 通过在应用程序中删除任何未使用的引用,可以防止CLR在运行时加载未使用的引用模块。这意味着您将减少应用程序的启动时间,因为加载每个模块需要花费时间,并且避免了编译器加载永远不会使用的元数据。您可能会发现,根据每个库的大小,启动时间会明显减少。这并不是说您的应用程序一旦加载就会更快,但是知道您的启动时间可能会减少很方便。

  2. 删除任何未使用的引用的另一个好处是,您将减少与名称空间冲突的风险。例如,如果您同时引用了System.Drawing和,则System.Web.UI.WebControls在尝试引用Image该类时可能会发现冲突 。如果您的类中使用了与这些引用匹配的指令,则编译器将无法确定要使用哪些指令。如果您在开发时经常使用自动完成功能,则删除未使用的名称空间将减少您键入的文本编辑器中自动完成值的数量。


5

不,编译程序时涉及多个过程。当编译器开始查找引用(类,方法)时,它将仅使用代码上使用的那些引用。using指令仅告诉编译器在哪里查看。许多未使用的using语句可能会出现性能问题,但只是在编译时。在运行时,所有外部代码都已正确链接或作为二进制文件的一部分包含在内。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.