對 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]
|
|