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...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

有人说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 2010-06-22 18:23  Sumtec  阅读(5196)  评论(2编辑  收藏  举报