2010-09-21 11 views
6

Una de nuestras aplicaciones críticas de la compañía (C#) procesa imágenes hi-rez, y hemos realizado grandes esfuerzos para optimizarla. Realiza más de 2.5 millones de operaciones en ~ 2.5 segundos.El programa compilado se ejecuta MUCHO más despacio después de cambiar a VS 2010

Hemos utilizado VS 2005 para el año, y la semana pasada, trasladamos todo a VS 2010.

mismo código de proyecto.

Ahora, cuando construyo la aplicación y la ejecuto (fuera del VS 2010 IDE), la misma operación demora 5 segundos cada vez.

Este es un gran problema y me duele mucho el cerebro. Actualmente lo tengo configurado en modo de lanzamiento (lo mismo que tuve en VS 2005).

¿Alguna idea de lo que podría estar causando la duplicación del tiempo de ejecución cuando el código es exactamente el mismo?

+0

Cuando cambiaste a Visual Studio, ¿también cambiaste las versiones de Target Framework? –

+0

Sí, cambiamos a .NET 4 – Ducain

Respuesta

4

Probablemente esté viendo el cambio debido a que cambió de la orientación del .NET 2.0 runtime al .NET 4.0 runtime.

Menciona que ha optimizado altamente el código de rendimiento. Supongo que algunas de las optimizaciones realmente están perjudicando su rendimiento en lugar de ayudarlo ahora (ya que los detalles de la implementación interna del Framework en el que confió para la optimización han cambiado).

Mi sugerencia sería ejecutar su código a través de un Analizador (como Redgate's ANTS Performance Profiler o JetBrain's DotTrace) y ver dónde están los nuevos cuellos de botella. Puedes avanzar desde allí.

+0

Voy a echarles un vistazo. Sin embargo, las optimizaciones son bastante básicas/sólidas: no usar un Int32 cuando un Byte funcionará, etc. No hay trucos de fantasía. – Ducain

+0

@Ducain: si lo que Justin sugiere es cierto, también puede intentar establecer .NET 2.0 en VS 2010 y ver si puede volver a obtener el rendimiento en el que estaba. –

+0

@Adrift - lamentablemente no puedo. Un proyecto al que hace referencia esta aplicación ahora apunta a 4 (por necesidad). El proyecto es una capa de acceso a datos y, por lo tanto, no afecta el área de código que estoy tratando aquí, pero para compilar la solución, tengo que apuntar a .NET 4 ahora. – Ducain

Cuestiones relacionadas