> Hi, > > > > If you boost every self fed value by factor of 6, I wonder how quickly > > we run into exponential explosion of the cost (since the frequency > > should be close to 1 and 6^9=10077696.... > > The factor of six is applied once for an entire SCC, so we'd reach this > huge number only if there was a chain of nine different recursive > functions - with this patch we assume each one will recurse six times, > so the result is indeed a huge execution count estimate. > > The constant is not used for the "self generated" values like those in > exchange, those are handled by the else branch below. For those we > expect the recursion happens 8 times, because that is how many values we > generate, but the boost is different depending on the recursion depth. > > > > > I think it would be more robust to simply assume that the job will > >distribute evenly across the clones. How hard is to implement that? > > This is not an update of counters. The code tries to estimate execution > time improvement that is will be possible in callees if we clone for > this particular value and so is based on call graph edge frequencies (so > that if in a callee we can save 5 units of time and the frequency is 5, > we estimate we will save 25). The code has the advantage that it is > universal for both situations when profile feedback is and is not > available.
I guess the patch is OK then. Thanks, Honza > > Martin >