Monitorar o tempo de execução de uma tarefa é uma necessidade comum em vários projetos, seja para identificação de problemas, geração de logs ou utilização da informação para fins de otimização.
Uma das práticas adotadas é registrar o horário de início e fim de execução da tarefa e calcular o tempo decorrido. Apesar de uma prática válida, a plataforma .NET possui a classe Stopwatch do namespace System.Diagnostics que simplifica esta atividade.
Vejamos um exemplo de uso:
List<Guid> guids = new List<Guid>(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 10; i++) { guids.Add(new Guid()); } stopwatch.Stop(); Console.WriteLine($"Tempo de execução em ms: {stopwatch.Elapsed.TotalMilliseconds}");
O uso da classe Stopwatch é muito simples. Primeiro criamos uma instância que será utilizada para monitorar um conjunto de instruções. Utilizamos os métodos Start() para dar início a contagem de tempo e Stop() para o encerramento, ou seja, o bloco de código que terá a contagem de tempo ficará entre o Start() e o Stop().
Em nosso exemplo escrevemos o total do tempo decorrido por meio da propriedade Elapsed da nossa instância, que neste caso está sendo obtida em milissegundos. Em resumo nosso exemplo apresentará o tempo decorrido para preencher uma lista com 10 Guids.
Se quiser saber mais sobre a classe Stopwatch sugiro dar uma olhada em https://learn.microsoft.com/pt-br/dotnet/api/system.diagnostics.stopwatch?view=net-8.0.