成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET錯誤處理影響運行速度

開發 后端
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來提升速度。

責任編輯:曹凱 來源: wewill.cn
相關推薦

2009-10-21 10:05:30

VB.NET運行環境

2009-10-14 16:46:25

VB.NET OnSt

2010-01-08 14:50:47

VB.NET測試硬盤速

2009-10-27 11:39:03

VB.NET事件處理程

2010-01-18 16:58:29

VB.NET Over

2010-01-21 17:58:40

VB.NET List

2010-01-22 15:42:01

VB.NET錯誤

2010-01-14 18:22:05

VB.NET硬盤速度測

2009-10-29 14:02:24

VB和VB.NET比較

2009-08-05 16:04:50

2009-10-20 14:21:55

VB.NET fnSi

2009-10-14 12:51:41

VB.NET Data

2011-06-17 11:05:22

VB.NET

2009-06-24 15:45:32

VB.NET

2010-01-12 15:04:01

VB.NET異常處理

2010-01-14 15:15:22

VB.NET數據行處理

2009-11-03 17:31:01

VB.NET窗體

2009-10-27 15:02:07

VB.NET文件處理

2009-11-02 17:12:01

VB和VB.NET

2010-01-21 17:34:48

VB.NET Bool
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99精品免费久久久久久久久日本 | 久久久青草婷婷精品综合日韩 | 亚洲国产成人av好男人在线观看 | 中文一区二区视频 | 日韩精品1区2区3区 爱爱综合网 | 成人精品一区二区 | 一区二区福利视频 | 蜜桃臀av一区二区三区 | 免费视频一区二区 | 91精品国产91久久综合桃花 | 精品国产黄色片 | 无吗视频 | 91传媒在线观看 | 国产91丝袜在线播放 | 91影院在线观看 | 亚洲成av| 欧美一区不卡 | 久久久久久久久国产精品 | 成人国产一区二区三区精品麻豆 | 国产重口老太伦 | 国产高清在线精品一区二区三区 | 国产剧情一区二区三区 | 精品综合视频 | 91精品入口蜜桃 | 亚洲www.| 国产成人精品一区二区 | 国产91在线播放 | 亚洲综合一区二区三区 | 不卡一区 | 一级黄色片毛片 | 91免费观看国产 | 91精品国产综合久久久久久丝袜 | 中文字幕四虎 | 欧美激情一区 | 日韩和的一区二区 | 国产情侣久久 | 精产国产伦理一二三区 | 国产激情在线播放 | 国产精品自拍视频 | 国产精品免费在线 | 中文无码日韩欧 |