HERD--GCC宏

减少跳转语句失效时CPU等待取指令时间,提高CPU效率

使用__builtin_expect(EXP,N)

意思是EXP==N的概率很大

一般封装为LIKELY和UNLIKELY宏

#define LIKELY(x) __builtin_expect(!!(x),1) 很可能为真

#define UNLIKELY(x) __builtin_expect(!!(x),0) 很可能为假

编译器会利用编程人员做出的判断来生成高效代码

--------------------------------------------------------------------

__inline 关键字建议编译器在合理的情况下内联编译 C 或 C++ 函数。

__inline 语义与 C++ inline 关键字的语义完全相同。

__inline 是一个存储类限定符。 它不影响函数的类型。

格式: inline _declarator;  __inline _declarator; // Microsoft相关 __forceinline _declarator; // Microsoft相关

__inline与inline等同。inline和__inline通知编译器将该函数的内容拷贝一份放在调用函数的地方,这称之为内联。内联减少了函数调用的开销,但却增加了代码量。__forceinline关键字则是不基于编译器的性能和优化分析而依赖于程序员的判断进行内联,但它也不保证一定内敛,有些情况函数是肯定不能内敛的。要慎用__forceinline,不加考虑的使用它将会造成代码量的膨胀而只得到很小的性能回报,甚至造成性能下降。 1.当使用/clr编译器选项时,如果函数使用了安全属性,则不会进行内联。 2.inline关键字仅用于C++;__inline和__forceinline在C和C++中都可用。 3.类的成员函数如果是在类定义的同时定义的,那么它默认是inline的,否则也可以使用inline指定为内联的。 4.如果函数使用了__forceinline关键字,但实际没有进行内联,将给出level 1警告。

在以下情况中,编译器不进行函数内联,即使是使用__forceinline: 1.函数具有可变数目的参数。 2.通过指向该函数的函数指针进行调用。

-----------------------------------------------------------------

__attribute__机制

设置函数、变量、类型的属性

格式是__attribute__((attribute-list))

位置约束:放在声明的尾部,在";"之前。

对结构体共用体设置属性时,有六种属性:aligned(alignment)、packed、transparent_union、unused、deprecated、may_alias

对函数设置属性时,目前见到的有:always_inline

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

关于其他选择器以及选择器优先级详解

上周我们讲解了页面浮动之后产生的问题,以及针对这个问题所采取的措施——清浮动,同时罗列了好几种清浮动的方法。那本周我们再来继续上次给大家分享的如何找标签的问题,...

2778
来自专栏极乐技术社区

wxss学习系列《一》定位(position),布局(Layout)

定位(position) 2017的微信公开课pro如期进行了,小程序将于2017年1月9日对个人开放,公司项目的demo版做了个大概,过程中花的时间最多的还是...

20410
来自专栏恰同学骚年

Web前端温故知新-CSS基础

  定义:CSS成为层叠样式表,它主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样...

723
来自专栏前端架构与工程

《JQuery技术内幕》读书笔记——自调用匿名函数剖析

Javascript语言中的自调用匿名函数格式如下: (function(){ //do somethings })(); 它还有另外两种等价写法如下: //等...

1828
来自专栏菜鸟计划

CSS布局(三) 布局模型

布局模型 在网页中,元素有三种布局模型: 1、流动模型(Flow) 默认的 2、浮动模型 (Float) 3、层模型(Layer) 1、流动模型(Flow) ...

2636
来自专栏CaiRui

CSS再学

css的注释 /*.......*/ 直接在html代码中写css <p style="color: rebeccapurple;font-size: 18px...

1667
来自专栏Android干货

CSS基本知识(慕课网)

3126
来自专栏抠抠空间

css属性详解

一、字体属性 字体   font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识...

2639
来自专栏进击的君君的前端之路

CSS理解之margin

1012
来自专栏前端说吧

css笔记 - 张鑫旭css课程笔记之 vertical-align 篇

元素vertical-align垂直对齐的位置与前后元素都没有关系 元素vertical-align垂直对齐的位置与行高line-height没有关系。 ver...

962

扫码关注云+社区