内联函数在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
-
public final void function(){
-
//TODO
-
}
该方法在被调用时,会在调用处直接展开使用,从而提高程序执行速度。
一般的函数都不会被当做内联函数,只有声明了final后,编译器才会考虑是不是要把函数变成内联函数