VB.NET错误处理影响运行速度

运用任何一个语言进行程序开发时,通常都会对程序开发中必然会出现的错误进行相应的处理。那么在VB.NET中,VB.NET错误处理往往会对运行速度有一定的影响。VB.NET中On Error 来捕获和处理错误,而且经常使用 On Error Resume Next 来可能产生的忽略错误。#t#

成都创新互联总部坐落于成都市区,致力网站建设服务有成都网站设计、成都网站建设、网络营销策划、网页设计、网站维护、公众号搭建、微信小程序、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!

那么 使用错误捕获是否会影响速度呢?

是的,使用VB.NET错误处理将会降低一些性能,在。Net 中,使用 Try Catch 也将会影响性能,所以我们使用Reflector 反编译微软的类库时,会发现他的子过程很少使用 Try 来捕获错误,基本都是采用可预知的方式来判断可能出现的错误,并做相应处理。

实际上,使用错误捕获后,编译后的代码实际上做了很多不为我们所知的操作,虽然 使用错误捕获从一定程度上方便了编码过程,却牺牲了一定的速度,有利有弊,所以我们应该正确的使用 错误捕获。

测试的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 

测试结果:

无错误时

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

有错误时

 
 
 
  1. ReadFieldsOnErr : 0.96  
  2. ReadFieldsNotOnErr : 0.47 

可以看到:不使用VB.NET错误处理,速度相当稳定,而使用VB.NET错误处理时,有错误的情况下速度落差较大,所以 对于在循环中 频繁调用 的子过程,建议对可能出现的错误进行预处理,减少使用 On error来提升速度。

网页名称:VB.NET错误处理影响运行速度
转载来源:http://www.mswzjz.cn/qtweb/news5/528255.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能