欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-21 17:00:34
第一次写asp类,实现功能:分段统计程序执行时间,输出统计表等. 复制代码 代码如下:class ccclsprocesstimerecorder&nb...
第一次写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