By: rwessel (rwessel.delete@this.yahoo.com), June 6, 2022 5:26 am
Room: Moderated Discussions
Peter Lewis (peter.delete@this.notyahoo.com) on June 6, 2022 3:55 am wrote:
> > There's PGO of course, but that really only works for interpreted or jitted languages.
>
> The Intel C/C++ Compiler has Profile-Guided Optimization (PGO).
> Have you had some bad experience with PGO for compiled languages?
The fundamental problem with PGO is that it's (probably fundamentally) too hard to use the vast majority of the time, at least with languages compiled in the traditional way.
Unless you have simple to generate (and maintain!*) training datasets, have a very small area where you can separately apply PGO (and can make the training sets small enough to make them maintainable), or you can afford to invest in a quite large infrastructure to use and maintain PGO (because, say, you have an absurd number of machine on which you're going to run this code - consider Google), PGO is just too hard to use, and so is useless 99% of the time.
As Peter pointed out, JIT'd languages can take advantage of PGO as well.
*Code with limited lifespan, or code you somehow know isn't going to change in the future, can reduce the maintenance requirements here.
> > There's PGO of course, but that really only works for interpreted or jitted languages.
>
> The Intel C/C++ Compiler has Profile-Guided Optimization (PGO).
> Have you had some bad experience with PGO for compiled languages?
The fundamental problem with PGO is that it's (probably fundamentally) too hard to use the vast majority of the time, at least with languages compiled in the traditional way.
Unless you have simple to generate (and maintain!*) training datasets, have a very small area where you can separately apply PGO (and can make the training sets small enough to make them maintainable), or you can afford to invest in a quite large infrastructure to use and maintain PGO (because, say, you have an absurd number of machine on which you're going to run this code - consider Google), PGO is just too hard to use, and so is useless 99% of the time.
As Peter pointed out, JIT'd languages can take advantage of PGO as well.
*Code with limited lifespan, or code you somehow know isn't going to change in the future, can reduce the maintenance requirements here.