2010-12-13 6 views
7

No sé si el título tiene sentido, pero lo que intento hacer es sincronizar 2 métodos diferentes y ver cuántas veces ejecutan por segundo, es decir, cada 10 segundos.Cómo perfil de métodos C# por segundo?

Por ejemplo:

DividePolygons1(Polygon[] polys) 
DividePolygons2(Polygon[] polys) 

DividePolygons1 ran: 
1642 times per 1 second 

DividePolygons2 ran: 
1890 times per 1 second 

Respuesta

10

La clase System.Diagnostics.Stopwatch le ayudará a aquí, pero tenga cuidado de usar los resultados de alguna manera para que el optimizador no elimina la lógica que está tratando de medir.

Más allá de eso, ejecute el código que está perfilando varios millones de veces en un bucle (ajuste el recuento de iteraciones para que tome entre 1 y 30 segundos), luego divida el número de iteraciones por el tiempo necesario para obtener el rendimiento en ejecuciones por segundo.

+5

Y use una compilación de liberación y no tenga un depurador conectado al iniciar el programa. Y mejor ejecute todo el código una vez antes de comenzar el punto de referencia para que los efectos de arranque como JIT no se midan. – CodesInChaos

+1

No se olvide de tener cuidado con la localidad de referencia. Puede tomar más tiempo dividir los mismos polígonos exactos si no siempre se crean al mismo tiempo. –

+0

@CodeInChaos, ¿cómo me aseguro de que no haya un depurador conectado? usar la compilación de lanzamiento hace esto automáticamente? –

2

Lo que yo haría:

  • Iniciar un Stopwatch.
  • En esas funciones, incremente una variable simple (larga, flotante o doble, dependiendo de la frecuencia con la que piense que se llamarán), por lo que se incrementa en cada llamada.
  • Llamar a la primera función.
  • Detenga el Stopwatch y compruebe el TotalSeconds con la variable que he estado incrementando.
  • Repita para la segunda función.
1

Visual Studio 2010 tiene un generador de perfiles que podría determinar el número exacto de llamadas a métodos por unidad de tiempo.

+0

Gracias, ¿está en la versión pro? (no último) –

+1

El perfilador está disponible en las ediciones Premium y Ultimate, pero no en Pro. Consulte http://www.microsoft.com/visualstudio/en-us/products en "Depuración y diagnóstico". –

Cuestiones relacionadas