Como Medir o Tempo de Execução de Uma Macro no VBA

Neste artigo você aprenderá como medir o tempo de execução de uma macro no VBA passo-a-passo.

Medir o tempo de execução de uma macro no VBA pode ser útil por várias razões. Uma delas é a otimização de desempenho das rotinas: ao medir o tempo de execução, podemos detectar quais partes da macro estão consumindo mais tempo. Isso permite otimizar essas seções para melhorar o desempenho geral da macro.

Outra abordagem é a identificação de problemas, visto que se uma macro está demorando mais do que o esperado para ser executada, medir o tempo de execução pode ajudar a identificar possíveis gargalos ou problemas de eficiência no código.

Podemos citar também as estimativas de tempo, visto que em alguns casos é importante ter uma estimativa precisa do tempo que uma macro levará para ser concluída. Isso pode ser necessário para planejar cronogramas ou comunicar expectativas realistas aos usuários em tempo de execução. Uma barra de progresso é uma aplicação prática viável.

Tratando-se de cenários, há também a comparação de alternativas: se estamos experimentando diferentes abordagens para realizar uma tarefa em uma macro, medir o tempo de execução de cada abordagem pode ajudar a determinar qual é mais eficiente, ou seja: podemos mensurar o tempo de cada rotina e assim eleger aquela mais eficiente, que não necessariamente será a que possui menos linhas de código (menos instruções).

Em relação ao decorrer do tempo de uso (médio ou longo prazo, por exemplo), podemos monitorar o desempenho ao passar do tempo: ao medir o tempo de execução regularmente, podemos monitorar a performance da macro ao longo de dias, semanas, meses etc. Isso pode ser útil para detectar degradações de desempenho à medida que o código é modificado ou à medida que o volume de dados manipulados pela macro aumenta.

Expostas algumas utilidades práticas da medição de tempo de execução de macros, este artigo propõe, usando o próprio VBA, uma forma de medir o tempo de execução de uma macro.

Sugestão para medir o tempo

Essencialmente: com base na rotina já existente, a solução para medição do tempo inicialmente registra a data e hora de início da execução da macro (bem no início da rotina). Por fim, após todas as instruções da macro original (que já tínhamos), subtrai da data e hora do término (encerrado o código original) a data e hora iniciais.

Considere a rotina a seguir que exporta um conjunto de PDFs.

Desejamos mensurar o tempo em que todo o processo é concluído. Começamos declarando uma variável chamada TempoInicial, usada para guardar a data e a hora do início de execução da macro. Note que esta variável recebe o valor da função Now para este fim.

Até o momento está é a nossa única alteração na macro original, da qual desejamos mensurar o tempo.

Já sabemos a data e hora de início de execução da macro. Agora precisamos saber a data e hora de término da execução para calcular esta diferença de tempo (tempo transcorrido).

Podemos adicionar uma última instrução para exibir em caixa de mensagem (MsgBox) a duração, provida pela diferença. A diferença é calculada com Now() – TempoInicial. Optamos por colocar esta diferença na função Format para exibir a duração com horas, minutos e segundos. O exposto neste parágrafo está destacado em vermelho no código a seguir. Está é a nossa segunda e última alteração no código original.

Ao executar a macro, teremos ao final a exibição do tempo transcorrido, revelando o tempo de execução por ela consumido.

Código VBA:

Sub MinhaRotina()

Dim TempoInicial		As Double

	TempoInicial = Now()

	'Aqui entra a sua rotina propriamente dita

	MsgBox Format(Now()-TempoInicial,"hh:mm:ss")

End Sub

Com base na imagem anterior concluímos que a macro demorou 6 segundos para “rodar”.

Avalie este post
Sair da versão mobile