final关键字与内联函数
来源:互联网 发布:资源数据核查季度巡检 编辑:程序博客网 时间:2024/06/01 12:51
首先,在谈final关键字之前,有必要看说说什么叫内联函数,并且说说内联函数的调用过程,
在函数的调用过程中,程序按顺序往下执行,当执行到调用某个函数表达式时,程序会首先保护现场,记住当前的地址,并且查询函数所在的地址,然后去执行这个函数,当执行完函数时,就会回到当初记忆的地址,并且恢复现场,继续执行当前程序,因此这种方法就会消耗大量空间和时间,当被调用的函数不大,并且频繁调用时,就会消耗大量时间和空间,
那么怎么解决这个问题呢,在我们写c语言时,我们有个办法叫宏,我们可以把一些变量或者逻辑定义到宏里面,方程序编译的时候,会把程序里面调用函数的表达式,全部用函数体来代替,方程序在执行的时候就会大大缩减程序的运行时间,但是此时就会消耗大量的空间。
在java中我们是用final关键字来解决这种方法,final可以修饰方法,属性,类,当一个类被final修饰时,类里面的全部属性方法都是final的,并且子类不能继承该类,不能重新该方法,当java虚拟机在编译时,就会把程序里面所有调用该类或者方法的表达式全部用类或者函数体来代替,这样就会大大减少时间的消耗,但是会增加空间的开销,当函数体很大很大时。此时java虚拟机在编译的时候就会判断是回掉该函数性能高,还是编译就把表达式变成函数体性能高,就会来选择哪种方法
在函数的调用过程中,程序按顺序往下执行,当执行到调用某个函数表达式时,程序会首先保护现场,记住当前的地址,并且查询函数所在的地址,然后去执行这个函数,当执行完函数时,就会回到当初记忆的地址,并且恢复现场,继续执行当前程序,因此这种方法就会消耗大量空间和时间,当被调用的函数不大,并且频繁调用时,就会消耗大量时间和空间,
那么怎么解决这个问题呢,在我们写c语言时,我们有个办法叫宏,我们可以把一些变量或者逻辑定义到宏里面,方程序编译的时候,会把程序里面调用函数的表达式,全部用函数体来代替,方程序在执行的时候就会大大缩减程序的运行时间,但是此时就会消耗大量的空间。
在java中我们是用final关键字来解决这种方法,final可以修饰方法,属性,类,当一个类被final修饰时,类里面的全部属性方法都是final的,并且子类不能继承该类,不能重新该方法,当java虚拟机在编译时,就会把程序里面所有调用该类或者方法的表达式全部用类或者函数体来代替,这样就会大大减少时间的消耗,但是会增加空间的开销,当函数体很大很大时。此时java虚拟机在编译的时候就会判断是回掉该函数性能高,还是编译就把表达式变成函数体性能高,就会来选择哪种方法
阅读全文
0 0
- final关键字与内联函数
- java final方法与java内联函数
- final内联函数
- final与static关键字
- final 与 static 关键字
- static与final关键字
- static与final关键字
- 内联函数 与 宏
- 宏与内联函数
- 宏与内联函数
- 内联函数与宏
- 宏与内联函数
- 宏与内联函数
- 宏与内联函数
- 宏与内联函数
- 宏与内联函数
- 宏与内联函数
- 宏与内联函数
- 通俗地讲清楚fit_transform()和transform()的区别
- 获取上传文件的路径input file
- 一些感悟
- QT webkit 各个类之间关系--QWebView-QWebPag
- ScrollView中listview把布局顶上去的问题
- final关键字与内联函数
- fastjson list转JSONArray
- SPI FLASH 容量计算
- ionic开发——编译出错:You have not accepted the license agreements of the following SDK component
- 为什么上层社会越来越富的真相,原因居然是...
- MAC 下git diff出现 ^M
- 深度强化学习中的NAF算法-连续控制(对DQN的改进)
- 安装openssl-0.9.8报错out range of signed 32bit displacement
- 新款kubernetes日志收集利器fluent bit