对于大部分的应用系统开发来说,微秒级别的优化通常是被忽略不计或者不关心的,因为有着更多优化点,但是对于开发供应用系统使用的公用库来说,大部分的操作通常都是对字符、数字、字符串、字节的操作,且这些系统库通常调用频率很高,比如对于一个中间件来说,一次rpc请求可能涉及成百上千次的操作,所以此时细微的性能就很重要了。

final static short finalShort = 120;
static short noFinalShort = 120;
volatile static short volatileFinalShort = 120;
final static int finalInt = 120;
static int noFinalInt = 120;
volatile static int volatileFinalInt = 120;
final static long finalLong = 120;
static long noFinalLong = 120;
volatile static long volatileFinalLong = 120;
final static boolean finalBool = false;
static boolean noFinalBool = false;
volatile static boolean volatileFinalBool = false;
final static String finalStr = "dofidjfe";
static String noFinalStr = "dofidjfe";
volatile static String volatileFinalStr = "dofidjfe";
final static char finalChar = 'f';
static char noFinalChar = 'f';
volatile static char volatileFinalChar = 'f';


public static void main(String[] args) throws UnsupportedEncodingException {
System.out.println("finalShort begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalShort == 121) {}
}
System.out.println("finalShort end :" + System.currentTimeMillis());
System.out.println("noFinalShort begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalShort == 121) {}
}
System.out.println("noFinalShort end :" + System.currentTimeMillis());
System.out.println("volatileFinalShort begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalShort == 121) {}
}
System.out.println("volatileFinalShort end :" + System.currentTimeMillis());

System.out.println("finalInt begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalInt == 121) {}
}
System.out.println("finalInt end :" + System.currentTimeMillis());
System.out.println("noFinalInt begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalInt == 121) {}
}
System.out.println("noFinalInt end :" + System.currentTimeMillis());
System.out.println("volatileFinalInt begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalInt == 121) {}
}
System.out.println("volatileFinalInt end :" + System.currentTimeMillis());

System.out.println("finalLong begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalLong == 121) {}
}
System.out.println("finalLong end :" + System.currentTimeMillis());
System.out.println("noFinalLong begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalLong == 121) {}
}
System.out.println("noFinalLong end :" + System.currentTimeMillis());
System.out.println("volatileFinalLong begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalLong == 121) {}
}
System.out.println("volatileFinalLong end :" + System.currentTimeMillis());

System.out.println("finalBool begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalBool == true) {}
}
System.out.println("finalBool end :" + System.currentTimeMillis());
System.out.println("noFinalBool begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalBool == true) {}
}
System.out.println("noFinalBool end :" + System.currentTimeMillis());
System.out.println("volatileFinalBool begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalBool == true) {}
}
System.out.println("volatileFinalBool end :" + System.currentTimeMillis());

System.out.println("finalStr begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalStr.equals("e")) {}
}
System.out.println("finalStr end :" + System.currentTimeMillis());
System.out.println("noFinalStr begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalStr.equals("e")) {}
}
System.out.println("noFinalStr end :" + System.currentTimeMillis());
System.out.println("volatileFinalStr begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalStr.equals("e")) {}
}
System.out.println("volatileFinalStr end :" + System.currentTimeMillis());

System.out.println("finalChar begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(finalChar == 'e') {}
}
System.out.println("finalChar end :" + System.currentTimeMillis());
System.out.println("noFinalChar begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(noFinalChar == 'e') {}
}
System.out.println("noFinalChar end :" + System.currentTimeMillis());
System.out.println("volatileFinalChar begin:" + System.currentTimeMillis());
for(int i=0;i<100000000;i++) {
if(volatileFinalChar == 'e') {}
}
System.out.println("volatileFinalChar end :" + System.currentTimeMillis());

}

finalShort begin:1476275678790
finalShort end :1476275678837
noFinalShort begin:1476275678837
noFinalShort end :1476275678868
volatileFinalShort begin:1476275678868
volatileFinalShort end :1476275678915
finalInt begin:1476275678915
finalInt end :1476275678947
noFinalInt begin:1476275678947
noFinalInt end :1476275678978
volatileFinalInt begin:1476275678978
volatileFinalInt end :1476275679025
finalLong begin:1476275679025
finalLong end :1476275679056
noFinalLong begin:1476275679056
noFinalLong end :1476275679087
volatileFinalLong begin:1476275679087
volatileFinalLong end :1476275679119
finalBool begin:1476275679134
finalBool end :1476275679165
noFinalBool begin:1476275679165
noFinalBool end :1476275679197
volatileFinalBool begin:1476275679197
volatileFinalBool end :1476275679259
finalStr begin:1476275679259
finalStr end :1476275679681
noFinalStr begin:1476275679681
noFinalStr end :1476275680246
volatileFinalStr begin:1476275680246
volatileFinalStr end :1476275680642
finalChar begin:1476275680642
finalChar end :1476275680673
noFinalChar begin:1476275680673
noFinalChar end :1476275680735
volatileFinalChar begin:1476275680735
volatileFinalChar end :1476275680775

string相对char和整型来说,要慢5-6倍。

final除了对象外,原生类型可以在编译时达到c/c++宏的效果,因此对于执行极为频繁的操作来说,能够使用原生类型性能会好得多。

java系统库性能优化注意点的更多相关文章

  1. 从虚拟机视角谈 Java 应用性能优化

    从虚拟机视角谈 Java 应用性能优化 周 祥, 软件工程师, IBM 简介:Java 的普及和广泛应用,以及其基于虚拟机运行的机制,使得性能问题越来越重要.本文从 Java 虚拟机的角度,特别是垃圾 ...

  2. Java程序性能优化技巧

    Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...

  3. Java的性能优化

    http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...

  4. 《Java程序性能优化:让你的Java程序更快、更稳定》

    Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧

  5. [JAVA] java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  6. Java GC 专家系列5:Java应用性能优化的原则

    本文是GC专家系列中的第五篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC ...

  7. Java 的性能优化

    jvm 中的方法区: 永久区---存的类的信息.方法.常量 .静态变量 1.Java的性能优化 1.减少gc的压力,优先级比较低的线程,他是一个守护线程 回收我们的堆内存. 2.尽量的避免我们的new ...

  8. 35 个 Java 代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  9. Java 代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

随机推荐

  1. Java的wait(), notify()和notifyAll()使用小结

    wait(),notify()和notifyAll()都是java.lang.Object的方法: wait(): Causes the current thread to wait until an ...

  2. cmd窗口编码方式的修改

    cmd默认的编码是采用GBK   regedit HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage 十进制:936 GB ...

  3. Controller_Abstract的改造

    Controller_Abstract 是所有Controller的父类,改造它可以节省很多时间. 比如execute方法,execute是每个action执行时都在执行的方法. function e ...

  4. POJ 1451 T9

    T9 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3083   Accepted: 1101 Description Ba ...

  5. 【Java设计模式】单例模式

    ### 1. 概述> 单例模式是确保某一个类中有且只有一个实例. ----------### 2. 饿汉式单例``` javapublic class SingletonInstance { p ...

  6. 【转】Oracle RAC 环境下的连接管理

    文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...

  7. java攻城狮之路(Android篇)--Activity生命

    一:Activity的激活 1.写一个类 extends Activity Activity是android的四大组件之一.Activity的激活分为显式意图激活和隐式意图激活.如果一个activit ...

  8. 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】

    [软件下载] 本安装实例所使用安装文件如图所示: 其中,64位版本的MySQL安装文件mysql-5.5.33-winx64.msi,可直接从官网下载,下载地址:http://dev.mysql.co ...

  9. iOS-UIButton-文字位置,字体大小,边角样式,button种类,点击事件,内容位置

    一. 设置button的文字居左,居中,居右 //设置button居左 button.contentHorizontalAlignment = UIControlContentHorizontalAl ...

  10. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...