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

时间:2009-07-22 02:31:11

标签: c# .net visual-studio using

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

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

我想知道如果从未访问过的using语句仍然在文件的顶部提到,是否会对程序性能产生任何负面影响。

6 个答案:

答案 0 :(得分:114)

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

它可能会影响IDE的性能和整个编译阶段。原因是它创建了一个必须进行名称解析的额外命名空间。但是,这些往往很小,在大多数情况下不应对IDE体验产生明显影响。

出于同样的原因,它也会影响在调试器中计算表达式的性能。

答案 1 :(得分:13)

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

答案 2 :(得分:8)

以下链接A good read on why to remove unused references说明了如何从应用程序中删除未使用的引用。

以下是该链接的一些摘录:

  1. 删除应用程序中任何未使用的引用,即可 阻止CLR加载未使用的引用模块 运行。这意味着你将减少你的启动时间 应用程序,因为加载每个模块需要时间并避免 使编译器加载永远不会使用的元数据。你可以 根据每个库的大小,找到你的启动时间 明显减少了。这并不是说你的申请会 一旦加载就会变得更快,但要知道你的情况会非常方便 启动时间可能会减少。

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

答案 3 :(得分:7)

对执行速度没有影响,但可能会对编译速度/智能感知产生轻微影响,因为有更多潜在的命名空间来搜索正确的类。我不会太担心它,但您可以使用“组织使用”菜单项来删除和排序使用语句。

答案 4 :(得分:4)

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

答案 5 :(得分:4)

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