hi,
Function reordering depends heavily on the size of the functions, in
most cases such a reordering goes hand in hand with the
profile-information, and the latter is usually targeted at a "main"
application. whether such code-positioning makes sense, can't be said
definitely. Pettis/Hansen state in their paper, that such an
interprocedural optimization combined with bb-positioning within
functions may be very promising allowing gains from 2 to 15 %
depending on the application.
In fact, most compiler/frameworks sup****t function-inlining which may
lead to even bigger functions, which again may lead to a cache being
to small to hold more than just one function, in such cases such a
reordering does not make much sense. the one could turn off inlining,
this may cause a slight efficiency- improvement and together with the
inner-procedural placement-strategies be of more meaning, but whether
it would be better if you had inlining turned on is an other question.
nk
"Tim Frink" <plfriko@[EMAIL PROTECTED]
> schrieb im Newsbeitrag
> Assume a modern processor with all state-of-the art features like
> prefetching, branch prediction and a superscalar pipeline. Further
> assume that all caches are disabled. Will the program runtime change
> when just the order of functions is changed (without any other code
> transformation)?
>
> I'm of the opinion that a reordering of function should have little
> influence on the program execution, maybe due to some prefetch effects
> but thes should be marginal. Of course, with caches this situation
> would look different.


|