The patch looks good. I already did some experiments with __builtin_expect() in the past, but didn't get any visible speedup.
As I understand __builtin_expect() helps only in case if branch is not in BTB and static branch prediction is used. In case if branch instruction was already executed (and didn't go out from BTB), __builtin_expect() has no effect. It just reorders basic-blocks according to static branch prediction algorithm. Thanks. Dmitry. > -----Original Message----- > From: Nuno Lopes [mailto:[EMAIL PROTECTED] > Sent: Sunday, June 18, 2006 5:50 PM > To: PHPdev > Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] > Subject: messing with branch prediction > > > Hello, > > Yesterday I was playing with branch prediction in the Zend VM > executor. > Although I didn't have any noticeable performance improvement > within the > bench.php script, I've put the patch on-line, because someone > else might > want to mess with it too :) (but with care..) > > patch: http://mega.ist.utl.pt/~ncpl/zend_branch_prediction.txt > gcc docs: > http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-g_ > t_005f_005fbuiltin_005fexpect-2440 > > the zend.h part of the patch is based on the similar macros > (with the same > name, too) found in the Linux kernel. > > I made & tested the patch in a Centrino laptop with gcc 3.4, > so it might be > the cause of getting no relevant performance increase. On > CPUs with longer > pipelines (like Pentium 4/NetBurst architecture), the > performance increase > might be noticeable. > > > Happy hacking :) > Nuno > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php