海贼19-8班现场课
9262人加入学习
(1人评价)
C语言程序设计(海贼现场课)
价格 ¥ 600.00
该课程属于 海贼19-8班(C++高薪班) 请加入后再学习

总结:

可以用Linux内核中的宏定义,来帮助CPU提前做条件分支预测,提高效率;

尽可能减少if else,条件分支判断会拖延CPU并行处理语句的效率。

取指令,指令预解析,取数据,执行,写回

 

 

【为什么CPU讨厌if语句?】

CPU会并行处理数据,如果遇到条件分支,那是做if条件里面的还是if条件外面的?

如果执行if里面的,赌错了,那么就全是无用功了,就变成串行了;

 

 

Linux内核里,写了这样一些宏定义:

#define likely(x)  __builtin_expect(!!(x), 1)

#define unlikely(x) __builtin_expect(!!(x), 0)

 

// likely 代表 x 经常成立

// unlikely 代表 x 不经常成立

 

这两行的区别,是给CPU看的。

F:取指令

D1:指令预解析

D2:取数据

EX:执行;(execute)

WB:写回;

[展开全文]

尽量减少只用分支判断的语句。可以加快运行速度,原因是不会打断cpu流水并行效率。

__builtin_系列的优化指令

[展开全文]

授课教师

C++算法工程师
高级算法研发工程师

课程特色

文档(9)
视频(50)
图文(22)
下载资料(3)