SUMTEC -- There's a thing in my bloglet.

But it's not only one. It's many. It's the same as other things but it exactly likes nothing else...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  263 随笔 :: 19 文章 :: 3009 评论 :: 74万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

有人说VS2003还是2005可能是用C#开发,由于太慢了,所以后来的版本改成了使用C++开发。可惜的是没有给出地址,这基本上等于没有说。嗯,我也记得好像谁说过外星人和秦始皇握过手,千真万确,还有视频,不过具体Url我忘了,你们找找吧。

 

不过有些东西还是可以研究的,比如说,从2005到2010,Visual Studio发生了什么样的变化呢?我们可以研究一下这个目录里面的exe和dll:

%program files%/Microsoft Vistual Studio ?/Common7/IDE 

 

如果我们用Reflector打开看一下,就会发现使用.NET和不使用.NET的文件的变化:

VS2005 VS2008 VS2010 
File Number % File Size % File Number % File Size % File Number % File Size %
.NET 67 61.47% 17,421,688 43.64% 98 74.24% 23,593,680 49.18% 113 74.83% 30,139,584 48.73%
Non-.NET 42 38.53% 22,502,040 56.36% 34 25.76% 24,378,568 50.82% 38 25.17% 31,712,768 51.27%
Total 109 100% 39,923,728 100% 132 100% 47,972,248 100% 151 100% 61,852,352 100%

显然,在文件数量及大小上面,VS2008和2010涉及.NET的比重,都比VS2005高出很多。这里面的“涉及.NET”指的是有CIL头,因为文件是在太多,不可能一个个去研究,随便抽查了一下,发现大部分都确实是使用托管代码的。而VS2010和VS2008在比重上面的变化并不是很大,但至少可以发现,涉及.NET的数量依旧是在增加的。 从这一个结果看,我没有什么理由相信,VS2010比VS2005使用了更多的非托管开发方式来编写。(注意:这句话不能理解为,VS2010一定使用了更多托管开发方式来编写。)

 

分析还发现,devenv.exe等不少重要的,看起来似乎是核心的那些文件,从始至终都是非托管的。当然了,VS2002/2003等是一个什么样的情况,因为手头并没有这样的安装,无法查看。如果有谁具备条件,不妨把结果上报上来。(尽管我记得那时候也看过,好像也是非托管的传统exe,不过记忆是一种不可靠的东西,而且我也暂时无法提出证据,因此我说的这个不靠谱的。)

 

那么具体来讲,VS系列到底增加删除了那些非托管程序呢?(注意啊:我说的非托管一律指没有CIL头的文件,而不是指有CIL头的非托管代码。)

VS2005->VS2008 VS2008->VS2010
+ - + -
cmddef.dll coloader80.dll custsat.dll
msdis160.dll msdis150.dll DDConfigCA.exe DevCfg.dll
msenc90.dll msenc80.dll DebuggerProxy.dll
PEVerify.exe Dip.dll
sqlceca30.dll Microsoft.VisualStudio.COmpilerHostObjectsProxy.dll
sqlcecompact30.dll msdis170.dll msdis160.dll
sqlceer30en.dll msobj100.dll msobj80.dll
sqlceme30.dll mspdb100.dll mspdb80.dll
sqlceoledb30.dll mspdbst.dll
sqlceqp30.dll msvbide.dll msvb7.dll
sqlcese30.dll pidgenx.dll
WDE.dll ProductKeyDlg.dll
WorkflowProject.dll ProjWiz.dll
rdbwiz.exe
sqmapi.dll
StorePid.exe
vbdebug.dll
WDE.dll
 

 

从这一点上看,似乎也确实没有发生了什么本质的变化。根据我自己从VS2002/2003/2005/2008/2010的使用经验上看,基本上是越来越快的(好像中间有一个版本相对会慢一点,确实忘了是哪一个了)。至少,最近从2008转到2010,确实感觉IDE的速度变快了。具体快了多少,我也没有测过,因此也能说我证明VS2010就是快。不过,从上面这个不太严谨的数据分析看,VS2010变快还是变慢,很可能跟是否有东西用C++或者C#重写了的关系不大。更可能的是.NET 4.0更快了,或者某些原本就是非托管的代码经过了一定的优化(比如更多的延迟加载等)。


关于更古老的部分,我也尝试看看能否找到相关信息。 

posted on   Sumtec  阅读(5217)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
历史上的今天:
2004-06-22 .NET CF杂谈系列(二)—— 拿起你的苍蝇拍
点击右上角即可分享
微信分享提示