On Tuesday, 18 August 2015 at 21:55:26 UTC, Walter Bright wrote:
On 8/18/2015 2:33 PM, deadalnix wrote:
There is none. There is a ton of 0.5% one that adds up to the 30% difference.

I regard a simple pattern that nets 0.5% as quite a worthwhile win. That's only 60 of those to make up the difference.

If you've got any that you know of that would net 0.5% for dmd, lay it on me!


If I'd were to bet on what would impact DMD perfs the most, I'd go for SRAO, and
a inliner in the middle end that works bottom up :
- Explore the call graph to-down optimizing functions along the way
  - Backtrack bottom-up and check for inlining opportunities.
  - Rerun optimizations on the function inlining was done in.

That's how the inliner already works. The data flow analysis optimizer also runs repeatedly as each optimization exposes more possibilities. The register allocator also runs repeatedly.


My understanding is that the inliner is in the front end. This definitively do not work the way I describe it here.

(I am unfamiliar with the term SRAO. Google comes up with nothing for it.)


That is because I made a typo, sorry.

It stand for 'scalar replacement of aggregate' aka SROA (not SRAO).

You can find literature on the subject.

It require a fair amount of tweaking and probably need a way for the backends to
provide a cost heuristic for various functions,

A cost heuristic is already used for the inliner (it's in the front end, in 'inline.d'). A cost heuristic is also used for the register allocator.

I'm not sure how this can be made to work the way I describe it in the frontend.

Reply via email to