【发布时间】:2016-12-11 05:40:49
【问题描述】:
如果你的代码“很有可能”遵循预测的分支,你应该只使用__builtin_expect() 或Linux 内核的likely() 和unlikely()。 “很可能”有多少?
我正在开发一个数据包嗅探器程序。我的程序从 2 个 NIC 捕获数据包并将它们保存在 2 个单独的缓冲区中。我希望从 NIC 1 收到 25 个数据包后,从 NIC2 收到一个数据包。
所以,我需要使用如下 if 语句:
if (_received_from_nic1) {
_Connection_Number++;
} else {
_Session_Number++;
}
那么,这是使用__builtin_expect() 还是Linux 内核的likely() 的好时机?
这种情况是否满足“很可能”的条件?
【问题讨论】:
-
我个人的经验法则是在正常程序流程中使用可能分支,在发生错误时使用不太可能分支。
标签: c++ c performance built-in