自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
VB.NET錯誤處理的使用必然會對性能有一定的影響。那么我們應當如何操作才能很好的避免或者是減少這一影響呢?

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

那么 使用錯誤捕獲是否會影響速度呢?

是的,使用VB.NET錯誤處理將會降低一些性能,在。Net 中,使用 Try Catch 也將會影響性能,所以我們使用Reflector 反編譯微軟的類庫時,會發(fā)現(xiàn)他的子過程很少使用 Try 來捕獲錯誤,基本都是采用可預知的方式來判斷可能出現(xiàn)的錯誤,并做相應處理。

實際上,使用錯誤捕獲后,編譯后的代碼實際上做了很多不為我們所知的操作,雖然 使用錯誤捕獲從一定程度上方便了編碼過程,卻犧牲了一定的速度,有利有弊,所以我們應該正確的使用 錯誤捕獲。

測試的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錯誤處理,速度相當穩(wěn)定,而使用VB.NET錯誤處理時,有錯誤的情況下速度落差較大,所以 對于在循環(huán)中 頻繁調用 的子過程,建議對可能出現(xiàn)的錯誤進行預處理,減少使用 On error來提升速度。

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

2009-10-21 10:05:30

VB.NET運行環(huán)境

2009-10-14 16:46:25

VB.NET OnSt

2010-01-08 14:50:47

VB.NET測試硬盤速

2009-08-05 16:04:50

2010-01-21 17:58:40

VB.NET List

2009-10-27 11:39:03

VB.NET事件處理程

2010-01-18 16:58:29

VB.NET Over

2010-01-22 15:42:01

VB.NET錯誤

2010-01-14 18:22:05

VB.NET硬盤速度測

2010-01-14 15:15:22

VB.NET數(shù)據(jù)行處理

2009-10-27 15:02:07

VB.NET文件處理

2009-11-03 17:31:01

VB.NET窗體

2009-10-29 14:02:24

VB和VB.NET比較

2010-01-12 15:04:01

VB.NET異常處理

2011-06-17 11:05:22

VB.NET

2009-06-24 15:45:32

VB.NET

2009-10-20 14:21:55

VB.NET fnSi

2009-10-14 12:51:41

VB.NET Data

2009-06-19 16:20:14

ASP.NET錯誤處理

2009-07-31 11:28:42

錯誤處理機制ASP.NET
點贊
收藏

51CTO技術棧公眾號