Por experiência pessoal, a System.Diagnostics.Stopwatch
classe pode ser usada para medir o tempo de execução de um método, no entanto, CUIDADO : Não é totalmente preciso!
Considere o seguinte exemplo:
Stopwatch sw;
for(int index = 0; index < 10; index++)
{
sw = Stopwatch.StartNew();
DoSomething();
Console.WriteLine(sw.ElapsedMilliseconds);
}
sw.Stop();
Resultados de exemplo
132ms
4ms
3ms
3ms
2ms
3ms
34ms
2ms
1ms
1ms
Agora você está se perguntando; "bem, por que demorou 132ms na primeira vez e significativamente menos no restante do tempo?"
A resposta é que Stopwatch
não compensa a atividade de "ruído de fundo" no .NET, como o JITing. Portanto, na primeira vez em que você executa seu método, o .NET JIT é o primeiro. O tempo que leva para fazer isso é adicionado ao tempo da execução. Da mesma forma, outros fatores também farão com que o tempo de execução varie.
O que você realmente deveria procurar por precisão absoluta é o Perfil de Desempenho !
Dê uma olhada no seguinte:
O RedGate ANTS Performance Profiler é um produto comercial, mas produz resultados muito precisos. - Melhore o desempenho de seus aplicativos com o perfil .NET
Aqui está um artigo do StackOverflow sobre criação de perfil: - Quais são alguns bons perfis de .NET .NET?
Também escrevi um artigo sobre o perfil de desempenho usando cronômetro que você pode querer olhar - perfil de desempenho no .NET
ThreadPool.QueueUserWorkItem(delegate { CopyFiles(folder, dest); });
interior, mas o cronômetro para antes que tudo seja feito.