likely() 和 unlikely()内建宏定义函数
这给出列内建函数可能发生和不可能发生的编译选项,这是一个预处理,在代码被编译成二进制后,程序在运行时候由于if/else if/else或者其他类型的“地址转换”过程,通过使用likely可以告诉编译器,这个判断发生的概率较小,编译器会将其编译到“更远”(地址跳转幅度更大的地方),这样,减小了代码跳转的幅度,减小了运行时间。
给出代码定义
#include <stdio.h># define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)int main()
{int i = 0;//is unlikely happen, but is still possible happenif(unlikely(i+1))printf("i+1 = %d\n", i+1);//so does likely()return 0;
}
likely() 和 unlikely()内建宏定义函数相关推荐
- 内联函数和宏定义函数的区别
1.不同点: 内联函数是在编译时展开,而宏在预编译时展开:在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换. 内联函数可以进行诸如类型安全检查.语句是否正确等编译功能,宏不具 ...
- 列举5个python内置函数_Python5个内建高阶函数的使用
描述 本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是: map reduce filter sorted/ ...
- unity android 宏定义,Unity各平台内置宏定义
属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...
- 宏定义函数与普通函数的区别
目录 前言 1 宏定义函数与普通函数不同 1.1 编译过程上不同 1.2 执行过程上不同 2 批判分析 3 内联函数 前言 可以在前面的系列文章中看到,FreeRTOS 的 头文件中定义了大量的宏定义 ...
- 关于C语言刷题(#define宏定义函数的常见错误)
关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...
- c/c++宏函数的定义与使用(宏定义函数)(macro definition)
文章目录 为什么要使用宏函数? 什么是宏 如何使用宏 宏的定义 不带参数的宏 带参数的宏(假参数,不是真正的参数,只是替换而已) 原理 对了,如果宏函数与函数名称相同,优先使用宏定义函数 为什么要使用 ...
- 深入浅出学Hive:Hive内建操作符与函数开发
目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...
- Madagascar的宏定义函数--判断整数的奇偶性函数
Madagascar中自己的宏定义函数判断某个整数的奇偶性,它们都在头文件rsf.h,形式如下: #define SF_ODD(n) ((n) & 1) #define SF_EVEN(n) ...
- define宏定义函数及用模板函数实现同样的功能
最近在看别人的代码的过程中,发现了宏定义代码,由于自己这块之前没有用过,所以编写了示例程序,学习一下宏定义代码. 比如我们现在有一个需求,要实现两个数字交换,这两个数字可能是整型,浮点型或者其他类型, ...
最新文章
- 用IJ和gradle启动elasticsearch5.4.3
- how mang libraries do we have: 139
- [Qt教程] 第46篇 进阶(六) 国际化
- linux光标美化包,使用 [ powerlevel10k ] 美化你的WSL (Linux)
- js中的extend的用法及其JS中substring与substr的区别
- 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)
- android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?
- POI实现超大数据的Excel的读写操作
- 博为峰Java技术题 ——JavaSE Swing顶层容器中添加菜单栏
- JCI标准认证对我国医院建设有什么意义?
- mysql cast和convert函数
- ZStack实践汇 | 快照和备份的区别
- 不小心使用了私有API的后果
- input隐藏域传值给后台
- TRACE32——List源代码查看
- python flask web框架_Python_WEB框架之Flask
- 大数据可视化常用图表--简单说
- 520被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器
- ESD和TVS管的区别
- 菜鸟写jquery入门教程(for web前端开发群4)(03)
热门文章
- 【 如何将.vue文件中的所有css代码放入一个.css文件中】
- Java: Number转换为BigDecimal:最好方法
- pytorch,cuda8,torch.cuda.is_available return flase (ubuntu14)
- Android设计模式(十五)--备忘录模式
- marquee标签、插入百度地图
- js判断页面点击事件
- opencv复杂变换cvPyrDown [6]
- java package 目录_修改jar包package目录结构操作方法
- 泰安机器人比赛_泰安学子在省青少年机器人竞赛上揽8个一等奖
- c语言编写贪吃蛇难点解析,刚学C语言,想写一个贪吃蛇的代码