Hi,

forwarded from Zeljko:

It's about fpc issue
http://bugs.freepascal.org/view.php?id=26370

It seems that TVariantArrayIterator.AtEnd loops for all Dims for no reason, so 
have 
impact on performance. 

*current implementation*
function TVariantArrayIterator.AtEnd: Boolean;
var
   i : sizeint;
begin
   result:=false;
   for i:=0 to Pred(Dims) do
     if Coords^[i] >= Bounds^[i].LowBound + Bounds^[i].ElementCount then
       result:=true;
end;

*optimized implementation*
function TVariantArrayIterator.AtEnd: Boolean;
var
   i : sizeint;
begin
   result:=false;
   for i:=0 to Pred(Dims) do
     if Coords^[i] >= Bounds^[i].LowBound + Bounds^[i].ElementCount then
     begin
       result:=true;
       break;
     end;
end;

Thanks.

Mattias
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to