После того, как я обновил свои проекты до .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 секунд
- Target Framework 3.0: ~ 0.25 секунд
- Target Framework 3.5: ~ 0.25 секунд
- VS2010
- Целевая структура 2.0: ~ 3,8 секунды
- Target Framework 3.0: ~ 3,8 секунды
- Target Framework 3.5: ~ 1.51 секунд
- Target Framework 3.5 Профиль клиента: ~ 3,8 секунды
- Target Framework 4.0: ~ 1.01 секунд
- Target Framework 4.0 Профиль клиента: ~ 1,01 секунды
Мой первоначальный вывод, очевидно, заключается в том, что программы, скомпилированные с VS2008, работают быстрее, чем программы, скомпилированные с VS2010.
Может ли кто-нибудь объяснить эти изменения производительности между VS2008 и VS2010? и между различными целевыми структурами внутри самого VS2010?