91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VB.NET的錯誤處理是否影響運行速度

發布時間:2021-10-27 17:50:30 來源:億速云 閱讀:88 作者:柒染 欄目:編程語言

VB.NET的錯誤處理是否影響運行速度,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

運用任何一個語言進行程序開發時,通常都會對程序開發中必然會出現的錯誤進行相應的處理。那么在VB.NET中,VB.NET錯誤處理往往會對運行速度有一定的影響。VB.NET中On Error 來捕獲和處理錯誤,而且經常使用 On Error Resume Next 來可能產生的忽略錯誤。

那么 使用錯誤捕獲是否會影響速度呢?

是的,使用VB.NET錯誤處理將會降低一些性能,在。Net 中,使用 Try Catch 也將會影響性能,所以我們使用Reflector 反編譯微軟的類庫時,會發現他的子過程很少使用 Try 來捕獲錯誤,基本都是采用可預知的方式來判斷可能出現的錯誤,并做相應處理。

實際上,使用錯誤捕獲后,編譯后的代碼實際上做了很多不為我們所知的操作,雖然 使用錯誤捕獲從一定程度上方便了編碼過程,卻犧牲了一定的速度,有利有弊,所以我們應該正確的使用 錯誤捕獲。

測試的VB.NET

  1. Option Explicit  

  2. Dim cn As New ADODB.Connection  

  3. Dim rs As New ADODB.Recordset  

  4. Dim m_FldsName() As String  

  5. Private Sub Command1_Click()  

  6. Dim II As Long  

  7. Dim t As Single  

  8. cn.Open "Provider=SQLOLEDB.1;Persist 
    Security Info=False;User ID=sa;Initial 
    Catalog=廣商;Data Source=SUPER"  

  9. rs.Open "Select * from FldSet ", 
    cn, adOpenKeyset  

  10. Do Until rs.EOF = True 

  11. rs.MoveNext  

  12. Loop  

  13. rs.MoveFirst  

  14. t = Timer 

  15. ReDim m_FldsName(rs.Fields.Count)  

  16. For II = 0 To rs.Fields.Count - 1  

  17. m_FldsName(II) = rs.Fields(II).Name  

  18. Next  

  19. Do Until rs.EOF = True 

  20. ReadFieldsNotOnErr "Err1"  

  21. ReadFieldsNotOnErr "TableName"  

  22. ReadFieldsNotOnErr "Err2"  

  23. rs.MoveNext  

  24. Loop  

  25. MsgBox "NotErr:" & Timer - t  

  26. On Error Resume Next  

  27. rs.MoveFirst  

  28. t = Timer 

  29. Do Until rs.EOF = True 

  30. ReadFieldsOnErr "Err1"  

  31. ReadFieldsOnErr "TableName"  

  32. ReadFieldsOnErr "Err2"  

  33. rs.MoveNext  

  34. Loop  

  35. MsgBox "OnErr:" & Timer - t  

  36. rs.Close  

  37. cn.Close  

  38. End Sub  

  39. Private Sub ReadFieldsOnErr
    (FieldName As String)  

  40. Dim v As Variant  

  41. v = rs(FieldName).Value  

  42. End Sub  

  43. Private Sub ReadFieldsNotOnErr
    (FieldName As String)  

  44. Dim II As Long  

  45. Dim IsExists As Boolean  

  46. Dim v As Variant  

  47. IsExists = False 

  48. For II = 0 To UBound(m_FldsName) - 1  

  49. If m_FldsName(II) = FieldName Then  

  50. IsExists = True 

  51. Exit For  

  52. End If  

  53. Next  

  54. If IsExists = True Then  

  55. v = rs(FieldName).Value  

  56. End If  

  57. End Sub 

測試結果:

無錯誤時

ReadFieldsOnErr : 0。46  ReadFieldsNotOnErr : 0。47

有錯誤時

ReadFieldsOnErr : 0.96  ReadFieldsNotOnErr : 0.47

可以看到:不使用VB.NET錯誤處理,速度相當穩定,而使用VB.NET錯誤處理時,有錯誤的情況下速度落差較大,所以 對于在循環中 頻繁調用 的子過程,建議對可能出現的錯誤進行預處理,減少使用 On error來提升速度。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌县| 西吉县| 红安县| 定西市| 铁岭市| 治县。| 伊金霍洛旗| 青河县| 南华县| 平邑县| 普陀区| 独山县| 新余市| 色达县| 饶阳县| 道孚县| 思茅市| 银川市| 深水埗区| 南安市| 长垣县| 蒲江县| 台南市| 高阳县| 巴林左旗| 林西县| 琼海市| 万盛区| 云霄县| 淮安市| 西丰县| 云龙县| 延津县| 苏尼特右旗| 休宁县| 甘德县| 肥东县| 彰化县| 吴桥县| 大竹县| 潼关县|