I just did a quick test myself.

Consider the following loops.


dim foo(1048576) as Integer
for i as Integer = 0 to UBound(foo)
next


dim foo(1048576) as Integer
dim U as Integer = UBound(foo)
for i as Integer = 0 to U
next


The first loop takes about 20000 microseconds, while the second loop  
takes about 14000 ms (with #pragma disableBackgroundTasks, etc.).   
Some further simple testing suggests that the cost of each evaluation  
UBound is about .007 microseconds.  So if your code inside the loop  
takes, say, 1 microsecond to execute, you can achieve a speedup of  
0.7 percent.  Usually, I'll opt for keeping the code a little simpler.

Charles Yeomans


On May 17, 2007, at 10:45 AM, Daniel Stenning wrote:

> Are you saying that RB Ubound does an iterating  count of the  
> number of
> elements each time ??
>
>  I would have thought that each RB array has an internal count  
> "property"
> that only gets modified as elements are added or removed, and this  
> property
> is what gets queried each time Ubound is called.  I might be wrong  
> but that
> would seem the most efficient thing to do - at the cost of a single  
> integer.
>
>
> On 17/5/07 15:30, "James Sentman" <[EMAIL PROTECTED]> wrote:
>
>>
>> The problem is that you're evaluating the ubound everytime you go
>> around the loop. The higher the ubound value the more times you'll
>> have to evaluate it and the slower your loop will run.

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to