【问题标题】:Do the amount of namespaces affect performance?命名空间的数量会影响性能吗?
【发布时间】:2011-05-21 16:59:25
【问题描述】:

在 Visual Studio 中有一个命令可以删除未使用的 using 语句

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

未使用的使用是否会影响性能?

【问题讨论】:

  • 即使没有性能损失,这也不是一个好主意。我最讨厌看到一个类的使用并不得不弄清楚它是哪个特定的,因为有人在阳光下的每个命名空间都有using-d。
  • 我知道你的意思。然而,每项任务都必须优先考虑和计划:)。

标签: c# asp.net performance


【解决方案1】:

代码文件中使用的命名空间数量不会影响应用程序的运行时性能。它确实对编译时间有影响,因为编译器必须在这些命名空间中搜索其他项目,例如类型和扩展方法。

我知道的唯一影响命名空间数量的运行时是

  • 调试:给定代码文件中使用的命名空间集存储在 PDB 中,并在名称解析期间由调试器查阅。从理论上讲,拥有大量命名空间可能会影响调试器的性能,但实际上我还没有看到这是一个问题。
  • Asp.Net:如果使用在用户第一次查看页面时编译页面的部署模型,则命名空间的数量会影响第一次查看给定页面时的加载时间

【讨论】:

  • 当涉及到 ASP.NET 时,页面不是在用户进入根文件夹时选择性编译的吗?因此,性能受到打击?还是我离这儿很远?参考:msdn.microsoft.com/en-us/library/ms178466.aspx
  • @subt13 它确实会影响用户首次使用时编译的 ASP.Net 页面的启动时间。我会添加那个场景。
  • 优秀。很好的答案/cmets。
【解决方案2】:

我确信某处(可能在编译期间)会受到性能影响,但它可能可以忽略不计。无论哪种方式,我都建议运行该命令 - 它会消除潜在的性能损失,并使您的代码更易于阅读和维护。它会从智能感知中删除未使用的命名空间,从而更容易编码:)

【讨论】:

    【解决方案3】:

    未使用的 using 语句不会影响性能。它们只需要在编译时进行评估。

    【讨论】:

      【解决方案4】:

      没有。命名空间用于在编译时解析类名。编译后,你的程序集只包含完全限定的类名,如System.Collections.Generic.List<int> myList = new System.Collections.Generic.List<int>(),所有的使用都消失了。

      【讨论】:

        【解决方案5】:

        仅当编译器需要迭代命名空间以查找引用类型时,它才会影响编译时间。 (无论如何,这并不算多。)它根本不会影响运行时性能。

        【讨论】:

          【解决方案6】:

          我一直以为它们被编译器删除了。

          【讨论】:

          • 确实,它们只被编译器使用。在运行时,命名空间只是完全限定类名的一部分。
          猜你喜欢
          • 1970-01-01
          • 2016-06-06
          • 1970-01-01
          • 1970-01-01
          • 2011-02-25
          • 1970-01-01
          • 2011-12-31
          • 2011-01-05
          • 2010-09-09
          相关资源
          最近更新 更多