1. 被final修饰的类

public final class FinalClass {

	public void getJava() {
String str1 = "Java ";
String str2 = "final ";
for (int i = 0; i < 10000; i++) {
str1 += str2;
}
} public void getJava_Final() {
String str1 = "Java ";
String str2 = "final ";
for (int i = 0; i < 10000; i++) {
str1 += str2;
}
} }

2: 被final修饰的方法

public class FinalFunction {

	public void getJava() {
String str1 = "Java ";
String str2 = "final ";
for (int i = 0; i < 10000; i++) {
str1 += str2;
}
} public final void getJava_Final() {
String str1 = "Java ";
String str2 = "final ";
for (int i = 0; i < 10000; i++) {
str1 += str2;
}
}
}

3. 测试类:

public class TestFinal {

	@Test
public void test5() {
FinalClass finalClass = new FinalClass();
FinalFunction finalFunction = new FinalFunction();
long t1=0;
long t2=0;
long t3=0;
long t4=0;
long t5=0; long tim1 = 0;
long tim2 = 0;
long tim3 = 0;
long tim4 = 0;
long tim5 = 0;
for(int j=0; j<10;j++){
System.out.println("正常执行:========================");
long start = System.nanoTime();
String str1 = "Java ";
String str2 = "final ";
for (int i = 0; i < 10000; i++) {
str1 += str2;
} tim1 = (System.nanoTime() - start)/1000000;
System.out.println("正常的执行时间为:" + (tim1)
+ "毫秒时间");
t1 = t1 + tim1;
System.out.println("finalClass:=====================");
start = System.nanoTime();
finalClass.getJava();
tim2 = (System.nanoTime() - start)/1000000;
System.out.println("调用不带final修饰的方法执行时间为:"
+ tim2 + "毫秒时间");
t2 = t2 + tim2;
start = System.nanoTime();
finalClass.getJava_Final();
tim3 = (System.nanoTime() - start)/1000000;
System.out.println("调用final修饰的方法执行时间为:"
+ tim3 + "毫秒时间");
t3 = t3 + tim3;
System.out.println("finalFunction:=====================");
start = System.nanoTime();
finalFunction.getJava();
tim4 = (System.nanoTime() - start)/1000000;
System.out.println("调用不带final修饰的方法执行时间为:"
+ tim4 + "毫秒时间");
t4 = t4 + tim4;
start = System.nanoTime();
finalFunction.getJava_Final();
tim5 = (System.nanoTime() - start)/1000000;
System.out.println("调用final修饰的方法执行时间为:"
+ tim5 + "毫秒时间");
t5 = t5+ tim5;
}
System.out.println("正常执行:========================");
System.out.println("正常的执行10次平均时间为:" + t1/10 + "毫秒时间");
System.out.println("finalClass:=====================");
System.out.println("调用不带final修饰的方法执行10次平均时间为:"+ t2/10 + "毫秒时间");
System.out.println("调用final修饰的方法执行10次平均时间为:" + t3/10 + "毫秒时间");
System.out.println("finalFunction:=====================");
System.out.println("调用不带final修饰的方法执行10次平均时间为:" + t4/10 + "毫秒时间");
System.out.println("调用final修饰的方法执行10次平均时间为:"+ t5/10 + "毫秒时间");
}
}

4. 结果

正常执行:========================
正常的执行时间为:1573毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1410毫秒时间
调用final修饰的方法执行时间为:1402毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1285毫秒时间
调用final修饰的方法执行时间为:1339毫秒时间
正常执行:========================
正常的执行时间为:1523毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1444毫秒时间
调用final修饰的方法执行时间为:1457毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1446毫秒时间
调用final修饰的方法执行时间为:1480毫秒时间
正常执行:========================
正常的执行时间为:1355毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1321毫秒时间
调用final修饰的方法执行时间为:1330毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1435毫秒时间
调用final修饰的方法执行时间为:1328毫秒时间
正常执行:========================
正常的执行时间为:1277毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1350毫秒时间
调用final修饰的方法执行时间为:1390毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1323毫秒时间
调用final修饰的方法执行时间为:1271毫秒时间
正常执行:========================
正常的执行时间为:1406毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1352毫秒时间
调用final修饰的方法执行时间为:1336毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1267毫秒时间
调用final修饰的方法执行时间为:1436毫秒时间
正常执行:========================
正常的执行时间为:1322毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1308毫秒时间
调用final修饰的方法执行时间为:1270毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1431毫秒时间
调用final修饰的方法执行时间为:1315毫秒时间
正常执行:========================
正常的执行时间为:1273毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1300毫秒时间
调用final修饰的方法执行时间为:1368毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1090毫秒时间
调用final修饰的方法执行时间为:1099毫秒时间
正常执行:========================
正常的执行时间为:1081毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1133毫秒时间
调用final修饰的方法执行时间为:1079毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1089毫秒时间
调用final修饰的方法执行时间为:1068毫秒时间
正常执行:========================
正常的执行时间为:1111毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1098毫秒时间
调用final修饰的方法执行时间为:1086毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1113毫秒时间
调用final修饰的方法执行时间为:1046毫秒时间
正常执行:========================
正常的执行时间为:1144毫秒时间
finalClass:=====================
调用不带final修饰的方法执行时间为:1057毫秒时间
调用final修饰的方法执行时间为:1114毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行时间为:1094毫秒时间
调用final修饰的方法执行时间为:1064毫秒时间
正常执行:========================
正常的执行10次平均时间为:1306毫秒时间
finalClass:=====================
调用不带final修饰的方法执行10次平均时间为:1277毫秒时间
调用final修饰的方法执行10次平均时间为:1283毫秒时间
finalFunction:=====================
调用不带final修饰的方法执行10次平均时间为:1257毫秒时间
调用final修饰的方法执行10次平均时间为:1244毫秒时间

5. 总结

基本上带final的效率比不加稍微快点,但也不是很明显。同样这个测试跑了多次,有时带final的效率比不带final的低,个人觉得final在效率的提升上不是很明显。

final的用途主要是它修饰在类,方法,变量上体现的一些特性上。

final效率分析的更多相关文章

  1. in和exists的区别与SQL执行效率分析

    可总结为:当子查询表比主查询表大时,用Exists:当子查询表比主查询表小时,用in SQL中in可以分为三类: 1.形如select * from t1 where f1 in ('a','b'), ...

  2. mssql分页原理及效率分析

    下面是常用的分页,及其分页效率分析. 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID NO ...

  3. 团队工作效率分析工具gitstats

    如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo:又或者,你关心某个开源软件的开发进度,那么你可以试一试gitstats. gitstats 是一个git仓库 ...

  4. 声笔飞码GB2312单字效率分析

    -----------------------声笔飞码强字方式单字效率分析-------------------------- 2   keys: 567       items, 381900209 ...

  5. Flash和js交互的效率分析

    Flash和js交互的效率分析   AS代码: var time:int = getTimer(); for (var i:int = 0; i < 50000; i++) { External ...

  6. [GIt] 团队工作效率分析工具gitstats

    copy : http://www.cnblogs.com/ToDoToTry/p/4311637.html 如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo ...

  7. 回溯和DFS效率分析

    回溯和DFS效率分析 一.心得 多组数据记得初始化 两组样例,找圆点点的个数 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# . ...

  8. Project Euler 第一题效率分析

    Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...

  9. group by与distinct效率分析及优化措施

    如何使用group by进行去重 因为mysql的distinct在结果集中,全部不同,才可以去重.所以,当我们进行去重处理的时候,需要单独对某列进行去重,可以使用group by子句进行分组去重se ...

随机推荐

  1. 转载“用USBOOT制作DOS启动盘”

    使用软件: Usboot和MaxDOS_5.6s_U盘版. 由于我的U盘容量比较小,暂时只能做DOS启动功能,其它功能如Windows PE,等我以后测试成功后再补充说明. U盘是啥? 读音优盘,可以 ...

  2. POJ 1459 Power Network 最大流(Edmonds_Karp算法)

    题目链接: http://poj.org/problem?id=1459 因为发电站有多个,所以需要一个超级源点,消费者有多个,需要一个超级汇点,这样超级源点到发电站的权值就是发电站的容量,也就是题目 ...

  3. 启动Tomcat出现Using CATALINA_BASE

    有一次命令行启动Tomcat的时候,出现: Using CATALINA_BASE: "D:\apache-tomcat-6.0.35"Using CATALINA_HOME: & ...

  4. Java集合类操作优化总结

    清单 1.集合类之间关系 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHas ...

  5. bootstrap兼容IE8 解决办法

    bootstrap有使用CSS3,所以ie9以下浏览器不会很顺畅.IE9以下的兼容性不是很好.IE本身就是怪胎,就搞一些和外界标准不一致.搞得web开发考虑这考虑那的兼容性,蛋疼! 基本上css3的没 ...

  6. TF卡的Class4/Class6/Class10

    TF卡全称TransFlash卡,即T-Flash又称MicroSD,随设备微型化的需要,TF卡用途越来越广,速度也越来越快,从最初的Class2早已发展到目前主流的Class10,TF卡体积为15m ...

  7. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    一张图看懂开源许可协议,开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozi ...

  8. 《大数据Spark企业级实战 》

    基本信息 作者: Spark亚太研究院   王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...

  9. linux下解压缩jar包

    在部署项目是需要对jar中的文件进行编辑,这就要在linux命令行下对jar进行解压缩操作. 比如有个jar包,/usr/local/EtnetChinaApplication.jar 解包到临时目录 ...

  10. Hive JSON数据处理的一点探索

    背景   JSON是一种轻量级的数据格式,结构灵活,支持嵌套,非常易于人的阅读和编写,而且主流的编程语言都提供相应的框架或类库支持与JSON数据的交互,因此大量的系统使用JSON作为日志存储格式.   ...