Blueimp 論壇首頁
  首頁  | 討論區  | 最新話題  | 搜尋  | XML  |  登入

此話題中所有文章數: 1 [ 話題狀態: 一般 ]
上一話題 此文章已經觀看 23 次 而且有 0 篇回應 下一話題
會員大頭照
男寶寶 Moonnight 《護衛隊長》
文章: 716
v3.8.8

對 try-catch 的效能測試

之前看雜誌上提到 try-catch 會使用較多資源,便作了幾個測試。分別為:
測試1:使用 try-catch 以及不使用 try-catch 的測試
測試2:使用 try-catch 的範圍、數量測試

測試1中跑 150000 次時,時間比(ms)約 1700:10,
測試2忘記紀錄時間,但是可以很明顯感覺 try-catch 結構越多越慢。

結論和雜誌上建議的一樣,雖然 try-catch 能夠提供程式較穩定的執行,但並不是所有程式碼都放在 try-catch。一些可以預期的錯誤,還是可以嘗試用 if 排除。

最後 try-catch 用了較多資源,但是也不應該對它產生恐懼。畢竟有些無法預料的 Exception 還是需要 try-catch 才能排除。

/*** 以下是測試的程式碼 ***/

class TestTryCatch {
 int count = 150000 ;
 /**
  * test1(),test2()。

  * 測試 try-catch 和 if 差異.
  * ***跑 150000 次時,時間比約 1700:10
  */
 public void test1() {

  int k = 0;
  for (int i = 0; i < count; i++) {
   int j = i % 3;
   try {
    k = (i / j);
   } catch (Exception e) {
   }
  }
 }
 public void test2() {
  int k = 0;
  for (int i = 0; i < count; i++) {
   int j = i % 3;
   if (j != 0) {
    k = (i / j);
   }
  }
 }


 /**
  * 與 test3(),test4() 差異在於 try-catch 範圍和數量
  * ***try-catch 越多,越慢
  * @param count int
  */
 public void test3() {
  int k = 0, m = 0, n = 0;

  for (int i = 0; i < count; i++) {
   int j = i % 3;
   try {
    m = (i / j);
    n = (i / j);
    k = (i / j);
   } catch (Exception e) {}
  }
 }
 public void test4() {
  int k = 0, m = 0, n = 0;
  for (int i = 0; i < count; i++) {
   int j = i % 3;
   try {
    m = (i / j);
   } catch (Exception e) {}
   try {
    n = (i / j);
   } catch (Exception e) {}
   try {
    k = (i / j);
   } catch (Exception e) {}
  }
 }
}

----------------------------------------
[編輯文章 1 次, 最後修改: Moonnight 於 2005/9/7 上午 10:42:26]

[2005/7/5 上午 11:36:28]   [返迴此篇文章頂端 ]  回到頂端