VB.NET的錯(cuò)誤處理是否影響運(yùn)行速度

VB.NET的錯(cuò)誤處理是否影響運(yùn)行速度,很多新手對此不是很清楚,為了幫助大家解決這個(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ì)對程序開發(fā)中必然會(huì)出現(xiàn)的錯(cuò)誤進(jìn)行相應(yīng)的處理。那么在VB.NET中,VB.NET錯(cuò)誤處理往往會(huì)對運(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

  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 

測試結(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ò)誤的情況下速度落差較大,所以 對于在循環(huán)中 頻繁調(diào)用 的子過程,建議對可能出現(xiàn)的錯(cuò)誤進(jìn)行預(yù)處理,減少使用 On error來提升速度。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

名稱欄目:VB.NET的錯(cuò)誤處理是否影響運(yùn)行速度
URL網(wǎng)址:http://muchs.cn/article18/ghshgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動(dòng)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站