Iterating through Arrays
The most‑efficient mechanism for iterating through an array is to use a
vars
nameArray : StringArray;
name : String;
i,nameCount : Integer;
begin
nameCount := nameArray.size;
i := 1;
while i < nameCount do
name := nameArray[i];
// do something with name
i := i+1;
endwhile;
This code is inefficient because arrays are implemented as lists, so nameArray[i] has to start at the beginning of the list and count through to find the item. In one test, objectArray[20000] took nine times as long as objectArray[1]. If there are millions of entries in the array, the performance of this construct is even worse. Assuming nameArray is persistent, the fact that nameArray.size and nameArray[i] lock and unlock the array is another good reason not to call them repeatedly.
This can be more efficiently performed by the following code.
vars
nameArray : StringArray;
name : String;
begin
foreach name in nameArray do
// do something with name
endforeach;
This was tested with an array containing 20,000 names. The
