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