Dave wrote:
I also believe we prooved a while back that integers are slower than longs in some situations. Moral of the story: Depending on what that variable is doing, Long may be a better option even if it is too big.
I made a Speed test application a while back... I just ran it again on my new laptop.. Here are the results:
Optimizations included will be shown in bold.
Native, Fast Code (All Advanced + P-Pro)
Byte Loop Average: 0.0048 seconds.
Integer Loop Average: 0.0061 seconds.
Long Loop Average: 0.0061 seconds.
Single Loop Average: 0.0095 seconds.
Double Loop Average: 0.0063 seconds.
Currency Loop Average: 0.2812 seconds.
Variant Loop Average: 0.6282 seconds.
Native, Fast Code (All Advanced)
Byte Loop Average: 0.003 seconds.
Integer Loop Average: 0.0092 seconds.
Long Loop Average: 0.0047 seconds.
Single Loop Average: 0.0094 seconds.
Double Loop Average: 0.0063 seconds.
Currency Loop Average: 0.2813 seconds.
Variant Loop Average: 0.614 seconds.
Native, Fast Code (P-Pro)
Byte Loop Average: 0.0422 seconds.
Integer Loop Average: 0.0281 seconds.
Long Loop Average: 0.0204 seconds.
Single Loop Average: 0.0499 seconds.
Double Loop Average: 0.0704 seconds.
Currency Loop Average: 0.375 seconds.
Variant Loop Average: 0.6187 seconds.
Native, Fast Code
Byte Loop Average: 0.0391 seconds.
Integer Loop Average: 0.0281 seconds.
Long Loop Average: 0.0187 seconds.
Single Loop Average: 0.0468 seconds.
Double Loop Average: 0.0721 seconds.
Currency Loop Average: 0.3609 seconds.
Variant Loop Average: 0.6076 seconds.
Native, No Optimizations
Byte Loop Average: 0.0545 seconds.
Integer Loop Average: 0.0344 seconds.
Long Loop Average: 0.0171 seconds.
Single Loop Average: 0.0562 seconds.
Double Loop Average: 0.0672 seconds.
Currency Loop Average: 0.3516 seconds.
Variant Loop Average: 0.7014 seconds.
Native, Small Code
Byte Loop Average: 0.0362 seconds.
Integer Loop Average: 0.0299 seconds.
Long Loop Average: 0.0185 seconds.
Single Loop Average: 0.0469 seconds.
Double Loop Average: 0.0734 seconds.
Currency Loop Average: 0.3627 seconds.
Variant Loop Average: 0.7 seconds.
P-Code
Byte Loop Average: 0.736 seconds.
Integer Loop Average: 0.4047 seconds.
Long Loop Average: 0.4015 seconds.
Single Loop Average: 0.422 seconds.
Double Loop Average: 0.4359 seconds.
Currency Loop Average: 0.5984 seconds.
Variant Loop Average: 1.3734 seconds.
VB IDE
Byte Loop Average: 0.8047 seconds.
Integer Loop Average: 0.4548 seconds.
Long Loop Average: 0.4547 seconds.
Single Loop Average: 0.4906 seconds.
Double Loop Average: 0.4876 seconds.
Currency Loop Average: 0.6658 seconds.
Variant Loop Average: 1.4888 seconds.
The code for the above tests was 10 loops of the following:
Code:
lStart = GetTickCount
For Variable0 = 0 To 254
For Variable1 = 0 To Variable0
For Variable2 = 0 To Variable1
VariableR = Variable0 * 100 - Variable0 * 100 + _
Variable1 * 100 - Variable1 * 100 + _
Variable2
Next
Next
Next
lStop = GetTickCount
The variables (except for lStart and lStop) were all declared separately (vData# As Variant, lData# as Long, etc.) for each 'type' loop. I had each of these loops run 10 times, and you are seeing the average time for each loop to complete.
I'm pretty sure Spodi has made a tool that tests the different data types, as well.
But as you can see.. In all cases, Longs were faster than Integers, except for
Native, Fast Code (All Advanced + P-Pro). On another note, with all advanced optimizations, the Byte data type seems to be faster than all others.