相关疑难解决方法(0)

Linux内核中可能/不太可能的宏如何工作以及它们的好处是什么?

我一直在挖掘Linux内核的某些部分,发现这样的调用:

if (unlikely(fd < 0))
{
    /* Do something */
}
Run Code Online (Sandbox Code Playgroud)

要么

if (likely(!err))
{
    /* Do something */
}
Run Code Online (Sandbox Code Playgroud)

我找到了它们的定义:

#define likely(x)       __builtin_expect((x),1)
#define unlikely(x)     __builtin_expect((x),0)
Run Code Online (Sandbox Code Playgroud)

我知道它们是为了优化,但它们是如何工作的?使用它们可以预期性能/尺寸减少多少?至少在瓶颈代码中(当然在用户空间中)是否值得麻烦(并且可能失去可移植性).

linux gcc linux-kernel likely-unlikely

331
推荐指数
6
解决办法
13万
查看次数

GCC配置文件引导优化(PGO)收集哪些信息以及哪些优化使用它?

我启用时GCC会收集哪些信息-fprofile-generate,哪些优化确实使用了收集的信息(设置-fprofile-use标志时)?

我需要引用这里.我已经搜索了一段时间,但没有找到任何记录.

有关链接时间优化(LTO)的信息将是一个加号!= d

c++ gcc lto pgo

39
推荐指数
2
解决办法
2万
查看次数

标签 统计

gcc ×2

c++ ×1

likely-unlikely ×1

linux ×1

linux-kernel ×1

lto ×1

pgo ×1