有人说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更快了,或者某些原本就是非托管的代码经过了一定的优化(比如更多的延迟加载等)。
关于更古老的部分,我也尝试看看能否找到相关信息。