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

Kdg*_*Dev 103 .net c# using visual-studio

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

Visual Studio具有"删除未使用的使用"的有用功能.

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

Jar*_*Par 123

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

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

由于同样的原因,它还会影响在调试器中计算表达式的性能.

  • 使用的越多,Intellisense就越慢 (34认同)

Chr*_*isV 13

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

  • 这是否意味着较长的类和方法名称对JIT编译时间有一个小的但实际的(如果不可测量的)影响? (2认同)

Dee*_*ani 8

以下链接很好地阅读了为什么要删除未使用的引用,这解释了如何从应用程序中删除未使用的引用.

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

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

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

  • 1.与所有其他答案相矛盾。所以我想这不是真的或者不相关?有人可以证实谁真正知道吗? (2认同)

tva*_*son 7

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


Fre*_*ddy 5

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


Jef*_*ard 5

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