[ADO.NET] Open/Close Connection對效能的影響測試

這個測試使用的是Access的資料檔案與 OleDb 相關類別,雖然過去就知道不斷地Open/Close OleDbConnection會影響效能,不過由於很少用Access而且使用 SqlDb相關類別時有Bulk可以用,所以從來也沒有想過倒底會產生多大的影響,所以就很無聊地寫了一個測試程式來測看看真實的效能影響數據。

        這個測試使用的是Access的資料檔案與  OleDb 相關類別,雖然過去就知道不斷地Open/Close OleDbConnection會影響效能,不過由於很少用Access而且使用 SqlDb相關類別時有Bulk可以用,所以從來也沒有想過倒底會產生多大的影響,所以就很無聊地寫了一個測試程式來測看看真實的效能影響數據。

       整個程式的內容沒有什麼重點,主要就是一個使用不斷地Open/Close OleDbConnection的方法Insert 資料;另一個則是在Open OleDbConnection 後一路Insert 資料,最後才做Close OleDbConnection。至於資料表中也只開了一個長整數型別的欄位而已。

       有趣地在於最後的結果,我分別插入了 1000/2000/3000筆資料進Access資料表,觀察了一下結果。      

Insert 筆數 每次Open/Close
花費時間 (秒)
僅Open/Close一次
花費時間 (秒)
1000 53 3
2000 105 7
3000 162 11

       依據我不太精確的計算結果顯示其效能為 50 秒/每千筆差距,也就是說每當Open/Close一次就會差上個0.05秒,老實講這差距真的滿大的,當然這在不同電腦上應該會產生不甚相同的數據,不過結論就是在使用大量寫入時應儘量減少Open/Close OleDbConnection的次數。

       對這個滿無聊的測試程式有興趣者請在以下連結下載:DbConnectionTest0.zip