首页 > 其他分享 >Item30:inline函数

Item30:inline函数

时间:2024-04-09 11:15:18浏览次数:19  
标签:10 函数 编译器 函数调用 Item30 内联 inline

芝士wa
2024.4.9


原理

内联函数是C++的增强特性之一,用来降低程序的运行时间。
作用机理:把内联函数的函数体在编译器预处理的时候替换到函数调用处(副本),这样代码运行到这里的时候就不需要花时间去调用函数(减少了函数调用过程的入栈出栈开销)。
此外,内联函数仅仅是对编译器的内联建议,编译器是否采纳取决于函数本身,如果函数体非常大,那么编译器将忽略函数的内联声明,而将内联函数作为普通函数处理。


利与弊

  • 优点

  • 避免了函数调用所带来的保存现场,入栈出栈、存储函数返回值等开销,提高了程序的运行速度

  • inline函数的定义和声明应该一起写在头文件中,以便编译器查找替换

  • 缺点

  • 由于代码的替换扩展,内联函数会增大可执行程序的体积,反而导致程序变慢

  • C++内联函数的展开是中编译阶段,如果内联函数发生了改动,就需要重新编译代码


什么时候可以使用内联?

  • 对程序执行性能有要求且函数不超过10行
  • 想宏定义一个函数
  • 在类内部定义的函数会默认声明为inline函数,这有利于类实现细节的隐藏

什么函数不适合内联?

  • 函数体庞大,超过10行
  • 函数体内含有循环,switch等语句
  • 构造函数和析构函数不适合内联
  • 虚函数尽量不要内联
  • 递归函数不要内联

标签:10,函数,编译器,函数调用,Item30,内联,inline
From: https://www.cnblogs.com/cheese-wa/p/18123443

相关文章

  • C++与Qt中回调函数的两种实现方法
    一.回调函数介绍1.概念回调函数是一种在程序运行期间通过函数指针调用的函数,它通常用于实现事件驱动、异步通信、消息传递等功能。在回调函数中,被调用的函数通常称为回调函数(CallbackFunction),而调用回调函数的函数通常称为回调函数容器(CallbackContainer)。回调函数容器可......
  • 20240408,C++数组,函数,指针
    是谁说回老家学习结果摆烂了两天,是我,Π—Π! Π—Π!! 一,数组——同C1.1一维数组1.0  相同类型,连续内存,1.1  定义格式:数据类型数组名【长度】;数组类型数组名【长度】={1,2,3,……};数组类型数组名【】={1,2,3,……};1.2  遍历数组,初始化,下标【0-N】1.3  数组名:数......
  • 【简单讲解下C++max函数的使用】
    ......
  • react 函数组件和hook
    函数组件1.函数组件没有生命周期2.函数组件没有this3.函数组件通过hook完成各种操作4.函数组件本身就是render函数5.props在函数第一个参数解释useState参考https://www.cnblogs.com/ssszjh/p/14581014.htmlprops参考https://www.cnblogs.com/ssszjh/p/18118746生命周期......
  • 【Kotlin】运算符函数、解构函数、中缀函数
    1一元运算符函数1.1符号和函数符号函数+aa.unaryPlus()-aa.unaryMinus()!aa.not()a++a.dec()a--a.inc()1.2案例funmain(){varstu=Student("Tom",13)println(-stu)//打印:[moT,31]}classStudent(varname:String,va......
  • 【Kotlin】扩展属性、扩展函数
    1类的扩展​Kotlin提供了扩展类或接口的操作,而无需通过类继承或使用装饰器等设计模式,来为某个类添加一些额外的属性或函数,我们只需要通过一个被称为扩展的特殊声明来完成。通过这种机制,我们可以将那些第三方类不具备的功能强行进行扩展,方便我们的操作。1.1扩展内置类1.1......
  • python函数
    一、大纲简介:二、函数初体验案例#不使用函数,实现计数功能str1="itheima"//此处定义三个待计数字符串str2="itcast"str3="python"count=0//此处定义一个变量来计数容器foriinstr1://使用for循环来遍历count+=1//遍历字符串一次,变量容器就加一......
  • C语言07-主函数、函数原型、作用域、static和extern关键字
    第11章函数11.1函数的基本概念1.什么是函数?函数是具有特定功能的代码块2.函数的分类库函数自定义函数11.2函数基本语法①声明函数(定义函数)函数四要素:①函数名,是标识符,需要满足标识符规范②函数体,该函数的代码块,写在{}中③返回值和返回类型,......
  • RuleEngine规则引擎底层改造AviatorScript 之函数执行
    https://gitee.com/aizuda/rule-engine-open需求:使用上述开源框架进行改造,底层更换成AviatorScript,函数实现改造。原本实现方式@OverridepublicObjectrun(ExecuteFunctionRequestexecuteTestRequest){IntegerfunctionId=executeTestRequest.ge......
  • openGauss系统函数添加指导
    openGauss系统函数添加指导1、函数架构简介openGauss内函数的可以分为两个部分:​身份注册声明:openGauss中存在一个系统表pg_proc,这个表存放了所有函数的基本元信息,相当于函数的“户口本”,只有在其中可以查到的函数,才可以在SQL语句中进行调用,才有“数据库函数”的身份。......