多余的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或引用会影响程序的执行效率么?的更多相关文章
- 多余的Using Namespaces或引用会影响程序的执行效率么?(转)
转自:http://www.cnblogs.com/Interkey/p/UsingNameSpace.html 多余的Using Namespaces或引用会影响程序的执行效率么? 在.NET程序编 ...
- SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率
为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...
- 关于数据库优化2——关于表的连接顺序,和where子句的前后顺序,是否会影响到sql的执行效率问题
有好多时候,我们常听别人说大表在前,小表在后,包括现在好多百度出来的靠前的答案都有说数据库是从右到左加载的,所以from语句最后关联的那张表会先被处理.如果三表交叉,就选择交叉表来作为基础表.等等一些 ...
- 这台计算机上缺少此项目引用的 NuGet 程序包-缺少的文件是 ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 协助开发里面总有几个是极简爱好者,但是呢删了不该删的就会影响项目开发,下面看下完 ...
- 从系统的角度分析影响程序执行性能的因素——SA20225205 黄兴宇
实验总结分析报告:从系统的角度分析影响程序执行性能的因素 1.请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的.自洽 ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
- 这台计算机上缺少此项目引用的 NuGet 程序包,DotNetCompilerPlatform
严重性 代码 说明 项目 文件 行 禁止显示状态错误 这台计算机上缺少此项目引用的 NuGet 程序包.使用“NuGet 程序包还原”可下载这些程序包.有关更多信息,请参见 http://go.mic ...
- 这台计算机上缺少此项目引用的Nuget程序包,请参考链接 不给出缺什么包的提示。
这台计算机上缺少此项目引用的Nuget程序包,请参考链接 不给出缺什么包的提示. 解决办法: 1.卸载当前解决类库. 2.编辑当前项目类库文件. 3.删除节点 <Target Name=&q ...
- 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包
将项目复制到其地方的时候编译会报错,按照官网方法也不行,从网上查了一个有用的方法如下 打开CSPROJ文件.删除如下代码, <Import Project="..\packages\ ...
随机推荐
- 解决Windows Server2008 R2中IE开网页时弹出阻止框(Windows Server2008网页无法打开的问题)
相信使用Windows Server2008的朋友都遇到过这种情况,用IE打开网站时会弹出“Internet Explorer增强安全配置正在阻止来自下列网站的此应用程序中的内容”的对话框.如下图所示 ...
- VS2010安装失败解决办法
1. 运行regedit打开注册表: 2. 找到HKEY_LOCAL_MACHINE\SOFWARE\ Microsoft\ Internet Explorer\ MAIN: 3. MAIN子键的权限 ...
- 精选29款非常实用的jQuery应用插件
今天我们来分享一些实用的jQuery应用插件,没有特别花哨,但都比较实用,jQuery菜单.jQuery图片都有涉及到,一起来看看. 1.jQuery+CSS3仿IOS无线局域网Wifi DEMO演示 ...
- React Native ——实现一个简单的抓取github上的项目数据列表
/** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; var React ...
- Firefox火狐添加书签功能失灵解决办法
一直使用firefox,书签管理用的是插件Tabmix.感觉很好,只是不知道从那天起添加书签就不灵了!不论是Ctrl+D快捷键,还是Add Bookmark Here2插件,甚至“将此页加为书签”的菜 ...
- tmux protocol version mismatch (client 7, server 6)
$ tmux attach protocol version mismatch (client 7, server 6) $ pgrep tmux 3429 $ /proc/3429/exe atta ...
- C#的设计模式分为3大类23种
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method ...
- Netty4 中的内存管理
在Netty4中引入了新的内存管理机制极大地提升其性能,本文将对该内在管理机制进行剖析. 这里有篇文章讲述了在推特(Twitter)内部 使用Netty的状况以及Netty4所带来的性能收益. 在分析 ...
- 实现3D旋转效果的方法
Android中有一种旋转效果,是将一个图片进行360度的旋转. Matrix的作用是对平面上的View进行缩放.平移.旋转,每一种操作都配了setXXX.preXXX.postXXX三个函数. Ca ...
- zepto - reduce
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce var ss ...