關于 PHP 內核中 __builtin_expect 的解釋

轉自:http://blog.csdn.net/fb408487792/article/details/49925259

Zend/zend_portability.h

#if PHP_HAVE_BUILTIN_EXPECT
# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
#else
# define EXPECTED(condition)   (condition)
# define UNEXPECTED(condition) (condition)
#endif

main/php-config.h

/* Whether the compiler supports __builtin_expect */
#define PHP_HAVE_BUILTIN_EXPECT 1

解釋:

# define EXPECTED(condition)   __builtin_expect(!!(condition), 1)
# define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)

// !!(condition)真假變量 非非得真的邏輯運算,以0或1來達到預判
// if(EXPECTED(condition)) 等價于 if(condition)
// if(UNEXPECTED(condition)) 也等價于 if(condition)
// __builtin_expect((condition),1) 表示 condition 的值為真的可能性更大。
// __builtin_expect((condition),0) 表示 condition 的值為假的可能性更大。

編譯器在編譯過程中,會將可能性更大的代碼緊跟著前面的代碼,從而減少指令跳轉。###

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,596評論 25 708
  • 在此特此聲明:一下所有鏈接均來自互聯網,在此記錄下我的查閱學習歷程,感謝各位原創作者的無私奉獻 ! 技術一點一點積...
    遠航的移動開發歷程閱讀 11,257評論 12 197
  • 本方案中采用的PHP擴展方式為: ?下載PHP對應版本的源碼,在其中加入、生成擴展(如smsupport.so);...
    WebSSO閱讀 1,656評論 1 2
  • PHP執行原理** php是一門應用非常簡單,開發效率極高的一門語言,其弱類型的變量能省去程序員大量的定義變量、類...
    人在碼途閱讀 1,488評論 1 7
  • 每個時代都有英雄,后輩人看前輩的歷史多有不屑,其中緣由在于時也,運也,命也,若是吾輩從之,定當人中龍鳳。但不能否認...
    d9a7bf245ece閱讀 605評論 1 1