新聞中心
VB.NET的錯(cuò)誤處理是否影響運(yùn)行速度,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),霍山企業(yè)網(wǎng)站建設(shè),霍山品牌網(wǎng)站建設(shè),網(wǎng)站定制,霍山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,霍山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
運(yùn)用任何一個(gè)語言進(jìn)行程序開發(fā)時(shí),通常都會(huì)對(duì)程序開發(fā)中必然會(huì)出現(xiàn)的錯(cuò)誤進(jìn)行相應(yīng)的處理。那么在VB.NET中,VB.NET錯(cuò)誤處理往往會(huì)對(duì)運(yùn)行速度有一定的影響。VB.NET中On Error 來捕獲和處理錯(cuò)誤,而且經(jīng)常使用 On Error Resume Next 來可能產(chǎn)生的忽略錯(cuò)誤。
那么 使用錯(cuò)誤捕獲是否會(huì)影響速度呢?
是的,使用VB.NET錯(cuò)誤處理將會(huì)降低一些性能,在。Net 中,使用 Try Catch 也將會(huì)影響性能,所以我們使用Reflector 反編譯微軟的類庫時(shí),會(huì)發(fā)現(xiàn)他的子過程很少使用 Try 來捕獲錯(cuò)誤,基本都是采用可預(yù)知的方式來判斷可能出現(xiàn)的錯(cuò)誤,并做相應(yīng)處理。
實(shí)際上,使用錯(cuò)誤捕獲后,編譯后的代碼實(shí)際上做了很多不為我們所知的操作,雖然 使用錯(cuò)誤捕獲從一定程度上方便了編碼過程,卻犧牲了一定的速度,有利有弊,所以我們應(yīng)該正確的使用 錯(cuò)誤捕獲。
測試的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, adOpenKeysetDo 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
測試結(jié)果:
無錯(cuò)誤時(shí)
ReadFieldsOnErr : 0。46 ReadFieldsNotOnErr : 0。47
有錯(cuò)誤時(shí)
ReadFieldsOnErr : 0.96 ReadFieldsNotOnErr : 0.47
可以看到:不使用VB.NET錯(cuò)誤處理,速度相當(dāng)穩(wěn)定,而使用VB.NET錯(cuò)誤處理時(shí),有錯(cuò)誤的情況下速度落差較大,所以 對(duì)于在循環(huán)中 頻繁調(diào)用 的子過程,建議對(duì)可能出現(xiàn)的錯(cuò)誤進(jìn)行預(yù)處理,減少使用 On error來提升速度。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
文章名稱:VB.NET的錯(cuò)誤處理是否影響運(yùn)行速度
瀏覽路徑:http://fisionsoft.com.cn/article/ghshgp.html