日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
VB.NET錯(cuò)誤處理影響運(yùn)行速度

運(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

 
 
 
  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 

測(cè)試結(jié)果:

無(wú)錯(cuò)誤時(shí)

 
 
 
  1. ReadFieldsOnErr : 0。46  
  2. ReadFieldsNotOnErr : 0。47 

有錯(cuò)誤時(shí)

 
 
 
  1. ReadFieldsOnErr : 0.96  
  2. 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