实现ASP程序执行时间统计类的代码

时间:2021-08-25 00:30:41

第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等. 

复制代码代码如下:


Class ccClsProcessTimeRecorder  
'程序作者:明月星光  
'作者主页:http://www.5iya.com/blog  
'http://www.kuozhanming.com  
'ASP程序代码执行时间统计类  

  Private ccInti,ccIntNonceTime,ccIntDecimal  
  Private ccIntStartTime,ccIntEndTime,ccIntNow,ccIntNonce  
  Private ccStrInterval,ccStrEvent,ccStrTime,ccStrStatisticLog,ccStrFormatInterval  
  Private ccArrEvent,ccArrTime  

  Private Sub Class_Initialize  
    ccStrInterval = "|"  '默认分隔符  
    ccIntDecimal = 4    '小数点后位数  
    ccStrEvent = ""  
    ccStrTime = ""  
    ccStrFormatInterval = "<br />" & vbCrLf  
    ccIntStartTime = Timer  
    ccIntNow = ccIntStartTime  
    ccIntNonce = ccIntStartTime  
  End Sub  

  Public Sub Record(ccStrEventName)  
    ccStrEvent = ccStrEvent & ccStrInterval & Replace(ccStrEventName,ccStrInterval,"")  
    ccStrTime = ccStrTime & ccStrInterval & FormatNumber(Timer-ccIntNow,ccIntDecimal,True,False,True)  
    ccIntNow = Timer  
  End Sub  

  Public Property Let Format(ccStrFormatType)  
    If LCase(Trim(ccStrFormatType)) = "html" Then  
      ccStrFormatInterval = "<br />" & vbCrLf  
    Else  
      ccStrFormatInterval = vbCrLf  
    End If  
  End Property  

  Public Function Statistic  
    If InStr(ccStrEvent,ccStrInterval) > 0 Then  
      ccIntEndTime = Timer  
      ccArrEvent = Split(ccStrEvent,ccStrInterval)  
      ccArrTime = Split(ccStrTime,ccStrInterval)  
      ccStrStatisticLog = ccStrStatisticLog & "Process Time Record" & ccStrFormatInterval  
      ccStrStatisticLog = ccStrStatisticLog & "--------------------------------------" & ccStrFormatInterval  
      For ccInti = 1 To UBound(ccArrEvent)  
        ccStrStatisticLog = ccStrStatisticLog & ccArrEvent(ccInti) & " : " & ccArrTime(ccInti) & " s" & ccStrFormatInterval  
      Next  
      ccStrStatisticLog = ccStrStatisticLog & "--------------------------------------" & ccStrFormatInterval  
      ccStrStatisticLog = ccStrStatisticLog & "Total : " & FormatNumber(ccIntEndTime-ccIntStartTime,ccIntDecimal,True,False,True) & " s"  
      Statistic = ccStrStatisticLog  
    Else  
      Statistic = "No Record"  
    End If  
  End Function  

  Public Function Nonce  
    ccIntNonceTime = FormatNumber(Timer-ccIntNonce,ccIntDecimal,True,False,True)  
    ccIntNonce = Timer  
    Nonce = ccIntNonceTime  
  End Function  

  Public Function Total  
    Total = FormatNumber(Timer-ccIntStartTime,ccIntDecimal,True,False,True)  
  End Function  

End Class 



类属性: 
1.Format 
输出时是否带HTML换行标签 
-html:输出HTML换行标签和文本换行符(默认) 
-text:仅输出文本换行符 

类方法: 
1.Record("Code Name") 
统计自上一次调用Record方法至现在的时间(第一次调用时统计声明类时至调用时时间),最后在Statistic中输出 

类函数:(即时返回信息) 
1.Nonce 
输出自上一次调用nonce函数至现在的时间(第一次调用时统计声明类时至调用时时间) 
2.Total 
输出声明类到现在总时间 
3.Statistic 
输出所有Record统计信息和总程序时间 

实例代码: 

复制代码代码如下:


Dim objRecord,i,k,j,x  

Set objRecord = New ccClsProcessTimeRecorder  
objRecord.Format = "html"  

For i = 1 To 100000  
  x = 2 + 2  
Next  

Call objRecord.Record("加法")  
For j = 1 To 100000  
  x = 2 * 2  
Next  

Call objRecord.Record("乘法")  

For k = 1 To 100000  
  x = 2 ^ 2  
Next  

Call objRecord.Record("开方")  

Response.Write objRecord.Statistic 




输出: 
Process Time Record 
-------------------------------------- 
加法 : 0.0625 s 
乘法 : 0.0469 s 
开方 : 0.1094 s 
-------------------------------------- 
Total : 0.2188 s