在 VB6 中,我們使用 On Error 來捕獲和處理錯誤,而且經常使用 On Error Resume Next 來可能產生的忽略錯誤。 那么 使用錯誤捕獲是否會影響速度呢? 是的,使用錯誤處理將會降低一些性能,在。Net 中,使用 Try Catch 也將會影響性能,所以我們使用 Reflector 反編譯微軟的類庫時,會發現他的子過程很少使用 Try 來捕獲錯誤,基本都是采用可預知的方式來判斷可能出現的錯誤,并做相應處理。 實際上,使用錯誤捕獲后,編譯后的代碼實際上做了很多不為我們所知的操作,雖然 使用錯誤捕獲從一定程度上方便了編碼過程,卻犧牲了一定的速度,有利有弊,所以我們應該正確的使用 錯誤捕獲。 測試的VB6代碼 Option Explicit Dim II As Long cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=廣商;Data Source=SUPER" rs.Open "Select * from FldSet ", cn, adOpenKeyset Do Until rs.EOF = True rs.MoveFirst ReDim m_FldsName(rs.Fields.Count) Do Until rs.EOF = True On Error Resume Next rs.Close End Sub Private Sub ReadFieldsOnErr(FieldName As String) End Sub =================================== 測試結果: 無錯誤時 ReadFieldsOnErr : 0。46 ReadFieldsNotOnErr : 0。47 有錯誤時 ReadFieldsOnErr : 0.96 ReadFieldsNotOnErr : 0.47 可以看到:不使用錯誤處理,速度相當穩定,而使用錯誤處理時,有錯誤的情況下速度落差較大 所以 對于在循環中 頻繁調用 的子過程,建議對可能出現的錯誤進行預處理,減少使用 On error 來提升速度 |
溫馨提示:喜歡本站的話,請收藏一下本站!