Steven Bosscher wrote:
On Sunday 27 February 2005 10:57, Richard Guenther wrote:

Steven Bosscher wrote:

On Feb 27, 2005 02:04 AM, Richard Guenther

<[EMAIL PROTECTED]> wrote:

In the end we surely want to watch CiSBE and SPEC testers.

Maybe so, but your timings already show this is pretty unacceptable.

Well, the compile time regressions are not caused by my patch but only exposed by them. Previously we were saying "hey, we are as fast as 3.4", but really comparing apples and oranges, as we regress badly in performance by just doing less work due to less inlining. If you want to throttle that back, you can as well, as a followup patch, reduce inlining limits. That of course doesn't remove the conceptual improvement of estimating the size of an inlined indirection the same as the actual function.

How do you suppose we fix the three-fold run-time performance
regressions I and other people see for their scientific code?


I'm not sure, but 1) I have large C++ codes and don't see such
slowdowns, and 2) I see no reason to kill compile time for everyone
just to work around the (ahem) lameness of heavily templatized code
in a relatively small number of C++ applications.  I understand it

I take it as a lame property of our current inlining heuristics and function size estimate that for

  inline int foo { return 0; }
  int bar { return foo(); }

the size estimate of foo is 2, that of bar is initially 13 and 5
after inlining.  3.4 did better in that it has 1 for foo, 12 for bar
before and 3 after inlining.  Though one could equally argue that
3.4 had an abstraction penalty of 3.0 while 4.0 now has 2.5.

It is not hard to believe that for C code this does not matter much,
but for C++ it effectively lowers our inlining limits as at least
things like accessor methods are very common, and if you think of
template metaprograms, with the old scheme we're just loosing.

is a problem for a few people, but if you look at the performance
numbers of things like SPEC, CSiBE, and MySQL, there doesn't appear
to be any performance problem.  But your patch will probably still
blow compile time through the roof for those applications as well.

I don't know. But I also think our inlining limits are way too high, at least unnecessary high with the patch applied. I'll try do find some more representative packages to test - any hints? In the mean time would it be ok to apply the patch to mainline to have the automatic testers do some tests and then afterwards maybe revert it, if we do not like it? I'll take the previous approval of Jan as taken back for now.

Richard.

Reply via email to