Which is more efficient?

R

RyanH

I have a button that is used to make several calculations using a value from
a textbox (tbxQuantity) in my UserForm. This value could be used 10 to 100
times in one procedure. I was wondering what would be the most efficient way
of writng my equations. When I mean efficient I mean speed. Which is more
efficient?

Sub Calculate()

Dim Qty as Integer

Qty = Val(tbxQuantity)
Price = Cost * MarkUp * Qty

End Sub

or

Sub Calculate()

Price = Cost * MarkUp * Val(tbxQuantity)

End Sub

Thanks in Advance!
 
S

smartin

RyanH said:
I have a button that is used to make several calculations using a value from
a textbox (tbxQuantity) in my UserForm. This value could be used 10 to 100
times in one procedure. I was wondering what would be the most efficient way
of writng my equations. When I mean efficient I mean speed. Which is more
efficient?

Sub Calculate()

Dim Qty as Integer

Qty = Val(tbxQuantity)
Price = Cost * MarkUp * Qty

End Sub

or

Sub Calculate()

Price = Cost * MarkUp * Val(tbxQuantity)

End Sub

Thanks in Advance!

Just a SWAG...

You're not typing Quantity in the latter example, so there may be some
cost in allocating a variant there. But in 10-100 iterations I can't
imagine there is a significant difference between the two versions.

If you're curious, why not set up an experiment with timing variables?
It could be fun. You might need to expand the number of iterations a few
powers of ten to get meaningful results though.

For added interest, try figuring out the runtime differences declaring
Qty as Integer and Long. You might be surprised.
 
T

Tim Zych

Out of those options, the 2nd is faster in my simple test. 10,000,000
iterations clocked in approximately .455% faster (1.3174 seconds VS 1.3234
seconds). A few thousand iterations will not be noticeable.
 
S

smartin

Tim said:
Out of those options, the 2nd is faster in my simple test. 10,000,000
iterations clocked in approximately .455% faster (1.3174 seconds VS 1.3234
seconds). A few thousand iterations will not be noticeable.

I reckon too, "a few million" (^:
 
R

RyanH

How do you do that time study? I would guess something like this. Tell me
if I am correct or if you have a better way.

Sub Calculate()

starttime = Format(Date, "mm.ssss")

'my code here

endtime = Format(Date, "mm.ssss")

End Sub
 
S

smartin

RyanH said:
How do you do that time study? I would guess something like this. Tell me
if I am correct or if you have a better way.

Sub Calculate()

starttime = Format(Date, "mm.ssss")

'my code here

endtime = Format(Date, "mm.ssss")

End Sub

For a quick and dirty analysis, I would put

debug.print "start," & now()
for MyLoop = 1 to 100,000,000
' Call Calc
next
debug.print "end," & now()

in whatever procedure calls Calc, but as you can see, outside the loop
that actually calls Calc.

Press Ctrl+G to see the results. Copy'n'Paste into Excel for more
analysis. Repeat several times to satisfaction.
 
D

Dave Peterson

Which one is easier for you to understand?

Which one is easier for you to modify when (not if) you have to?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top