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

Reply via email to