When I have to use for/next for processing arrays,
I like, I suspect many others, tend to put the array ubound into a local
variable like so:

Dim counter as integer = myarray.ubound // ( new rb syntax )

For I as integer = 0 to counter
  ...
Next


As opposed to , what would be more clean:


For I as integer = 0 to myarray.ubound
  ...
Next


Now I just did some timings, and it seems that there is a slight ( not great
) performance advantage with using a local variable. I used the following
code ( with an empty array )

//-------
  dim u as integer = UBound(arr)
  
  Result.Text = "Started"
  app.DoEvents
  
  for j as integer = 0 to 200000000
    for i as integer = 0 to u
    Next
  Next
  
  
  Beep
  Result.Text= "FINISHED"
//--------


and:

// -------
  Result.Text = "Started"
  app.DoEvents
  
  for j as integer = 0 to 200000000
    for i as integer = 0 to  UBound(arr)
    Next
  Next
  
  Beep
  Result.Text= "FINISHED"
//--------


This makes me wonder: -  Idoes Ubound use a method/function call to get the
ubound value,  or does the RB generate code to directly access a "property"
or variable holding the internal array size ?.


Naturally there would be some speed advantage to NOT using any function to
get the size.


Basically I would prefer not to have to use the local variable counter
method, or  as I often have done - creating a class property to hold the
array count.  It would be so much cleaner just to use UBOUND directly in the
for loop, knowing that I incur no performance penalty for doing so.


Anyone have info on this ?  My test seems to suggest there is not a huge
difference in speed, but a difference nevertheless.



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