2012-06-21 22 views
7

¿Hay alguna forma de encontrar el tamaño de un código y cuál es su tiempo de ejecución para poder comparar dos códigos y decidir cuál es mejor?C# Tamaño del código y tiempo de ejecución del código

Por ejemplo digamos que quiero encontrar el tiempo tamaño y la ejecución de este Código 1

for(int i=0; i<5; i++) 
{ 
    sum+=1; 
} 

y este Código

for(int i=0; i<=4; i++) 
{ 
    sum = sum + 1; 
} 

para decidir qué es mejor (no me importa este ejemplo ahora). Por ejemplo, el resultado será:

Code 1: 
Size: ? KB 
Time: ? ms 

Code 2: 
Size: ? KB 
Time: ? ms 
+1

¿Por qué no usar 'sum ++'? Utiliza 'inc' en lugar de' add'. Y 'inc' es generalmente más rápido ... –

+0

* (Después de la traducción del MSIL) –

+0

@ColeJohnson Supongo que es el tipo de optimización que un compilador/JITter está haciendo por usted – Servy

Respuesta

15

Puede utilizar ANTS Profiler http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/ (producto pagadero pero tienen una versión de prueba) o algún otro producto Profiler (ANTS, vTune, OptimizeIt, DevPartner, YourKit, dotTrace) en el mercado.

También puede implementar las funciones usted mismo configurando algunas pruebas unitarias que ejecutan esas 2 funciones usando una instrumentación manual StopWatch para comparar el tiempo de ejecución (más rápido y menos costoso). Las pruebas unitarias también le permitirán asegurarse de no tener regresiones en el rendimiento si necesita cambiar la implementación más adelante. http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

var stopWatch = new Stopwatch(); 
    stopWatch.Start(); 
    var result = CallFunction(); 
    stopWatch.Stop(); 
    var executionTime = stopWatch.Elapsed; 
+0

Gracias por el código y por enumerar todos los productos – a1204773

+0

Puedo sugerir el uso de ['Stopwatch.StartNew()'] (http://msdn.microsoft.com /en-us/library/system.diagnostics.stopwatch.startnew.aspx)? – Adam

2

Puede utilizar la clase FileInfo (Consulte la propiedad Length) para determinar el tamaño de un archivo.

Puede usar la clase Stopwatch para determinar cuánto tiempo lleva ejecutar el programa.

+0

Gracias por Stopwatch pero FileInfo no era lo que necesitaba – a1204773

3

para medir el tiempo de ejecución se debe utilizar StopWatch - Usted tendrá que ejecutar múltiples iteraciones múltiples veces y promediar hacia fuera si quieres un punto de referencia adecuado.

var sw = new StopWatch(); 
sw.Start(); 

// do a million iterations 

sw.Stop(); 

var time = sw.Elapsed; 

en cuanto a tamaños de memoria - se puede utilizar una de las muchas perfiladores de memoria disponibles - ANTS memory profiler, dotTrace son dos opciones comerciales.

+0

Gracias por el código y por los productos – a1204773

Cuestiones relacionadas