2
是否有任何標準方法(使用分析器)來檢查使用這些gcc識別的分支預測宏是否可以從指令流水線方面獲益某些時鐘週期?我們如何在程序中使用和不使用這些宏來衡量這一點?衡量流逝的時間是唯一的方法嗎?可能的和不太可能的宏
在Windows中有類似的分支預測宏(假設例如keywork?)
-Kartlee
是否有任何標準方法(使用分析器)來檢查使用這些gcc識別的分支預測宏是否可以從指令流水線方面獲益某些時鐘週期?我們如何在程序中使用和不使用這些宏來衡量這一點?衡量流逝的時間是唯一的方法嗎?可能的和不太可能的宏
在Windows中有類似的分支預測宏(假設例如keywork?)
-Kartlee
我不熟悉的,將顯示分支效率任何剖析。 Linux time
程序應該可以很好地工作以幫助您進行基準測試。
在所有現代的x86 CPU上,如果JMPcc指令不轉移並轉向下一條指令,則指令速度更快。
GCC的__builtin_expect
函數向編譯器提供了一個提示 - 它告訴if()的哪一邊應該是fall-through和哪一邊應該是分支。你應該只使用這個函數,如果你100%確定它。 VC++沒有等效的功能。我不確定ICC。
更好的方法是避免使用這些非標準功能,並使用簡介指導優化(PGO),在該程序中運行程序並記錄所有這些分支以找出問題所在。