[fpc-devel] Array indexing vs. pointers
Jim Leonard
trixter at oldskool.org
Wed Nov 6 18:52:57 CET 2013
(Sorry if this isn't technical enough for the developer list, but it
requires understanding of the underlying architecture so I thought it
was appropriate.) I'm implementing something in FPC that will perform
very many comparisons across sets of data, and would like to know
whether or not FPC is more efficient with array indexing calculations
vs. doing the pointer math myself. For example, I have a choice of
doing either this:
for b:=0 to num-1 do
diff:=src^[b]-dst^[b];
...or this:
for b:=0 to num-1 do begin
diff:=src^-dst^;
inc(src);
inc(dst);
end;
I read a few posts from 2010 and a post from 2013 that implies FPC's
array index calcs are just a MUL and suboptimial; is this still the
case? Which method produces faster code? A third way would be to copy
data into a dynamic array and no pointer use at all, ie.
"diff:=src[b]-dst[b];"... is this the fastest option?
(Eventually I will be writing performance-critical sections in
assembler, but would like to avoid doing that during early phases of my
project.)
--
Jim Leonard (trixter at oldskool.org)
Check out some trippy MindCandy: http://www.mindcandydvd.com/
A child borne of the home computer wars: http://trixter.oldskool.org/
You're all insane and trying to steal my magic bag!
More information about the fpc-devel
mailing list