Maybe you could do the test:

dim foo(1048576) as Integer
dim U as Integer = UBound(foo)
Dim c as integer

// time ubound on full array
for i as Integer = 0 to U
 C = UBound(foo)
next

Redim foo(-1)

// time ubound on empty array
for i as Integer = 0 to U
 C = UBound(foo)
next


This test would verify once for all whether the time taken to do UBOUND
varies according to the number of elements

( my strong hunch would be that it makes no difference since internally RB
is just checking an internal size variable )



On 17/5/07 16:11, "Charles Yeomans" <[EMAIL PROTECTED]> wrote:

> 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>
> 

Regards,

Dan



_______________________________________________
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