下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页C语言中likely和unlikely的使用
在(单片机)/(嵌入式)(编程)中,对速度要求比较高,likely和unlikely就是一个比较好的技巧,适用于有if-else分支,且知道哪个发生概率大的情况。
1.likely和unlikely
这是两个宏,当有if-else分支时,告诉编译器,哪个条件更加有可能发生。对if-else分支结构进行优化。likely代表if分支大概率会发生,unlikely代表if分支大概率不会发生。
#definelikely(x)__buil(ti)n_expect(!!(x),1)#defineunlikely(x)__builtin_expect(!!(x),0)__builtin_expect是编译器内建函数,原型为long__builtin_expect(longexp,longc)。
题外话:!!是(C语言)中处理逻辑表达式的一个技巧。因为C语言中没有布尔变量,所以布尔值是用整形来代替的,0为假,非0为真。当x为0时,!(x)为1,!!(x)为0,!!的运算没有什么意义;但当x为非0时(比如100),!(x)为0,!!(x)为1,这样就达到了将非0值(比如100)全部都映射为1的效果。
例子:
假如有这样一个函数:
intfun(inta){if(a>100)}在实际的运行情况中,a>100不太可能发生。那就这样写:
intfun(inta){if(unlikely(a>100))}同理,如果实际情况是a>100的情况更多,就用likely。
2.注意
1.likely和unlikely使用判断必须准确,写反会使运行速度变慢。
2.编译时优化一般需要至少使用-O2选项,否则优化不起作用。
3.能否使用与编译器有关,gcc可以,clang好像也可以,msvc好像不可以。
3.原理
编译器在编译生成(汇编)代码时会在编译选项的引导下调整if分支内代码的位置,如果是likely修饰过的就调整到前面,如果是unlikely修饰过的就调整到后面。放到前面的代码可以节省跳转指令带来的时间开销,从而达到提升效率的目的。
现在的(CPU)都有(IC)(ac)he和流水线机制。在运行当前这条指令时,ICache会预取后面的指令,以提升运行效率。但是如果条件分支不满足,也就会跳转到了其他指令,那预取的指令也就没有用了,这样就降低了流水线的效率。
如果使用likely和unlikely来告诉编译器,哪个更加有可能发生,编译器将大概率执行的代码放在靠前的位置,就可以大大提高指令预取值的命中率,从而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上海市疾病预防控制中心(上海市预防医学科学院)中初级岗位招聘22人笔试备考题库及答案解析
- 企业内部审计实务操作考试及答案
- 2026湖北宜昌市消防救援局政府专职消防员招聘92人笔试参考题库及答案解析
- 香水品牌师培训课件
- 2026广东佛山市禅城区石湾第三小学招聘临聘教师笔试备考试题及答案解析
- 2026年滨州职业学院单招综合素质笔试参考题库含详细答案解析
- 香格里拉酒店入职培训
- 2026年福建莆田市涵江区区属一级国有企业高级管理人员招聘2人笔试参考题库及答案解析
- 2026北京市平谷区教育委员会所属事业单位招聘教师120人笔试参考题库及答案解析
- 2026年甘肃中医药大学附属医院招聘护理人员12人笔试参考题库及答案解析
- 2026年春期人教版二年级下册数学全册教案(核心素养教案)
- 2026年广东省湛江市高三一模高考数学试卷试题(答案详解)
- 水利工程地质勘察规范(标准版)
- 购物商城管理系统
- 中国中煤能源集团有限公司图克绿色低碳产业示范园区规划-高质量打造鄂尔多斯世界级现代煤化工产业示范区关键核心区
- 2026年高考地理压轴训练卷1
- 2026考公省考云南试题及答案
- 【初中地理】《河流与湖泊》 教学设计-2025-2026学年八年级地理上册(人教版2024)
- 蔬菜净料率行业标准参照表
- 新媒体微短剧对大学生价值观塑造的影响机制研究
- 2025年低压电工理论考试试题1000题
评论
0/150
提交评论