为了账号安全,请及时绑定邮箱和手机立即绑定

java如何优化编译呢?

java如何优化编译呢?

慕标琳琳 2018-07-06 11:10:40
C#默认用debug模式编译,速度和java用javac编译一样,如两者执行20亿次浮点运算都用了10s,但如果C#用release模式编译,同样是20亿次浮点运算,只用了3s,java有没有类似的优化呢?(javac的选项我看了,好像都没有可以优化编译,网上也找不到相应信息)
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

#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;//编译时,常量折叠了

查看完整回答
反对 回复 2018-07-31
?
白板的微信

TA贡献1883条经验 获得超3个赞

⒈五言古诗⒉乐府⒊七言古诗⒋乐府⒌五言律诗唐诗宋词

查看完整回答
反对 回复 2018-07-31
  • 1 回答
  • 0 关注
  • 1033 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号