On 24 Sep 2010, at 08:06, Adrian Veith wrote:
On 23.09.2010 17:03, Jonas Maebe wrote:
It may help a lot, but only because it will reduce register pressure,
not because the multiplications are gone.
It reduces the total number of multiplications about 70% - I gave the
code to one of my guys and he changed the code using pointers to
elements wherever possible.
Note the above: he changed the code using pointers. He did not replace
the multiplications with "lea" instructions. Simply replacing the
multiplications with lea instructions has almost no influence on the
speed, as I mentioned twice before (unless you have a very old x86).
Multiplications, especially with small numbers, are very fast on
modern processors.
This are the differences:
fpc - original code: 17s
fpc - pointer to elements: 12 s
delphi - original code: 9s
Yes, because as I mentioned above, this reduces the register pressure.
As a conclusion one can say, that fpc's array arithmetic is
suboptimal.
You can conclude that, but that is virtually completely unrelated to
the speed of this example program.
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal