对被final关键字修饰的方法执行效率的一段测试

对被final关键字修饰的方法执行效率的一段测试

首先回顾一下final关键字的作用:

1、final类:
可以用“final”声明一个类不可再被作为超类。

2、final方法:
当一个方法用“final”来修饰时,表示该方法不可以被子类重写。
好处:
一、限制了子类中对其改写;
二、提高了执行的效率,因为这种情况属于静态绑定,Java虚拟机(JVM)的即时编译器就不会去检索该方法在其父类、子类或爷爷类、孙子类等有内联关系的类中是否存在重写,省去了动态判断究竟要执行哪一个类(具体内联关系的类)的这个名称的方法。

3、final属性:
对于成员变量和变量,也可以用“final”来修饰,表示是一个不可被修改的常量。
注意:一个方法如果需要被构造函数所调用,那么方法最好声明为“final”;否则,如果子类重写了这个方法,就可能引起意外的风险,应避免多态性的发生。

特别是第2点,我一直都感到疑惑的一点是final方法的第二点好处,究竟能够提高多少的执行效率?能在时间上节约多少?
于是,我写了一段测试代码:

 

 

以下是几组测试结果:

调用不带final关键字的Method1方法耗时(ms毫秒):80
---------------------------------------------------
调用带final关键字的Method2方法耗时(ms毫秒):57


调用不带final关键字的Method1方法耗时(ms毫秒):81
---------------------------------------------------
调用带final关键字的Method2方法耗时(ms毫秒):55


调用不带final关键字的Method1方法耗时(ms毫秒):79
---------------------------------------------------
调用带final关键字的Method2方法耗时(ms毫秒):58


调用不带final关键字的Method1方法耗时(ms毫秒):85
---------------------------------------------------
调用带final关键字的Method2方法耗时(ms毫秒):63

呵呵!原来还真是这么回事。这四组测试结果的平均节省耗时为23毫秒,如果方法的逻辑比较复杂,再加上网络传输等因素,省下的时间还是比较可观的。

以上仅为我的一个小测试,对final方法的提高执行效率一说算是有了个见证。



By CodingMouse
2009.5.5

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值