转自:http://www.cnblogs.com/Interkey/p/UsingNameSpace.html

多余的Using Namespaces或引用会影响程序的执行效率么?

在.NET程序编写中,需要using相应命名空间或添加相应的References,可有时候没有使用到的命名空间也被添加到了Using Namespaces中,那么,这样会影响程序的执行效率么?


通过示例说明:

新建一Windows 控制台应用程序(基于.NET Framework 2.0)后项目代码里自动会添加

using System;
using System.Collections.Generic;
using System.Text;

三项命名空间的引用。

同时,在项目中的“引用”中自动添加了对 "System"、"System.Data"、"System.Xml" 的引用。 

编译生成!


用反编译软件(ILSpy.NET Reflector等)打开生成的应用程序。

(当然也可以将目标语言设置成IL查看IL代码,也可以通过自带的Ildasm.exe将生成的应用程序反编译成IL代码查看引用情况)

可以看到除了"using System;"外的其他using Namespaces语句都不在反编译得到的代码中。而"System"是Console静态类所在的命名空间。

而"引用"对应的"References"中只有一个"mscorlib",因为mscorlib.dll (多语言标准通用对象运行时库:Microsoft Standard Common Object Runtime Library)是CRL的必备,所以默认都已引用;而除了mscorlib.dll外的其他程序集都需要显式引用。更多请参考:类集与名称空间的关系


将未被引用到的Using Namespaces和References移除后,继续编译依然可以完成:

也就是说程序在编译过程中,多余的未被引用的命名空间或References不参与编译

另外,C#,VB.NET是解释型语言,由JIT即时编译,所以即使定义了未用到的变量,也不会影响程序的执行效率。

所以本人认为未被引用的Using Namespaces或References在程序编译时有一定的影响,但在程序执行时没性能影响。(仅从反编译角度,是不是有些牵强)

而默认添加的命名空间是最常用的,为了方便快速使用。

如有误,欢迎分析指正~

本文地址http://www.cnblogs.com/Interkey/p/UsingNameSpace.html


对于代码有洁癖的可以直接在Visual Studio的代码文档中 右键-组织using-移除和排序 命令将未被引用的using语句移除。(Visual Studio 2008及更高版本才有此菜单项)


本文参考了以下内容:

Namespaces
vs中程序集的引用
using了用不到的命名空间会影响服务器效率吗
正确区分类集、模块和名称空间
.NET会自动分析优化引用

多余的Using Namespaces或引用会影响程序的执行效率么?(转)的更多相关文章

  1. 多余的Using Namespaces或引用会影响程序的执行效率么?

    在.NET程序编写中,需要using相应命名空间或添加相应的References,可有时候没有使用到的命名空间也被添加到了Using Namespaces中,那么,这样会影响程序的执行效率么? 通过示 ...

  2. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

    为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...

  3. 关于数据库优化2——关于表的连接顺序,和where子句的前后顺序,是否会影响到sql的执行效率问题

    有好多时候,我们常听别人说大表在前,小表在后,包括现在好多百度出来的靠前的答案都有说数据库是从右到左加载的,所以from语句最后关联的那张表会先被处理.如果三表交叉,就选择交叉表来作为基础表.等等一些 ...

  4. 这台计算机上缺少此项目引用的 NuGet 程序包-缺少的文件是 ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 协助开发里面总有几个是极简爱好者,但是呢删了不该删的就会影响项目开发,下面看下完 ...

  5. 从系统的角度分析影响程序执行性能的因素——SA20225205 黄兴宇

    实验总结分析报告:从系统的角度分析影响程序执行性能的因素 1.请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的.自洽 ...

  6. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

  7. 这台计算机上缺少此项目引用的 NuGet 程序包,DotNetCompilerPlatform

    严重性 代码 说明 项目 文件 行 禁止显示状态错误 这台计算机上缺少此项目引用的 NuGet 程序包.使用“NuGet 程序包还原”可下载这些程序包.有关更多信息,请参见 http://go.mic ...

  8. 这台计算机上缺少此项目引用的Nuget程序包,请参考链接 不给出缺什么包的提示。

    这台计算机上缺少此项目引用的Nuget程序包,请参考链接   不给出缺什么包的提示. 解决办法: 1.卸载当前解决类库. 2.编辑当前项目类库文件. 3.删除节点 <Target Name=&q ...

  9. 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包

    将项目复制到其地方的时候编译会报错,按照官网方法也不行,从网上查了一个有用的方法如下 打开CSPROJ文件.删除如下代码,  <Import Project="..\packages\ ...

随机推荐

  1. traditional:true

  2. js判断是否微信浏览器打开

    function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)==&qu ...

  3. php打印xml格式数据

    在你要输出的xml前边加       header("Content-type:text/xml;charset=utf-8"); 这个上边不要有任何输出 打印用echo 别用va ...

  4. ECSTORE日期时间控件转换为时间戳的方法

    如果你在后台使用<{input type=”time” name=”time”}>的话,后台获取到的表单数据为: ["_DTYPE_TIME"]=> array( ...

  5. memcache运维整理

    memcache运维总结 第一部分:memcache安装 1.安装libevent 2.安装memcache 3.安装php的memcache扩展 4.测试 第二部分:memcache客户端操作 1. ...

  6. table-cell的手机应用场景

    前言 最近在前端观察看见了这篇老文章,看见了元素居中的5种办法,其中提到了display:table-cell这个css显示的新属性,按照当时的浏览器市场来说想必兼容性会是糟糕的一比,但是现在这坛老酒 ...

  7. hdu 相遇周期

    #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int ...

  8. cf A. Down the Hatch!

    http://codeforces.com/contest/332/problem/A #include <cstdio> #include <iostream> #inclu ...

  9. Codeforces 335B Palindrome

    http://codeforces.com/contest/335/problem/B 题意:  给定一个长度不超过5*10^4的只包含小写字母的字符串,要求你求它的回文子序列,如果存在长度为100的 ...

  10. python编程之字符串转处理

    比如255的16进制是FF. 转换成整型就是  int("FF",16)   console上输出就是255   int("FFFF",16)就是65535 如 ...