Después de actualizar mis proyectos a .NET 4.0 (con VS2010) me di cuenta de que se ejecutan más despacio que en .NET 2.0 (VS2008). Así que decidí referencia una aplicación de consola sencilla tanto en VS2008 & VS2010 con varios marcos de destino:¿Son .NET 4.0 Runtime más lentos que .NET 2.0 Runtime?
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);
}
}
}
}
He aquí los resultados:
- VS2008
- objetivo Framework 2.0: ~ 0,25 segundos
- Target Framework 3.0: ~ 0.25 segundos
- Target Framework 3.5: ~ 0.25 seconds
- VS2010
- objetivo Framework 2.0: ~ 3,8 segundos
- Framework Objetivo 3.0: ~ 3,8 segundos
- Marco Objetivo 3.5: ~ 1,51 segundos
- marco destino de perfil 3.5 Cliente: ~ 3.8 segundos
- Target Framework 4.0: ~ 1.01 segundos
- Target Framework 4.0 Perfil del cliente: ~ 1.01 segundos
Mi primera conclusión es, obviamente, que los programas compilados con VS2008 actuar más rápido que los programas compilados con VS2010.
¿Alguien puede explicar esos cambios de rendimiento entre VS2008 y VS2010? y entre diferentes marcos de objetivos dentro de VS2010?
¿Está ejecutando estos a través del depurador en Visual Studio o ejecuta las aplicaciones en modo de lanzamiento? –
¿Has probado varias carreras para minimizar las influencias externas? Tal como está, los resultados podrían deberse solo a la casualidad. A pesar de que * parece * concluyente, una sola ejecución arrojaría casi * no * significado en esta prueba. –
¿Has intentado ejecutarlo fuera VS? – eflles