EDIT 1
no excluyo en absoluto que esto podría ser causado por algo efecto secundario muy básica de usar el Analizador (un cierto ajuste defectuoso en mi proyecto "regular")¿Iniciar LAN Profiler aumenta el rendimiento de la aplicación x20?
quería mejorar Computing Tiempo en mi aplicación, así que decidí pasar por un análisis exhaustivo de perfiles. Entonces Acabo de lanzar un .Net Memory Allocation Profiling para analizar mi aplicación.
Estaba completamente aturdido al ver la computación va x20 veces más rápido!
La aplicación consiste en leer datos de archivos binarios con BackgroundWorkers, procesarlos,
y almacenar resultados en una base de datos MSSQL. Cada ronda por lo general toma 20 segundos, y mientras que el perfil apenas toma 1 seg. Revisé y me aseguré de que los resultados fueran coherentes en ambos casos.
Un amigo experimentado de .Net me dijo que el generador de perfiles optimiza el enhebrado y que "de alguna manera" encuentra su camino a través del hilo Locks and Bottlenecks, pero no puedo creerlo.
Así que mis preguntas son:
- ¿Qué es exactamente lo que pase, cómo y por qué?
- ¿Cómo hacer que mi código se comporte así de forma nativa?
EDIT 2
I SÉ esto suena loco e increíble. Yo mismo todavía soy muy sospechoso. Pero es VERDADERO.
El código SAME se ejecuta muy rápido cuando lo ejecuta el generador de perfiles. Uso los MISMOS datos de prueba, y miro la MISMA salida informática. No puedo dar un simple proyecto de reproducción, ya que es un marco relativamente grande. Estoy usando el Visual Studio 2010 Profiler.
Voy a dar todos los detalles que pueda sobre el flujo y definitivamente publicaré una pista tan pronto como lo encuentre.
REGISTROS RUN regulares:
03/23/2011 18:04:34 | 180434.621 | JUEGO DE SIMULACIÓN [5] - [1] - [5 PC-1 0 [SET 1/48]
23/03/2011 18:05:01 | 180501.271 | PROCESAMIENTO DE TIEMPO: 00: 00: 26,6515244
etc ..
Profiler Run:
03/24/2011 11:38:15 | 113815.592 | JUEGO DE SIMULACIÓN [5] - [1] - [5 PC-1 0 [SET 1/48]
24/03/2011 11:38:17 | 113817.350 | PROCESAMIENTO DE TIEMPO: 00: 00: 01,7581005
etc ..
Datos 3: La pista
Ok ok ok mi mal (advertí en esa posibilidad de editar 1, ya que era demasiado increíble Lo siento) @Watts sugirió verificar si estaba en modo depuración o versión. que ya he hecho. PERO @SnowBear señaló que hay dos cosas diferentes: ejecutar la versión de depuración del software y ejecutar un software bajo el depurador . Me aseguré de que la configuración activa fuera LIBERACIÓN tanto en la compilación como en la ejecución VS2010. Sin embargo, como me estaba volviendo loco, decidí lanzar la Aplicación directamente desde el archivo exe en el bin/release. Y voilà ... los procesos tardaban 1 segundo cada uno. Ejecutando Profiler para salir del modo de depuración (ya sea que esté en modo de liberación o depuración) eso es lo que me confunde.
Gracias a All Case Closed.
Downvoting sin ningún comentario no es muy conveniente –
No lo creo. El objetivo de los profilers no es que hagan que su aplicación sea más rápida con solo ejecutarlos. En realidad, debe aplicar lo que aprende al ejecutarlos para optimizar su código. ** Si desea que alguien lo tome en serio, publique un pequeño proyecto de reprografía y el nombre del generador de perfiles que está utilizando. ** (No es mi voto negativo, lo intentaré para ver si puede confirmar esto) –
This realmente huele a Spam, lo siento. – Spence