Conheça a classe Stopwatch do C#
Fala galera já faz um tempo que não posto nada por aqui, pois ando estudando novas tecnologias e complica de gravar novas vídeo aulas para vocês.
Então resolvi compartilhar uma dica simples, útil e que ainda existem muitos desenvolvedores que não conhecem.
Irei falar sobre uma classe no C# que tem a função de cronometro.
Enquanto DateTime é bom para obter o valor atual da data e hora, não é exatamente preciso ou leve. Assim, ao sincronizar um processo, uma maneira melhor de fazer isso é usar a classe Stopwatch a partir do namespace System.Diagnostics.
Veja um exemplo de como funciona!
1 2 3 4 5 6 7 8 9 10 11 |
// também é possível criar uma instancia com new var sw = Stopwatch.StartNew (); // Faça algum trabalho aqui, por enquanto, vamos apenas esperar um tempo Thread.Sleep (5000 ); //Para a contagem do cronometro sw.Stop (); //Imprime na tela o resultado Console.WriteLine ( "Aguardando {0} ms" , sw.ElapsedMilliseconds); |
Este código terá como resultado:
1 |
Aguardando 4999 ms |
Existem algumas propriedades que podemos usar para ver quanto tempo passou entre os métodos Start () , StartNew () e Stop ():
Elapsed – Retorna uma TimeSpan com o tempo decorrido.
ElapsedMilliseconds – Retorna um long com o número de milissegundos decorridos.
ElapsedTicks – Retorna um long com o número de tiques decorridos no cronômetro .
Os dois primeiros são auto-explicativos, o último precisa de mais uma explicação, pois pode ser uma fonte de confusão.
ElapsedTicks são baseados em uma combinação do hardware da máquina e do sistema operacional. Com isso você pode ter uma diferença de 100 nanossegundos de diferença entre os intervalos.
Mostrando a diferença:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Inicia a contagem var sw = Stopwatch.StartNew (); //Simulando o tempo de processamento de alguma rotina Thread.Sleep (5000 ); //Para a contagem sw.Stop (); // Resultado que depende da maquina Console.WriteLine ( "ElapsedTicks é:" + sw.ElapsedTicks); //Resultado que independe da maquina Console.WriteLine ( " Elapsed.Ticks é:" + sw.Elapsed.Ticks ); |
Por exemplo, se eu executar isso na minha máquina atual, vejo a seguinte saída:
1 2 |
ElapsedTicks são: 9973892461 Elapsed.Ticks são: 49993947 |
Considerações finais:
Se você ainda costuma medir o tempo de processamento com Datetime, pare agora mesmo e use a classe Stopwatch, ela além de ser mais leve, oferece outros recursos interessantes que não mencionei aqui nesse post.
Bom espero que tenham gostado da dica!
Até o próximo post!
About author
You might also like
Veja como usar a classe Faker no C#
Share this on WhatsAppE ai pessoal, tudo certo com vocês? Bom espero que sim! Devido hoje ser feriado de sexta-feira santa, resolvi aproveitar o tempo livre para falar de uma classe
Como obter o melhor de cada tecnologia
Share this on WhatsAppDescubra como achar as melhores referencias, frameworks, scripts e etc Fala galera, hoje resolvi escrever um post bem interessante onde irei ensinar como eu faço para descobrir
Confira as novidades do Entity Framework Core 5.0
Share this on WhatsAppFala galera, hoje venho compartilhar com vocês novidades do nosso querido Entity Framework 5. Entity Framework 5 será lançado junto ao .Net 5.0 e trará novidades muito
1 Comment
Raphael
outubro 26, 16:57