`

内联函数

 
阅读更多

内联函数出现背景:

        调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。也就是通常说的压栈和出栈。因此,函数调用要有一定的时间和空间方面的开销。那么对于那些函数体代码不是很大,又频繁调用的函数来说,这个时间和空间的消耗会很大。

 

内联函数的概念: 

         那怎么解决这个性能消耗问题呢,这个时候需要引入内联函数了。内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来直接进行替换。(作用类似于C里的宏)

        在java中使用final关键字来指示一个函数为内联函数,例如:

public final void method1() {     
   //TODO something     
}  

 这个指示并不是必需的。final关键字只是告诉编译器,在编译的时候考虑性能的提升,可以将final函数视为内联函数。 但最后编译器会怎么处理,编译器会分析将final函数处理为内联和不处理为内联的性能比较了。

 

内联函数的使用: 

       内联默认开启,-XX:-Inline,可以关闭,但是不要关闭,一旦关闭对性能有巨大影响。

        方法是否内联取决于方法有多热和方法的大小,很热的方法如果方法字节码小于325字节才会内联,这个大小由参数 -XX:MaxFreqInlinesSzie=N 调整,但是这个很热与热点编译不同,没有任何参数可以调整热度。方法小于35个字节码,一定会内联,这个大小可以通过参数-XX:MaxInlinesSzie=N 调整。

 

内联函数的弊端: (空间换时间)

         由于在编译时将函数体中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    内联函数-14.08.25

    ### 内联函数详解 #### 一、内联函数概述 内联函数是C++语言中的一个重要特性,它主要用于提高程序的运行效率。通过在函数调用处直接嵌入函数体,内联函数避免了传统函数调用带来的额外开销(如参数压栈、返回地址...

    内联函数体要放在头文件

    内联函数体要放在头文件:深入理解与实践 标题“内联函数体要放在头文件”以及描述“内联函数体要放在头文件中。基本知识。需要的可以看。”,简明扼要地指出了C++编程中内联函数的定义与使用规则的一个重要方面。...

    如何使用内联函数,请看这个资料

    "内联函数详解" 内联函数(inline function)是 C++ 语言中的一种特殊函数,具有优缺点,今天我们将深入探究内联函数的定义格式、编程风格、优缺点、使用注意事项,以及与宏的区别。 首先,内联函数的定义格式是将...

    对内联函数与普通函数的一些比较与分析.doc

    内联函数和普通函数是C++编程中两种不同的函数实现方式,它们在程序性能和内存使用上有显著区别。内联函数的主要目的是为了提高程序的执行效率,通过避免函数调用时的开销,如参数传递、函数调用的返回过程等。而...

    预处理宏和内联函数的区别

    《预处理宏与内联函数:理解它们的区别与应用》 预处理宏和内联函数在C/C++编程中都是为了提升程序效率而设计的工具,但它们在使用上有着本质的区别。本文将深入探讨这两种技术,帮助开发者更好地理解和利用它们。 ...

    内联函数和宏的区别的分析与总结

    内联函数和宏在C++编程语言中是两种常见的代码优化技术,它们都可以用来替代函数调用,以减少函数调用带来的开销。然而,两者在实现方式、编译过程和功能特性上有着显著的区别。 首先,我们来看内联函数。内联函数...

    arm 内联函数手册

    ARM内联函数手册是一本专注于ARM架构下高级SIMD(单指令多数据)架构扩展NEON技术的编程参考资料。本书主要面向ARMv7和ARMv8两个版本,提供了与NEON指令集相关的内联函数的详细信息和使用方法。内联函数作为编译器...

    内联函数笔记

    内联函数是C++编程语言中的一种特性,它主要用于提高程序执行效率,特别是在频繁调用的小型函数中。内联函数的设计目标是替代C语言中的宏定义,克服宏定义的一些弊端,同时保留其效率优势。 在C语言中,宏定义(如`...

    内联函数及三种重载

    内联函数及三种重载代码,C++实习经常用到的代码内容

    inline-in-iar_c.rar_iar inline 函数_iar 内联函数_msp430f4152

    内联函数是C编程语言中一个非常重要的特性,它允许函数体在被调用的地方直接展开,从而减少了函数调用的开销。在嵌入式系统编程,特别是针对微控制器如MSP430F4152这样的低功耗微处理器时,这种优化尤为重要,因为它...

    VC中内联函数的定义和案例共3页.pdf.zip

    内联函数是C++编程语言中的一个重要特性,它在Visual C++(简称VC)环境中有着广泛的应用。内联函数的主要目的是为了提高程序的执行效率,通过将函数体插入到每个调用点来避免函数调用时的开销,如栈帧的建立、参数...

    C语言中的宏定义与内联函数:深入理解与实践

    宏定义和内联函数都可以用来提高代码的执行效率,但它们在实现方式和使用场景上有所不同。宏定义在预处理阶段进行文本替换,不进行类型检查,而内联函数在编译时进行类型检查。宏定义适用于简单的代码替换,而内联...

    浅析MATLAB中的内联函数.pdf

    【标题】:“浅析MATLAB中的内联函数” 在MATLAB编程环境中,内联函数(Inline Function)是一种特殊类型的函数,它允许用户在不创建独立的M文件的情况下定义和使用函数。内联函数的名称来源于C语言中的内联函数...

    内联函数inline使用实例

    内联函数(inline)在C++编程语言中是一种优化手段,用于提高程序的运行效率。它的主要作用是在编译期间将函数体插入到每个调用该函数的地方,从而避免了函数调用时的开销,如函数调用的压栈、跳转以及返回等过程。...

    C语言中的内联函数(inline)与宏定义(#define)详细解析

    内联函数和宏定义在C语言中都是用来优化程序性能的工具,但它们在使用上有着本质的区别。内联函数提供了更加安全和可调试的代码替代宏定义,尤其是在需要兼顾性能和代码可读性的场景下。 内联函数是C++引入的概念,...

    c++中的宏、内联函数和宏的比较

    ### C++中的宏、内联函数和宏的比较 在C++编程中,宏和内联函数是提高代码效率和可读性的两种常见方法。它们各自有着不同的应用场景和特点,了解这些差异对于编写高质量的C++代码至关重要。 #### 宏(Macro) 宏...

    浅析MATLAB中的内联函数.docx

    MATLAB中的内联函数是一种特殊的函数形式,它允许用户在不创建单独的M文件的情况下创建和使用函数。在MATLAB 7之前,内联函数是一个常用的技术,它模仿了C语言中的内联函数机制,目的是减少函数调用时的开销。在...

    内联函数&类的成员函数

    在深入探讨内联函数与类的成员函数之前,我们首先明确这两个概念的基本含义与作用。 ### 内联函数 内联函数(inline function)是C++中的一种优化手段,其目的是减少函数调用的开销。当一个函数被声明为内联时,...

    C++语言内联函数的引出-宏函数的缺陷.zip

    在C++编程语言中,内联函数的引入主要与宏函数的缺陷有关。宏函数是C++中的一个预处理器特性,允许程序员定义可替换的文本片段。然而,宏函数在某些情况下存在一些固有问题,这使得C++引入了内联函数作为更安全、更...

Global site tag (gtag.js) - Google Analytics