新聞中心
運(yùn)用任何一個(gè)語(yǔ)言進(jìn)行程序開(kāi)發(fā)時(shí),通常都會(huì)對(duì)程序開(kāi)發(fā)中必然會(huì)出現(xiàn)的錯(cuò)誤進(jìn)行相應(yīng)的處理。那么在VB.NET中,VB.NET錯(cuò)誤處理往往會(huì)對(duì)運(yùn)行速度有一定的影響。VB.NET中On Error 來(lái)捕獲和處理錯(cuò)誤,而且經(jīng)常使用 On Error Resume Next 來(lái)可能產(chǎn)生的忽略錯(cuò)誤。#t#

成都創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、微信小程序、軟件開(kāi)發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷(xiāo)領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
那么 使用錯(cuò)誤捕獲是否會(huì)影響速度呢?
是的,使用VB.NET錯(cuò)誤處理將會(huì)降低一些性能,在。Net 中,使用 Try Catch 也將會(huì)影響性能,所以我們使用Reflector 反編譯微軟的類(lèi)庫(kù)時(shí),會(huì)發(fā)現(xiàn)他的子過(guò)程很少使用 Try 來(lái)捕獲錯(cuò)誤,基本都是采用可預(yù)知的方式來(lái)判斷可能出現(xiàn)的錯(cuò)誤,并做相應(yīng)處理。
實(shí)際上,使用錯(cuò)誤捕獲后,編譯后的代碼實(shí)際上做了很多不為我們所知的操作,雖然 使用錯(cuò)誤捕獲從一定程度上方便了編碼過(guò)程,卻犧牲了一定的速度,有利有弊,所以我們應(yīng)該正確的使用 錯(cuò)誤捕獲。
測(cè)試的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
- 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
測(cè)試結(jié)果:
無(wú)錯(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)用 的子過(guò)程,建議對(duì)可能出現(xiàn)的錯(cuò)誤進(jìn)行預(yù)處理,減少使用 On error來(lái)提升速度。
網(wǎng)站欄目:VB.NET錯(cuò)誤處理影響運(yùn)行速度
鏈接分享:http://www.5511xx.com/article/djooici.html


咨詢(xún)
建站咨詢(xún)
