On 19 Jan 2010, at 15:14, Marco van de Voort wrote:
Hmm, under delphi at least, it is cheaper to do
var pstart,pend : PSomeType;
if length(sometypedynarray)>0 then
begin
pstart:=...@sometypedynarray[0];
peind :=...@sometypedynarray[length(sometypedynarray)-1];
while (pstart<=peind) do
begin
operate_on(pstart);
inc(pstart);
end;
end;
then for i over a dynarray, even if sometype is a simple type.
I can't imagine why that would be any faster than a simple for-loop,
except for an implementation detail in the code generator or optimiser
of the tested Delphi version(s) (or in case range checking is enabled
-- but in that case using pointers to work around range checking would
be strange). And it most certainly looks a lot worse than
for i:=0 to high(sometypedynarray) do
operate_on(sometypedynarray[i]);
It would also surprise me if any speed difference that may exist were
significant.
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal