人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

VB6 中運用出錯處理對于速度的影響

VB6 中運用出錯處理對于速度的影響

更新時間:2022-09-05 文章作者:未知 信息來源:網絡 閱讀次數:

  在 VB6 中,我們使用 On Error 來捕獲和處理錯誤,而且經常使用 On Error Resume Next 來可能產生的忽略錯誤。

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

是的,使用錯誤處理將會降低一些性能,在。Net 中,使用 Try Catch 也將會影響性能,所以我們使用

Reflector 反編譯微軟的類庫時,會發現他的子過程很少使用 Try 來捕獲錯誤,基本都是采用可預知的方式來判斷可能出現的錯誤,并做相應處理。

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

測試的VB6代碼

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

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

可以看到:不使用錯誤處理,速度相當穩定,而使用錯誤處理時,有錯誤的情況下速度落差較大

所以 對于在循環中 頻繁調用 的子過程,建議對可能出現的錯誤進行預處理,減少使用 On error

來提升速度


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 锦屏县| 松潘县| 平遥县| 顺义区| 阜平县| 略阳县| 谢通门县| 陇南市| 博乐市| 江门市| 湖州市| 宁安市| 札达县| 石阡县| 雅江县| 维西| 呈贡县| 锡林浩特市| 潼关县| 建瓯市| 田东县| 固原市| 沁阳市| 崇信县| 呼和浩特市| 康马县| 田东县| 遵义市| 比如县| 辽宁省| 巴马| 馆陶县| 卢湾区| 南陵县| 北安市| 曲阳县| 汝城县| 景德镇市| 松江区| 江孜县| 班戈县|