我将项目升级到.NET 4.0(使用VS2010),发现其运行速度比.NET 2.0(VS2008)慢。因此,我决定在VS2008和VS2010中使用各种目标框架对简单控制台应用程序进行基准测试:
using System;
using System.Diagnostics;
using System.Reflection;
namespace RuntimePerfTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Assembly.GetCallingAssembly().ImageRuntimeVersion);
Stopwatch sw = new Stopwatch();
while (true)
{
sw.Reset();
sw.Start();
for (int i = 0; i < 1000000000; i++)
{
}
TimeSpan elapsed = sw.Elapsed;
Console.WriteLine(elapsed);
}
}
}
}
以下是结果:
- VS2008
- 目标框架 2.0: ~0.25 秒
- 目标框架 3.0: ~0.25 秒
- 目标框架 3.5: ~0.25 秒
- VS2010
- 目标框架 2.0: ~3.8 秒
- 目标框架 3.0: ~3.8 秒
- 目标框架 3.5: ~1.51 秒
- 目标框架 3.5 客户端配置文件: ~3.8 秒
- 目标框架 4.0: ~1.01 秒
- 目标框架 4.0 客户端配置文件: ~1.01 秒
我的初步结论显然是,用VS2008编译的程序比用VS2010编译的程序运行更快。
有人能解释一下在VS2008和VS2010之间以及在VS2010内部不同的目标框架之间性能变化的原因吗?