Estoy usando MySql Connector .NET para cargar una cuenta y transferirla al cliente. Esta operación es bastante intensa, teniendo en cuenta los elementos secundarios de la cuenta para cargar.¿Hay alguna diferencia (de rendimiento) entre Depurar y Liberar?
En el modo de depuración, tarda como máximo 1 segundo para cargar la cuenta. El promedio sería 500ms. En el modo de lanzamiento, se tarda de 1 a 4 segundos en cargar la cuenta. El promedio sería 1500ms.
Dado que no existe una directiva #if DEBUG
o similar en mi código, me pregunto de dónde viene la diferencia.
¿Existe una opción de compilación de proyecto que pueda cambiar? ¿O tiene que ver con MySql Connector .NET que tendría diferentes comportamientos dependiendo del modo de compilación?
EDIT: control de garrapatas.
Debug (Average: 213000 ticks)
730000
320000
60000
50000
190000
130000
210000
180000
160000
110000
390000
270000
150000
190000
230000
210000
150000
200000
190000
140000
Release (Average: 4404500 ticks)
12940000
170000
180000
80000
80000
130000
120000
5060000
5090000
130000
50000
10430000
25160000
150000
160000
130000
17620000
10160000
100000
150000
Comparación:
Release toma 20x el tiempo de depuración toma (comparación promedio).
4.404.500/213.000 = 20
Ahora, la primera operación es de hecho más tiempo, pero en general, por lo que son todas las otras veces para la liberación. ¿Alguna idea?
EDIT 2: Agregué incluso una prueba más amplia que calcula el tiempo total. Para cargas de 50 cuentas, toma un promedio de 4 segundos en depuraciones, y 40 segundos en lanzamiento. Estoy empezando a desesperarme por esto: es un problema serio de rendimiento para mi aplicación. ¿Alguien tiene una conjetura sobre cómo solucionar esto?
¿Cómo está capturando el tiempo que lleva cargar una cuenta? ¿Estás realizando la operación varias veces dentro de un ciclo y tomando el promedio? ¿O está iniciando la aplicación como un nuevo proceso cada vez? –
Existe una diferencia, excepto que generalmente es al revés, ya que la optimización del código no ocurre en el modo de depuración iirc. Sin embargo, puedo decir con certeza que el conector mysql .net nunca se ha comportado así en ningún proyecto en el que haya trabajado. –
Utilice un generador de perfiles. Cualquier otra cosa es adivinar. –