這個測試使用的是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