Ir para o conteúdo

Stopwatch: Cronometre o seu programa

A classe Stopwatch permite cronometrarmos tempos dentro do nosso programa, com uma precisão de milissegundos. Isto pode ser interessante para saber a performance do nosso programa a executar uma determinada tarefa, etc.

Código

A classe Stopwatch é bastante simples de usar. Precisamos apenas de instanciar a variável, começar a contar, a determinado momento parar de contar, e depois ir buscar o resultado.

Nota: A classe Stopwatch encontra-se no namespace System.Diagnostics.

'Classe instanciada
Dim cron As Stopwatch = New Stopwatch

'Começamos a contar
cron.Start()

'Aqui deveremos incluir o código da nossa aplicação que queremos cronometrar.
'...

'Paramos de contar
cron.Stop()

'Obtemos o tempo, no formato que quisermos
cron.ElapsedMilliseconds
cron.Elapsed
cron.ElapsedTicks

Métodos e Propriedades

Alguns dos métodos e propriedades mais importantes da classe Stopwatch. Para uma lista completa, pode aceder aqui.

Métodos

  • Start() - Inicia a contagem de tempo a partir da chamada da função.
  • Stop() - Para a contagem do tempo cronometrado.
  • Reset() - Repõe o tempo cronometrado a zero.
  • Restart() - Para a cronometragem actua, repõe o tempo cronometrado a zero, e depois começa de novo a cronometragem.

Propriedades

  • Elapsed - Retorna o tempo cronometrado pela instância actual.
  • ElapsedMilliseconds - Retorna o tempo cronometrado pela instância actual, em milissegundos.
  • IsRunning - Devolve true ou false, dependendo se a instância actual estiver a correr ou não.

Exemplo - Obter as FPS

Esta classe é muito útil para se quisermos, por exemplo, obter os FPS (frames per second) de algum ciclo ou mesmo de uma simples rotina.

Dim cron As Stopwatch = New Stopwatch
Dim x As Integer = 100

While (x > 100)
    cron.Restart()

    cron.Stop()
    'Escreve para o debug o número de FPS
    'Cada segundo tem 1000 milissegundos
    'Portanto vamos ver quantas frames conseguiriamos fazer à velocidade actual.
    Debug.WriteLine(1000 / cron.ElapsedMilliseconds)
    x -= 1
End While