Java 中的 try catch 影響性能嗎?

<code>作者:陳樹義
來源:https://www.cnblogs.com/chanshuyi/p/is_try_catch_ineffective.html/<code>

前幾天在 code review 時發現有一段代碼中存在濫用try catch的現象。其實這種行為我們也許都經歷過,剛參加工作想盡量避免出現崩潰問題,因此在很多地方都想著 try catch一下。

但實際上這種習慣不僅會讓代碼很難看,更會影響代碼的運行性能。有些人會覺得,不就是一個 try catch 麼,怎麼會影響性能啊。那就讓我們來測試看看吧。

實驗

首先,我們看看沒有try-catch情況下,進行100萬次加法的耗時:

Java 中的 try catch 影響性能嗎?

經過5次統計,其平均耗時為:1816048納秒,即1.8毫秒。

接著,我們來看看在有try-catch情況下,進行100萬次加法的耗時:

Java 中的 try catch 影響性能嗎?

經過5次統計,其平均耗時為:1928394納秒,即1.9毫秒。

我們再來看看,如果try-catch拋出異常,進行100萬次加法的耗時:

Java 中的 try catch 影響性能嗎?

經過5次統計,其平均耗時為:780950471納秒,即780毫秒。

經過上面三次統計,我們可以看到在沒有try catch時,耗時1.8毫秒。在有try catch 但是沒有拋出異常,耗時1.9毫秒。在有拋出異常,耗時780毫秒。我們能得出一個結論:

如果try catch沒有拋出異常,那麼其對性能幾乎沒有影響。但如果拋出異常,那對程序將造成幾百倍的性能影響。

結論

雖然在沒有拋出異常時,try catch幾乎沒有性能影響。但是一旦拋出異常,那麼其對性能的影響將是巨大的。因此我們在實際編程的時候,需要特別注意try catch語句的使用,不在沒有必要的地方過多使用。


分享到:


相關文章: