me pareció una buena question para medir el rendimiento de la función, y las respuestas recomiendan usar cronómetro de la siguiente manera¿Mejores prácticas para el cronómetro en la máquina de múltiples procesadores?
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
¿Pero esto es válido si está ejecutando debajo de la máquina procesadores multi? el hilo se puede cambiar a otro procesador, ¿o sí? También lo mismo debería ser en Enviroment.TickCount. Si la respuesta es sí debería envolver mi código dentro BeginThreadAffinity de la siguiente manera
Thread.BeginThreadAffinity();
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
Thread.EndThreadAffinity();
PS
La conmutación puede ocurrir sobre el nivel del hilo no sólo el nivel de procesador, por ejemplo, si la función se está ejecutando en otro hilo para que el sistema pueda cambiarlo a otro procesador, si eso sucede, ¿el cronómetro será válido después de este cambio?
No uso del cronómetro para medir perfromance solamente, sino también para simular la función de temporizador utilizando Thread.Sleep (para evitar la superposición de llamada)
si la función se ejecuta en un hilo de fondo, esto significa que el hilo de función puede cambiar a otro procesador que produce error en las medidas –
Según MSDN: "Los hilos de fondo son idénticos a los de primer plano, excepto que los hilos de fondo no evitar que un proceso termine ". Ref: http: // msdn.microsoft.com/en-us/library/system.threading.thread.isbackground.aspx –
@Tormod Fjeldskår, hilos frontales/de fondo se puede cambiar a otros procesadores de tal modo que no se preocupan por su tipo, pero lo mencioné en mi comentario para ejemplo no más –