Estoy investigando el tiempo que tarda una operación concreta en completarse. La operación es similar a la siguiente:La aplicación se ejecuta más rápido con el análisis de rendimiento de estudio visual
Parallel.ForEach(items, item => SaveScheme(item));
El método SaveScheme
trabaja con una base de datos: ejecuta algunas consultas y trabaja con la información. La cantidad de elementos en la colección items
puede ser lo suficientemente grande.
Cuando ejecuto esta operación, demora unos 20-40 segundos en completarse. Pero cuando lo ejecuto con un perfil activado, ¡solo lleva 3 segundos!
No se encontró información sobre este problema. Mi única conjetura es que con el perfil Parallel.ForEach
crea más hilos que sin él, pero no estoy seguro, e incluso si es cierto, no sé qué hacer con él.
Entonces, ¿por qué sucede eso y cómo puedo obtener este rendimiento cuando ejecuto la aplicación sin crear perfiles?
UPD. Parallel
no tiene nada que ver con esto: ¡Probé con el simple foreach
y la operación aún se completa en 3 segundos!
hmm Extraño, en realidad se ralentizará ... – Anuraj
¿Has probado el Visualizador de Concurrencia? – h1ghfive
He probado el Visualizador de Concurrencia, pero lo que vi allí no me dice nada. Sé cuántos hilos hay, etc., pero sin profiler no sé qué sucede cuando la operación dura 40 segundos. Entonces, no puedo compararlo. – STiLeTT