美文网首页
Tips:inline 与force_inline

Tips:inline 与force_inline

作者: dc630f46ee2d | 来源:发表于2017-10-31 08:36 被阅读0次

前期准备 函数入栈和出栈

函数每次入栈都会调用call指令,调用后还需要出栈返回到原来调用的地方。这个时间开销实际是比较大的。

247487dfbaf1ec956441e9e5e2f85817_hd.jpg

inline

inline在函数调用的地方展开,减少了调用的时候函数入栈出栈的开销,也就是说一个普通函数调用内联函数,内联函数不会进行出入栈的操作。这个只是一个提示关键字。

编译器会自己决定是否采用内联的方式来展开标记为内联的函数。一旦编译器决定使用内联,那么在编译阶段编译成函数调用而是直接扩展到调用函数体内,最终会导致不需要在在调用的时候将这个函数入栈和出栈,但会造成内存增加(因为每个调用内联的方法都会展开这个内联函数)。这个是一个典型的以空间换时间的方法。

force_inline

#define force_inline __inline __attribute__((always_inline))
force_inline替换为 __inline __attribute__((always_inline)),后者表示强制内联。

inline或者说force_inline的使用场景

1.内联函数内不允许用循环语句和开关语句。
2.由于使用内联函数会增加内存,只适合代码短的函数
3.有些函数使用内联关键字后,依然担心编译器不把它当作内联函数,可以使用强制内联
4.内联的作用和带参数的宏类似,不过多了类型检查,是很多场合下可以代替带参数的宏。

相关文章

  • Tips:inline 与force_inline

    前期准备 函数入栈和出栈 函数每次入栈都会调用call指令,调用后还需要出栈返回到原来调用的地方。这个时间开销实际...

  • IOS 内联函数Q&A

    Q:YYModel中有一个宏#define force_inline __inline__ __attribute...

  • 随手记

    Tips Tip1:float会使元素生成块级框Tip2:inline-block元素向下对齐Tip3:JavaS...

  • 居中问题

    CSS中的居中问题理解与归纳 水平居中 (1)inline或inline-block、inline-table、i...

  • inline元素与block元素

    inline元素 inline元素的width与height完全是由内容撑开的。 多个inline元素在显示时会水...

  • CSS基础-15-下拉菜单

    @[toc] 1. 基本实现 效果image.png inline-block 与 display: inline...

  • 20150730实战(分页;分页跳转)

    一、还原分页样式 display:inline与display:inline-block; 数字之间的空隙是为什么...

  • inline与block

    概念 inline与block是前端中两个基础的概念,详细的讲法应该是inline elements(内联元素),...

  • Hello MarkDown

    Inline Code Inlinecode: `Inline` Block Code use inline Co...

  • js 兼容 hack

    tips tips tips tips tips

网友评论

      本文标题:Tips:inline 与force_inline

      本文链接:https://www.haomeiwen.com/subject/qzrppxtx.html