ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Elapsed time to run code (https://www.excelbanter.com/excel-programming/316308-elapsed-time-run-code.html)

Otto Moehrbach[_6_]

Elapsed time to run code
 
Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart. That's
accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto



keepITcool

Elapsed time to run code
 
you'll never get reliable timings like that


for "reasonable" timers use s't like:

dim lTime&
lTime = application.timer *1000
'code
lTime = -lTime+application.timer *1000
messagebox ltime & "msecs"

I believe that application.timer ticks each 35 or 55 milliseconds
(or sometihng)

So for benchmarking you;ll need to run your codes a few times
(or a few 1000 if your testing functions ;)

For far more reliable timings you'll need API functions.
I always use CStopWatch from KarlPeterson.
http://www.mvps.org/vb/samples.htm






--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Otto Moehrbach wrote :

Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro to
run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart.
That's accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto


[email protected]

Elapsed time to run code
 
Otto,

Substitute this statement for "MsgBox Format(Time2 - Time1,
"00:00:00")"

MsgBox Format(Time2 - Time1, "hh:mm:ss")

HTH
Paul
--------------------------------------------------------------------------------------------------------------
Be advised to back up your WorkBook before attempting to make changes.
--------------------------------------------------------------------------------------------------------------

Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart. That's
accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto



Tom Ogilvy

Elapsed time to run code
 
From help

Returns a Single representing the number of seconds elapsed since midnight.

so you need to divide this number by the number of seconds in a day


MsgBox Format((Time2 - Time1)/86400, "hh:mm:ss")

But see KeepItCool's post on using other methods for timing.

--
Regards,
Tom Ogilvy


"Otto Moehrbach" wrote in message
...
Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart. That's
accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto





Chip Pearson

Elapsed time to run code
 
Otto,

Your Format string is wrong. Change "00:00:00" to "hh:mm:ss".


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Otto Moehrbach" wrote in message
...
Excel 2002, WinXP
I have the following code to give me the elapsed time for a
macro to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds
apart. That's accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto




Otto Moehrbach[_6_]

Elapsed time to run code
 
I appreciate your help. What you have looks much better than my method.
However, I get an error "Object doesn't support this property or method."
with the line:
lTime = application.timer *1000

Also, what does "Dim lTime&" mean? I'm familiar with declarations but not
with the use of the "&" sign in them. Otto
"keepITcool" wrote in message
ft.com...
you'll never get reliable timings like that


for "reasonable" timers use s't like:

dim lTime&
lTime = application.timer *1000
'code
lTime = -lTime+application.timer *1000
messagebox ltime & "msecs"

I believe that application.timer ticks each 35 or 55 milliseconds
(or sometihng)

So for benchmarking you;ll need to run your codes a few times
(or a few 1000 if your testing functions ;)

For far more reliable timings you'll need API functions.
I always use CStopWatch from KarlPeterson.
http://www.mvps.org/vb/samples.htm






--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Otto Moehrbach wrote :

Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro to
run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart.
That's accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto




keepITcool

Elapsed time to run code
 
ouch..

my mistake it should be
vba.timer
timer

also not messagebox but msgbox.

dim lTime& means Dim lTime as long
the & is a so-called TypeDeclaration character.





--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Otto Moehrbach wrote :

I appreciate your help. What you have looks much better than my
method. However, I get an error "Object doesn't support this
property or method." with the line:
lTime = application.timer *1000

Also, what does "Dim lTime&" mean? I'm familiar with declarations
but not with the use of the "&" sign in them. Otto
"keepITcool" wrote in message
ft.com...
you'll never get reliable timings like that


for "reasonable" timers use s't like:

dim lTime&
lTime = application.timer *1000
'code
lTime = -lTime+application.timer *1000
messagebox ltime & "msecs"

I believe that application.timer ticks each 35 or 55 milliseconds
(or sometihng)

So for benchmarking you;ll need to run your codes a few times
(or a few 1000 if your testing functions ;)

For far more reliable timings you'll need API functions.
I always use CStopWatch from KarlPeterson.
http://www.mvps.org/vb/samples.htm






--
keepITcool
www.XLsupport.com | keepITcool chello nl | amsterdam



Otto Moehrbach wrote :

Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro

to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart.
That's accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto


Tom Ogilvy

Elapsed time to run code
 
According to this article, VBA.Timer's resolution is 1 second.

http://support.microsoft.com/default...b;en-us;172338
How To Use QueryPerformanceCounter to Time Code


It also provides other methods for higher resolution.

--
Regards,
Tom Ogilvy


"keepITcool" wrote in message
ft.com...
ouch..

my mistake it should be
vba.timer
timer

also not messagebox but msgbox.

dim lTime& means Dim lTime as long
the & is a so-called TypeDeclaration character.





--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Otto Moehrbach wrote :

I appreciate your help. What you have looks much better than my
method. However, I get an error "Object doesn't support this
property or method." with the line:
lTime = application.timer *1000

Also, what does "Dim lTime&" mean? I'm familiar with declarations
but not with the use of the "&" sign in them. Otto
"keepITcool" wrote in message
ft.com...
you'll never get reliable timings like that


for "reasonable" timers use s't like:

dim lTime&
lTime = application.timer *1000
'code
lTime = -lTime+application.timer *1000
messagebox ltime & "msecs"

I believe that application.timer ticks each 35 or 55 milliseconds
(or sometihng)

So for benchmarking you;ll need to run your codes a few times
(or a few 1000 if your testing functions ;)

For far more reliable timings you'll need API functions.
I always use CStopWatch from KarlPeterson.
http://www.mvps.org/vb/samples.htm






--
keepITcool
www.XLsupport.com | keepITcool chello nl | amsterdam


Otto Moehrbach wrote :

Excel 2002, WinXP
I have the following code to give me the elapsed time for a macro

to run.

Time1 = Time
'My code
Time2 = Time
MsgBox Time1 & " " & Time2
MsgBox Format(Time2 - Time1, "00:00:00")

The first MsgBox gives me 2 times that are some 17 seconds apart.
That's accurate.
The second MsgBox shows 00:00:00 no matter what.

What is wrong with the second MsgBox line?

Thanks for all your help. Otto





All times are GMT +1. The time now is 05:12 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com