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

当你创build一个新的页面或项目时,Visual Studio会自动为你创build使用语句。 其中一些你永远不会使用。

Visual Studio具有“删除未使用的用户”的有用function。

我想知道如果从来没有被访问过的using语句仍然在文件的顶部被提及,那么对程序性能是否有负面的影响。

未使用的使用对应用程序的运行时性能没有影响。

它会影响IDE的性能和整个编译阶段。 之所以这样,是因为它创build了一个额外的名称空间,其中必须进行名称parsing。 但是,这些对于大多数情况下的IDE体验应该不会有明显的影响。

由于相同的原因,也会影响在debugging器中评估expression式的性能。

不,这只是一个编译时间/编码风格的东西。 .NET二进制文件使用完全限定名称。

对执行速度没有影响,但编译速度/ intellisense可能会有一些微小的影响,因为有更多潜在的命名空间来search适当的类。 我不会担心太多,但是您可以使用Organize Usings菜单项来移除和sorting使用语句。

不执行的代码不会影响程序的性能。

不,编译程序时涉及到几个过程。 当编译器开始寻找引用(类,方法)时,它将只使用代码中使用的引用。 using指令只告诉编译器在哪里查找。 很多未使用的使用语句可能会有性能问题,但只是在编译时。 在运行时,所有外部代码被正确地链接或包含在二进制文件中。

以下链接关于为什么删除未使用的引用的一个很好的阅读说明如何从应用程序中删除未使用的引用是有用的。

下面是链接的一些摘录:

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

  2. 删除任何未使用的引用的另一个好处是您将减less与命名空间冲突的风险。 例如,如果您同时引用了System.DrawingSystem.Web.UI.WebControls ,则可能会发现在尝试引用Image类时会发生冲突。 如果你在你的类中使用了与这些引用相匹配的指令,那么编译器就不能分辨哪一个用到了。 如果您在开发时经常使用自动完成function,删除不使用的命名空间将会减less键入时文本编辑器中自动完成值的数量。