2011-06-27 7 views
8

Instalamos miniprofiler. Ha sido una experiencia edificante, pero ahora vemos que nuestras consultas de bases de datos se ejecutan 3 veces más rápido con el generador de perfiles habilitado que con el que está deshabilitado.Miniprofilador: el sitio es inexplicablemente rápido

El único código que cambiamos en nuestra aplicación era para añadir el profiledDbConnection:

public static DbConnection GetOpenConnection(string connectionString) 
{ 
    var cnn = new System.Data.SqlClient.SqlConnection(connectionString); 
    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current); 
} 

Linq2Sql es repente ... rápido.

No me quejo, pero ¿por qué sucede esto?

+2

Lo único que me viene a la mente es que quizás agregar ProfiledDbConnection ha causado que la consulta devuelva elementos en caché, pero eso es una suposición total ... –

+4

no hay nada que hacer para acelerar el rendimiento, la expectativa es que el rendimiento ser ligeramente más lento cuando se habilita el perfil. Dado que este golpe solo afecta a una fracción de los usuarios (desarrolladores), es aceptable. –

+0

Que es lo que esperaba ... pero eso no es lo que estamos observando. Yo, por mi parte, estoy desconcertado. –

Respuesta

5

¿Qué quiere decir con "las consultas de la base de datos se ejecutan 3 veces más rápido"?

  1. Si ejecuta el Analizador de SQL, ¿ve que el tiempo de ejecución de db es 3 veces menor?
  2. ¿El tiempo para ejecutar un método de alto nivel en su código que finalmente consulta la base de datos es 3 veces menor?

Si es el caso 1 que la diferencia estará en el SQL generado - compare ambas declaraciones. Si es el caso 2, ejecute un generador de perfiles C# (Ants, dotTrace) y compare el tiempo de ejecución de todos los métodos.

La diferencia de esta magnitud estará relacionada con una ruta de ejecución totalmente diferente; tal vez no esté haciendo un ciclo pesado o esté obteniendo datos de la memoria caché.

Antes que nada, puede verificar si está llegando a la base de datos y el número de consultas es exactamente el mismo.

Cuestiones relacionadas