JAVA内联函数

内联函数在C++中可以用inline来定义内联函数,例如:

inline int min(int a, int b)
{
 return a > b ? b : a;

}

如果想要用内联函数,那么该函数的代码逻辑不要超过10行,尽量保证代码的短小精悍。体量大的代码逻辑不适合当做内联函数使用。

为什么要这样考虑?

废话少说,原因是这样的,使用内联函数主要目的是为了提高代码的执行效率。

那么为什么要用内联函数来提高代码执行效率呢?

因为如果不是内联函数而是普通函数的话,调用函数都要做很多工作:调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行,然后执行完了之后,还要再恢复现场,类似中断那种。

这样的操作无疑是较为消耗时间的。

当使用了内联函数之后,程序在运行时,遇到调用内联函数的地方时,不需要再保存现场恢复现场等一系列的动作,而是内联的将调用函数的地方改成代码的样子,这样就省下了较多的时间。至于怎么内联的展开的,这个我还不太清楚,研究一下之后再来补充。

为什么不要写10行以上的逻辑函数当做内联函数呢?

这是因为内联函数是典型的以空间换时间,会增加内存资源的消耗,如果代码量过大,空间换时间的优势就没有了,反而可能会降低时间性能,因此在使用内联函数的时候,尽量短小精悍。

那么java中的内联函数是怎么样的呢?

java中的内联函数只能说是用final修饰的函数可以被当做内联函数用,jvm会分析final函数,自动判断是否当做内联函数使用,如果当做内联函数执行效率更好,那么会将其当做内联函数进行处理。

总结一下:

1、内联函数是以空间换时间

2、内联函数会占用更多的内存,因此需要考量其大小

3、内联函数使用得当会提升效率。

4、C++中用inline定义内联函数;java中需要用final修饰函数,是由jvm进行自动判断的。
--------------------- 

原文:https://blog.csdn.net/m0_37590468/article/details/80935692 

 

 

 
  1. public final void function(){

  2. //TODO

  3. }

        该方法在被调用时,会在调用处直接展开使用,从而提高程序执行速度。

     一般的函数都不会被当做内联函数,只有声明了final后,编译器才会考虑是不是要把函数变成内联函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值