西安達內科技(www.xatarena.cn)的資深Java講師為大家分析編寫Java語言中整個過程有哪些耗時操作,以及如何提升效率,縮短程序執行的時間。通過REST API獲取信息,因為是使用外部系統提供的API,所以無法在此處提升效率;取得信息之后解析出有效部分,因為是對特定格式的信息進行解析,所以也無效率提升的空間。所以,效率可以大幅度提升的空間在數據庫操作部分以及程序控制部分。下面,分條敘述對耗時操作的改進方法。
1. 針對日志記錄的優化
關閉日志記錄,或者更改日志輸出級別。因為從兩臺服務器的外部系統D上獲取到的信息是相同的,所以數據庫插入操作會拋出異常,異常信息類似于“Attempt to insert duplicate record”,這樣的異常信息跟有效信息的條數相等,有上千條。這種情況是能預料到的,所以可以考慮關閉日志記錄,或者不關閉日志記錄而是更改日志輸出級別,只記錄嚴重級別(severe level)的錯誤信息,并將此類操作的日志級別調整為警告級別(warning level),這樣就不會記錄以上異常信息了。本項目使用的是 Java 自帶的日志記錄類,以下配置文件將日志輸出級別設置為嚴重級別。
default file output is in user ’ s home directory.
levels can be: SEVERE, WARNING, INFO, FINE, FINER, FINEST
java.util.logging.ConsoleHandler.level=SEVERE
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append=true
通過上述的優化之后,性能有了大幅度的提升,從原來的 100 秒左右降到了 50 秒左右。為什么僅僅不記錄日志就能有如此大幅度的性能提升呢?查閱資料,發現已經有人做了相關的研究與實驗。經常聽到 Java 程序比 C/C++ 程序慢的言論,但是運行速度慢的真正原因是什么,估計很多人并不清楚。
2. 針對數據庫連接的優化
共享數據庫連接。共有 5 次數據庫連接操作,每次都需重新建立數據庫連接,數據庫插入操作完成之后又立即釋放了,數據庫連接沒有被復用。西安達內Java培訓講師表示,為了做到共享數據庫連接,可以通過單例模式 (Singleton Pattern)獲得一個相同的數據庫連接,每次數據庫連接操作都共享這個數據庫連接。 |
 |
|