4 ms·
>The authors promote using dozens or hundreds of compiler passes, each being as simple as possible. Don't combine transformations; keep them separate. Actually
by thesz 15y ago
>The authors promote using dozens or hundreds of compiler passes, each being as simple as possible. Don't combine transformations; keep them separate.
Actually, this way you will get an inferior compiler (optimizer).
http://lambda-the-ultimate.org/node/2387 http://lambda-the-ultimate.org/node/2387
The thesis referenced above argues (and provides examples) that you cannot overcome important problems by separating transformations. You need to combine them.
- silentbicycle 15y agoThe nanopass paper uses so many passes for pedagogy, not efficiency. Of course it's inefficient, that's not the point. They're still easier to teach in isolation.
- jeffdavis 15y agoAre you talking about efficiency of the compiler or efficiency of the resulting code? If it's just an inefficiency of the compiler, you can dismiss it. But if it's an inefficiency in the resulting code, then perhaps the many-pass design isn't adequate for teaching optimization.
- thesz 15y agoThe thesis I was talking about is about generated code. Author of thesis is one of the authors of Blitz++: http://www.oonumerics.org/blitz/ http://www.oonumerics.org/blitz/ The thesis came from his frustration when seemingly innocent changes provoke significant degradation in performance.
- joeyespo 15y agoI get a 403 error when trying to follow Lambda's link to the paper. Any mirrors?
- thesz 15y agohttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.9.3916 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.9.39... - thesis in PDF format.
- skew 15y ago> The thesis referenced above argues (and provides examples) that you cannot overcome important problems by separating transformations. You need to combine them. The transformations need to be applied together, but they can be specified together. One of the many impressive things in that thesis is the framework which lets optimizations be independently specified, but applied together. Unfortunately, the code does not seem to be available. For a more recent system that echoes that particular aspect and does come with code there is Hoopl http://www.cs.tufts.edu/~nr/pubs/dfopt-abstract.html http://www.cs.tufts.edu/~nr/pubs/dfopt-abstract.html It's on hackage http://hackage.haskell.org/package/hoopl http://hackage.haskell.org/package/hoopl