亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1034 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號