java编译优化

#java编译器对`String常量表达式`的优化:

- 1.String+String 可以被编译器识别为常量表达

String a="ab" ;

String b="a"+"b";//编译后:b="ab"

           System.out.println(a==b);//true           


       
    分析:

编译器将"a"+"b"当做常量表达式,在编译时期进行优化,直接取"ab". 在运行时期

并没有创建新的对象,而是从jvm字符串常量池中获取之前已经存在的"ab"对象.

- 2.String+基本类型 可以被编译器识别为常量表达式
   
           String a="a1";

String b="a"+1; //"a1"

String c="a"+true;//"atrue"

String d="a"+3.14;//"a3.14"

#java编译器对`常量`优化:

* 它是编译时的一项优化技术,将代码的常量计算在编译期完成,节约了运行时的计算量.

1.常量替换

//编译前:

final int x=10;

int  y=x;

//编译后

int x=10;

int y=10;//编译时,常量替换了

2.数学恒等式的模式匹配替换

//编译前:

int x=10+10;

//编译后

int x=20;//编译时,模式匹配替换了

3.常量折叠

//编译前:

boolean flag=true||(a || b && c);

//编译后

boolean flag=true;//编译时,常量折叠了

时间: 2024-12-25 18:44:09

java编译优化的相关文章

关于java字符串编译优化问题

情景一:不好的字符串拼接习惯    起因是这样的:一个大牛在写了一篇关于java字符串优化问题的讲解,他提到:不要使用strObj+otherValue的方法将otherValue转换为字符串形式,因为底层操作会让你吓一跳的.那么底层的实质是怎么样的呢?他的意思是这样的: 比如:    String s = "I have"; int  total = 12; Dog dog = new Dog();     //假设Dog类重写了toString方法 String msg = s +

Java性能优化_转载

一.避免在循环条件中使用复杂表达式 1.在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 2.不可使用多层循嵌套. 二.集合大小 jvm为vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收.可见vector容量的扩大是一个颇费时间的事. 通常,默认的10个元素大小是不够的,你最好能准确的估计你所需要的最佳大小. array 数组效率最高,但容量固定,无法动态改变,A

java性能优化技巧

一.通用篇 "通用篇"讨论的问题适合于大多数 Java应用. 1.1     new 1.1     new 11..11 不用 nneeww关键词创建类的实例 用new 关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用.但如 果一个对象实现了Cloneable 接口,我们可以调用它的clone()方法.clone()方法不会调用任 何类构造函数. 在使用设计模式(Design Pattern)的场合,如果用 Factory模式创建对象,则改用clone() 方法创建新的

java性能优化笔记(三)java程序优化

程序代码优化要点: 字符串优化:分析String源码,了解String常用方法,使用StringBuffer.StringBuilder. List.Map.Set优化:分析常用ArrayList.LinkedList.HashMap.TreeMap.LinkedHashMap.Set接口.集合常用方法优化. 使用NIO:Buffered.Channel操作和原理,使用零拷贝. 引用优化:强引用.弱引用.软引用.虚引用.WeekHashMap. 优化技巧:常用代码优化技巧.这里不一一罗列,请参考

Java 程序优化 (读书笔记)

--From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能指标: 执行时间,CPU时间,内存分配,磁盘吞吐量,网络吞吐量,响应时间. 优化策略: 木桶原理,优化性能瓶颈. 1.2 性能调优的层次 设计调优, 代码调优, JVM调优, 数据库调优, 操作系统调优. 2. 设计优化 2.1 善用设计模式 单例模式: 对于巨大对象,节省创建对象的时间空间: 代理

java性能优化技巧二

之前整理过一篇java性能优化的博客,链接java性能优化一,今天补充几个 1. 谨慎对待Java的循环遍历 Java中的列表遍历可比它看起来要麻烦多了.就以下面两段代码为例: A: private final List<Bar> _bars; for(Bar bar : _bars) { //Do important stuff } B: private final List<Bar> _bars; for(int i = 0; i < _bars.size(); i++)

Java性能优化的9大工具

在这篇文章中,我会带着大家一起看一下9个可以帮助我们优化Java性能的工具.有一些我们已经在IDR Solutions中使用了,而另外一些有可能在个人项目中使用. NetBeans Profiler NetBeans profiler是一个NetBeans IDE插件,主要为NetBeans IDE提供性能分析相关的功.NetBeans IDE是一个开源的集成开发环境.它很好地支持所有Java应用类型(包括Java SE.JavaFX.Java ME.Web.EJB和移动应用)的开发. 这个性能

Java性能优化指南系列(三):理解JIT编译器

即时编译器概述 编译器在编译过程中通常会考虑很多因素.比如:汇编指令的顺序.假设我们要将两个寄存器的值进行相加,执行这个操作一般只需要一个CPU周期:但是在相加之前需要将数据从内存读到寄存器中,这个操作是需要多个CPU周期的.编译器一般可以做到,先启动数据加载操作,然后执行其它指令,等数据加载完成后,再执行相加操作.由于解释器在解释执行的过程中,每次只能看到一行代码,所以很难生成上述这样的高效指令序列.而编译器可以事先看到所有代码,因此,一般来说,解释性代码比编译性代码要慢.不过,解释性代码具有

Java 性能优化(编程随想的博客)

考虑写性能优化系列,主要是因为之前看到了太多性能其烂无比的 Java 代码(有些代码看得俺口瞪目呆).很多 Java 程序员在写程序时,由于不太了解 JVM 及语言本身的一些运作机制,从而导致了代码的性能出现[严重]问题(性能差一个数量级以上,我才称为"严重"). 虽然网上也有针对 Java 性能的介绍,但是很多内容都仅仅告诉读者"该这么做",而没有讲"为什么该这么做".典型的例子就是关于 String 和 StringBuffer(String