|Profile-driven optimization firstname.lastname@example.org (Tim Frink) (2008-01-29)|
|Re: Profile-driven optimization email@example.com (Gene) (2008-01-31)|
|Re: Profile-driven optimization firstname.lastname@example.org (=?ISO-8859-1?Q?Pertti_Kellom=E4ki?=) (2008-02-01)|
|Re: Profile-driven optimization email@example.com (M Wolfe) (2008-02-02)|
|Re: Profile-driven optimization firstname.lastname@example.org (Pasi Ojala) (2008-02-08)|
|From:||Tim Frink <email@example.com>|
|Date:||Tue, 29 Jan 2008 11:29:15 +0100|
|Organization:||CS Department, University of Dortmund, Germany|
|Posted-Date:||30 Jan 2008 00:40:59 EST|
Recent versions of compilers perform profile-driven optimizations,
i.e. they first profile the program by running it and collect
information about the frequency of taken branches and how often basic
blocks have been executed. Based on that, they get one path through
the program that is executed most frequently.
I'm now wondering what sort of optimizations can be performed to that
path. The only optimization I know is block re-ordering by moving
blocks such that unconditional branches are eliminated on the typical
path leading to e.g. an improved pipeline behavior due to missing
Most of the optimizations could be applied to the entire code since
they can improve code quality globally so it does not make sense to
perform for example constant propagation just to this one path and
leave the remaining code unchanged. This is the same for other
compiler optimizations that come into my mind.
Do you know any other optimizations that could be applied in
particular to this one path? This must be some sort of optimizations
that, due to any restrictions, cannot be applied to the entire code
but just to some few code fragments (like the profiling path).
Any papers/links/books are appreciated.
[I wouldn't say it's recent. Multiflow's compiler was using profile
feedback at least 20 years ago. There must be lots of papers since
Return to the
Search the comp.compilers archives again.