日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java中的異常對(duì)程序效率有無(wú)影響

當(dāng)異常沒(méi)有發(fā)生時(shí),沒(méi)有影響。

其實(shí)從異常實(shí)現(xiàn)的角度來(lái)看,在throw語(yǔ)句處,跳轉(zhuǎn)到異常的處理代碼,不同的異常處理,應(yīng)該類(lèi)似C++中的虛函數(shù)表一樣的數(shù)構(gòu)結(jié)構(gòu)(待考證)。

所以如果沒(méi)有拋出異常,那和普通的代碼完全一樣。至于在拋出異常時(shí)要處理的開(kāi)銷(xiāo)和不使用異常,用返回碼等來(lái)判斷不同的錯(cuò)誤,不僅代碼復(fù)雜,而且也一樣要有處理的開(kāi)銷(xiāo)。

測(cè)試代碼:

 
 
 
  1. import java.util.Date;  
  2.  
  3. public class Test {  
  4.     long size = 1000000000L;  
  5.     public static void main(String[] args) {  
  6.         Test t = new Test();  
  7.         t.test1();  
  8.         t.test1();  
  9.         t.test1();  
  10.         t.test2();  
  11.         t.test2();  
  12.         t.test2();        
  13.         t.test1();  
  14.         t.test1();  
  15.         t.test1();  
  16.         t.test2();  
  17.         t.test2();  
  18.         t.test2();    
  19.           
  20.     }  
  21.       
  22.     long func1(long i) throws Exception{  
  23.         if(i == 0){  
  24.             throw new Exception("abc");  
  25.         }  
  26.         return i-1;  
  27.     }  
  28.       
  29.     long func2(long i){  
  30.         if(i == 0){  
  31.             return i + 1;  
  32.         }  
  33.         return i -1;  
  34.     }  
  35.       
  36.     void test1(){  
  37.         Date begin = new Date();  
  38.         long total = 0;  
  39.         for(long i = 1; i < size; ++i){  
  40.             try {  
  41.                 total += func1(i);  
  42.             } catch (Exception e) {  
  43.                 e.printStackTrace();  
  44.             }  
  45.         }  
  46.         Date end = new Date();  
  47.         System.out.println(total);  
  48.         System.out.println("test1 time:" + (end.getTime() - begin.getTime()));  
  49.           
  50.     }  
  51.       
  52.     void test2(){  
  53.         Date begin = new Date();  
  54.         long total = 0;  
  55.         for(long i = 1; i < size; ++i){  
  56.             total += func2(i);  
  57.         }  
  58.         Date end = new Date();  
  59.         System.out.println(total);  
  60.         System.out.println("test2 time:" + (end.getTime() - begin.getTime()));  
  61.     }  
  62. }  

總結(jié):異常是個(gè)很有用的功能,在不拋出異常時(shí),開(kāi)銷(xiāo)可以忽略不計(jì)。

在C++中也是如此。(TODO:測(cè)試C++代碼中異常的效率)


新聞標(biāo)題:Java中的異常對(duì)程序效率有無(wú)影響
文章位置:http://www.5511xx.com/article/coihgod.html