Hello folks!
Medir o tempo de processamento de certos momentos dentro da nossa aplicação serve para otimizarmos nosso código, processos, acessos, etc.
Talvez deseje medir a performance de suas queries, ou a geração de arquivos em determinando processo de automação. Talvez queira saber qual interface comporta-se melhor no ambiente para o qual está desenvolvendo.
Como fazer isso, como medir, mensurar, detectar?
Fácil, a função abaixo lhe permitirá tal liberdade.
Public Function MilisSeconds() As String
LetMilisSeconds= Strings.Format(Now, "dd-MMM-yyyy HH:nn:ss") & "." & Strings.Right(Strings.Format(Timer, "#0.00"), 2)
End Function
Mas como posso aplicar isso nas minhas procedures e functions ? Segue exemplo:
Private Sub btnSave_Click()' Author: Date: Contact:' André Bernardes 10/05/2011 15:31 bernardess@gmail.com http://inanyplace.blogspot.com/' Application: ********.' Cria a **************************************.' Listening: Recognizer - Daft Punk - Tron Legacy.Dim nStart As StringDoCmd.RunCommand acCmdSaveRecordLet nStart = Right(TimeInMS(), 11) 'Right(Now(), 8)Call AdjustSpecialtiesCall AssemblerCentralEngineCall AssemblerCentralEngine2Call SeedData ' Arquiva os dados para consulta e análise posterioresMe.cmbCenarios.Requery ' Atualiza o Combo de Exclusão de cenários.Let Me.cxVersion.Value = Now() & " Versão 00" ' Atualiza a caixa de texto onde se dá os nomes para novos cenários.MsgBox "Tabela criada com sucesso!" & Chr(10) & Chr(13) & _"" & Chr(10) & Chr(13) & _" TABELA: tbl_Bernardes" & Chr(10) & Chr(13) & _"" & Chr(10) & Chr(13) & _"CENÁRIO: " & ReturnVersion() & Chr(10) & Chr(13) & _"" & Chr(10) & Chr(13) & _"Iniciou em: " & nStart & " - Finalizou em: " & Right(TimeInMS(), 11) & Chr(10) & Chr(13) & _"" & Chr(10) & Chr(13) & _"Os dados foram preservados para análises posteriores." & Chr(10) & Chr(13) & _"", vbInformation, ".: Informação: Versão " & ReturnVersion()End Sub
Existe um outro modo de ter este mesmo resultado, utilizando API e DLL. Não acredito que seja mais útil, mas em todo caso, teste-o você mesmo se desejar:
Private Type SYSTEMTIME
wYear As IntegerwMonth As IntegerwDayOfWeek As IntegerwDay As IntegerwHour As IntegerwMinute As IntegerwSecond As IntegerwMilliseconds As Integer
End TypePrivate Declare Sub GetSystemTime Lib "kernel32"(lpSystemTime As SYSTEMTIME)Public Function nMillisecond() As String
Dim tSystem As SYSTEMTIMEDim nRetOn Error Resume NextGetSystemTime tSystemLet sRet = Hour(Now()) & ":" & Minute(Now()) & ":" & Second(Now()) & _":" & tSystem.wMillisecondsLet nMillisecond = nRet
End Function
Vocês sabem como sou, se existe um outra forma, e a conheço, não deixo de lhes mostrar (medindo processamento em centésimos de segundos com o método Timer):
Public Sub TestBernardes()Dim fTimeStart As SingleDim fTimeEnd As SingleLet fTimeStart = Timer
SomeProcedure
fTimeEnd = TimerLetDebug.Print Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centésimos de segundos""")End SubPublic Sub SomeProcedure()Dim i As Long, r As DoubleFor i = 0& To 10000000Let r = RndNextEnd Sub
Tags: André Luiz Bernardes, MS, Microsoft, Office, Excel, Access, VBA, Automation, Milissegundos, Timer, milliseconds, Now, function
Referências: VBAADUD
Assuntos similares:
Calculating process timeExcel VBA TimerHow to Get Time in Milliseconds using Excel VBAHow to add milliseconds to Now()How to get milliseconds in VBA Now() functionMiliseconds in dim as dateMillisecond timer using VBAShow current date & system time with millisecondsUsing Milliseconds in VBAVBA MillisecondsVBA Now() functionVBA Timer function
André Luiz Bernardes
A&A® - Work smart, not hard.