<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">J. Gareth Moreton via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>> schrieb am Mi., 1. März 2023, 12:25:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">My peephole optimisations mostly save only a handful of cycles each time <br>
which probably won't add up to much for a relatively short test.  The <br>
most major optimisation I can think of, although I'm not quite sure when <br>
it was merged, is the method of replacing divisions by a constant with <br>
an equivalent reciprocal multiplication.  You'll see the biggest savings <br>
there.  There's other difficulties like processors being intelligent <br>
with caching and out of order execution, for example, that are <br>
disguising some inefficiencies.  And some seek only to reduce code size <br>
with no loss of speed.<br>
<br>
What are your timings like when compiling with COREAVX or COREAVX2?  A <br>
couple of recent peephole optimizations make use of BMI1 and BMI2.<br>
<br>
I can't remember the proverb that Florian used, but it essentially boils <br>
down to very small changes, individually not amounting to much, but <br>
which accumulate into a noticable difference when in large numbers.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">It's a German proverb: "Mühsam ernährt sich das Eichhörnchen" </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>