中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

解決VB.NET錯誤導致的運行速度

發布時間:2020-06-12 12:59:38 來源:網絡 閱讀:429 作者:jgsa 欄目:編程語言

運用任何一個語言進行程序開發時,通常都會對程序開發中必然會出現的錯誤進行相應的處理。那么在VB.NET中,VB.NET錯誤處理往往會對運行速度有一定的影響。VB.NET中On Error 來捕獲和處理錯誤,而且經常使用 On Error Resume Next 來可能產生的忽略錯誤。
   
    那么 使用錯誤捕獲是否會影響速度呢?
   
    是的,使用VB.NET錯誤處理將會降低一些性能,在。Net 中,使用 Try Catch 也將會影響性能,所以我們使用Reflector 反編譯微軟的類庫時,會發現他的子過程很少使用 Try 來捕獲錯誤,基本都是采用可預知的方式來判斷可能出現的錯誤,并做相應處理。
   
    實際上,使用錯誤捕獲后,編譯后的代碼實際上做了很多不為我們所知的操作,雖然 使用錯誤捕獲從一定程度上方便了編碼過程,卻犧牲了一定的速度,有利有弊,所以我們應該正確的使用 錯誤捕獲。
   
    測試的VB.NET
   
    Option Explicit
   
    Dim cn As
   
    New ADODB.Connection
   
    Dim rs As New ADODB.Recordset
   
    Dim m_FldsName() As String
   
    Private Sub Command1_Click()
   
    Dim II As Long
   
    Dim t As Single
   
    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.MoveNext
   
    Loop
   
    rs.MoveFirst
   
    t = Timer ReDim m_FldsName(rs.Fields.Count)
   
    For II = 0
   
    To
   
    rs.Fields.Count - 1
   
    m_FldsName(II) = rs.Fields(II)。Name
   
    Next http://lailoyeoa.blog.chinaunix.net
    
    Do Until rs.EOF = True ReadFieldsNotOnErr "Err1"
   
    ReadFieldsNotOnErr "TableName"
   
    ReadFieldsNotOnErr "Err2"
   
    rs.MoveNext
   
    Loop
   
    MsgBox "NotErr:" & Timer - t
   
    On Error Resume Next
   
    rs.MoveFirst
   
    t = Timer Do Until rs.EOF = True ReadFieldsOnErr "Err1"
   
    ReadFieldsOnErr "TableName"
   
    ReadFieldsOnErr "Err2"
   
    rs.MoveNext
Loop
   
    MsgBox "OnErr:" & Timer - t
   
    rs.Close
   
    cn.Close
   
    End Sub
   
    Private Sub
   
    ReadFieldsOnErr(FieldName As String)
   
    Dim v As Variant
   
    v = rs(FieldName)。Value
   
    End Sub
   
    Private Sub
   
    ReadFieldsNotOnErr(FieldName As String)
   
    Dim II As Long
   
    Dim IsExists As Boolean
   
    Dim v As Variant
   
    IsExists = False For II = 0 To UBound(m_FldsName) - 1
   
    If m_FldsName(II) = FieldName Then
   
    IsExists = True Exit
   
    For
   
    End If
   
    Next
   
    If IsExists = True Then
   
    v = rs(FieldName)。Value
   
    End If
   
    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

潼关县| 米脂县| 迁西县| 长春市| 金寨县| 南汇区| 鸡西市| 隆尧县| 息烽县| 彝良县| 盘锦市| 宣汉县| 柳江县| 保德县| 喜德县| 滦南县| 通城县| 边坝县| 广丰县| 许昌县| 雷州市| 肃南| 云浮市| 中宁县| 曲周县| 泉州市| 友谊县| 曲松县| 梧州市| 海宁市| 惠安县| 天长市| 朝阳区| 江津市| 沂水县| 江都市| 南昌县| 永靖县| 诸城市| 枣阳市| 隆化县|