Date: Sun, 26 Jun 2011 14:50:07 -0700 From: "Arthur A. Gleckler" <a...@speechcode.com>
> Rather than wait longer for any objections, I've just committed this > together with a change to the i386 and x86-64 back ends to improve > overall system performance by 20%, using the same unscientific tests. > (Do a two-stage build to get the effect.) 20%?! That's a lot. What do you attribute that to? Is it the branch direction change, or the SYMBOL-NAME change, or something else? The branch direction change. Before, on pretty much every entry to a non-leaf procedure, the CPU would see a backward branch and predict it taken by default, if there were no dynamic profile data to inform the branch predictor. But almost all of the time, that branch -- to handle interrupts -- would not be taken. So basically every non-leaf procedure call would cause a branch misprediction. We have a similar issue with branch target prediction: we don't pair CALL and RET. Fixing that would be considerably trickier, and doing it really effectively may require ABI changes. _______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel