java系统库性能优化注意点
对于大部分的应用系统开发来说,微秒级别的优化通常是被忽略不计或者不关心的,因为有着更多优化点,但是对于开发供应用系统使用的公用库来说,大部分的操作通常都是对字符、数字、字符串、字节的操作,且这些系统库通常调用频率很高,比如对于一个中间件来说,一次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系统库性能优化注意点的更多相关文章
- 从虚拟机视角谈 Java 应用性能优化
从虚拟机视角谈 Java 应用性能优化 周 祥, 软件工程师, IBM 简介:Java 的普及和广泛应用,以及其基于虚拟机运行的机制,使得性能问题越来越重要.本文从 Java 虚拟机的角度,特别是垃圾 ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
- Java的性能优化
http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...
- 《Java程序性能优化:让你的Java程序更快、更稳定》
Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧
- [JAVA] java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
- Java GC 专家系列5:Java应用性能优化的原则
本文是GC专家系列中的第五篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC ...
- Java 的性能优化
jvm 中的方法区: 永久区---存的类的信息.方法.常量 .静态变量 1.Java的性能优化 1.减少gc的压力,优先级比较低的线程,他是一个守护线程 回收我们的堆内存. 2.尽量的避免我们的new ...
- 35 个 Java 代码性能优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
- Java 代码性能优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
随机推荐
- Spark和hadoop的关系
1. Spark VSHadoop有哪些异同点? Hadoop:分布式批处理计算,强调批处理,常用于数据挖掘和数据分析. Spark:是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速, ...
- C primer plus 练习题 第一章
1. #include <stdio.h> int main() { //将英寸转换为厘米 1英寸=2.54厘米 int inch; printf("请输入英寸:"); ...
- 转战farbox
好久没更新博客了,感觉在博客园这种技术为主的博客里面写太多东西写得太杂了,平时的阅读体验非常糟糕,我一直都是一个喜欢记录的人,以前经常有在笔记本上写日记的习惯,但是自从用了网上博客之后,好像就再也没有 ...
- wireshark使用笔记
tcp && (ip.src==xxx.xxx.xxx.xxx || ip.dst==yyy.yyy.yyy.yyy)
- Privacy Policy
MINE Privacy Policy This unit values your privacy. You are using our service, we may collect and use ...
- MyEclipse for Spring启动时报错"An internal error occurred during: 'Updating indexes'.Java heap space"的解决办法
问题 MyEclipse for Spring在启动时,报如下错误:An internal error occurred during: 'Updating indexes'.Java heap sp ...
- Machine Learning : Pre-processing features
from:http://analyticsbot.ml/2016/10/machine-learning-pre-processing-features/ Machine Learning : Pre ...
- 8月11日嵌入式Linux开发免费项目体验邀您参与
嵌入式Linux开发免费项目体验开课啦~~我们特意邀请到粤嵌金牌讲师和技术专家,为大家带来精彩有趣的嵌入式公开课,涉及到嵌入式学习.研发的方方面面.课堂中我们能体验到的不仅仅是最新资讯.技术体验,还有 ...
- java trim
rim方法一般用来去除空格,但是根据JDK API的说明,该方法并不仅仅是去除空格,它能够去除从编码’\u0000′ 至 ‘\u0020′ 的所有字符. 回车换行也在这20个字符之中,以下是一个示例: ...
- [Altera] Device Part Number Format
大体可分为五个部分,不排除有特例. 第一部分说明器件归属的器件系列, 第二部分说明器件的封装类型, 第三部分说明器件的引脚数目, 第四部分说明器件的工作温度范围, 第五部分说明器件的速度等级. 实践中 ...