On 11/27/2017 06:27 PM, Jeff Law wrote:
On 11/07/2017 10:33 AM, Aldy Hernandez wrote:
Without further ado, here are my monumental, earth shattering improvements:
Conditional branches
Without patch: 411846839709
With patch: 411831330316
%changed: -0.0037660%
Number of instructions
Without patch: 2271844650634
With patch: 2271761153578
%changed: -0.0036754%
So that's pretty small. A really good improvement would be on the order
of a half-percent reduction in runtime conditional branches. I usually
test with .i files that have enable-checking turned on -- which tends to
give lots of opportunities due to the redundancies in our checking code.
On a positive note, you're eliminating roughly 4.5 other dynamic
instructions for every runtime conditional branch you remove, which is
actually a good ratio. 3.5 is what I typically see for a fairly
extensive amount of work. Patrick P's work last year was on the order
of 7.5. So while it didn't fire often, when it did it was highly effective.
I've retested with .ii files gathered from a stage1 build with
--enable-checking=yes,all. The results are an order of magnitude better
but not impressive by any means:
Conditional branches
Without patch: 1333333689781
With patch: 1333666327560
%changed: -0.0249416%
Number of instructions
Without patch: 7347240547621
With patch: 7348622241739
%changed: -0.0188021%
We have installed changes of this nature when they were part of a larger
set of changes, particularly if they helped us elsewhere (like
eliminating key path to silence a bogus warning or addressing other
regressions).
I don't know if the above changes your view, but I am not losing sleep
over this, so no worries. I will just keep accumulating these along
with the myriad of other changes I have ;-).
Thanks for taking a look at this, and making sure I'm headed in the
right direction.
Aldy