第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

java try...catch語句為什么會(huì)降低程序運(yùn)行速度?

java try...catch語句為什么會(huì)降低程序運(yùn)行速度?

紅糖糍粑 2018-12-06 20:56:03
請(qǐng)?jiān)敿?xì)分析或者發(fā)個(gè)有詳細(xì)分析的鏈接。 嫌我問題短。。。把代碼也發(fā)一下吧。 double b = 0; String s = ""; long ii = System.currentTimeMillis(); for(int i = 0; i<20000;i++) { try { b = StrictMath.pow(b+i, 1.0/3); s = s + b+";"; }catch(Exception e){ e.printStackTrace(); }finally { } } //System.out.println("b = "+b + "\ns = "+ s); System.out.println(System.currentTimeMillis()-ii); double c = 0; String ss = ""; long iii = System.currentTimeMillis(); for(int i = 0; i<20000;i++) { c = StrictMath.pow(c+i, 1.0/3); ss = ss + c+";"; } //System.out.println("b = "+c + "\nss = "+ ss); System.out.println(System.currentTimeMillis()-iii); 這是我的測(cè)試代碼,輸出如下 1711416397
查看完整描述

4 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

你可以把

for(int i = 0; i<20000;i++) {
??????????? try {
??????????????? b = StrictMath.pow(b+i, 1.0/3);
??????????????? s = s + b+";";
??????????? }catch(Exception e){
??????????????? e.printStackTrace();
??????????? }finally {

??????????? }
??????? }

修改為:


??????????? try {

for(int i = 0; i<20000;i++) {
??????????????? b = StrictMath.pow(b+i, 1.0/3);
??????????????? s = s + b+";";
??????? }
??????????? }catch(Exception e){
??????????????? e.printStackTrace();
??????????? }finally {
??????????? }

這樣會(huì)好很多(依據(jù)你的循環(huán)次數(shù)而定).但是仍然比沒有 try catch 的代碼執(zhí)行要慢.加了 try catch 后,除了會(huì)增加代碼體積,還會(huì)消耗額外的資源.

因?yàn)榘l(fā)生了異常后,程序的執(zhí)行路線需要從 try 保護(hù)體中跳轉(zhuǎn)到 catch 過濾表達(dá)式中,那么編譯器在編譯期間必須產(chǎn)生必要的代碼和數(shù)據(jù)結(jié)構(gòu)與系統(tǒng)的異常分發(fā)函數(shù)密切配合,大體來講就是分析異常處理代碼的結(jié)構(gòu),封裝和標(biāo)記每部分,注冊(cè)異常處理器函數(shù).

從這個(gè)過程來看,在沒有異常產(chǎn)生時(shí),代碼體積增大了,執(zhí)行的語句增多了,自然程序執(zhí)行效率就低;發(fā)生異常后,需要分發(fā)異常到指定的異常處理函數(shù),析構(gòu)局部變量,沒有匹配的異常處理函數(shù)時(shí),還要展開當(dāng)前調(diào)用棧,向上尋找匹配的異常處理函數(shù).

查看完整回答
反對(duì) 回復(fù) 2018-12-16
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

很正常嘛,try異常本來就是耗系統(tǒng)資源的。

查看完整回答
反對(duì) 回復(fù) 2018-12-16
?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

聽說try里面的代碼,每執(zhí)行一句,系統(tǒng)要檢查一下異常列表,看是否有異常,即便是int 這些聲明變量的語句。

查看完整回答
反對(duì) 回復(fù) 2018-12-16
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

你多運(yùn)行幾次試試,結(jié)果肯定不一樣,運(yùn)行時(shí)間還跟你程序分配到的cpu時(shí)間有關(guān),如果在運(yùn)行第一個(gè)的時(shí)候電腦還在運(yùn)行其他程序時(shí)間自然會(huì)比較慢。

我個(gè)人認(rèn)為常說的try...catch耗資源是因?yàn)楫a(chǎn)生異常后,對(duì)系統(tǒng)的資源消耗比較大,不產(chǎn)生異常影響是不大的。

查看完整回答
反對(duì) 回復(fù) 2018-12-16
  • 4 回答
  • 0 關(guān)注
  • 833 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)