【问题标题】:How is performance affected by an unused using directive?未使用的 using 指令如何影响性能?
【发布时间】:2009-07-22 02:31:10
【问题描述】:

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

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

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

【问题讨论】:

  • 我在询问之前确实搜索过它,但它没有出现。
  • FWIW,这篇文章有更好的 SEO:对我来说这是谷歌的第一个结果。在链接的两份原件中,一份不可用(已删除),另一份措辞不同,足以为这篇文章增加一些价值,即使只是作为重定向。
  • @DaveD 首先为您服务,因为 Google 知道您的确切偏好和搜索历史。在我朋友的电脑上不是第一个。

标签: c# .net visual-studio using


【解决方案1】:

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

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

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

【讨论】:

  • 使用次数越多,智能感知越慢
【解决方案2】:

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

以下是链接的部分摘录:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这是否意味着较长的类和方法名对 JIT 编译时间的影响很小但实际(如果无法衡量)?
        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2010-11-12
          • 2013-01-12
          • 1970-01-01
          • 1970-01-01
          • 2015-02-17
          • 1970-01-01
          • 2017-09-16
          • 1970-01-01
          • 2021-09-15
          相关资源
          最近更新 更多