繁体   English   中英

如何在VBScript或JavaScript中测量代码执行时间?

[英]How to measure code execution time in VBScript or JavaScript?

VBScript中测量代码执行时间的好方法是什么?

或者没有在JavaScript中如何做到这一点?

对于VBScript,您可以使用Timer:

StartTime = Timer()
EndTime = Timer()
Response.Write("Seconds to 2 decimal places: " & FormatNumber(EndTime - StartTime, 2))

ASP Profiler (用于ASP环境。)

对于JavaScript,您可以使用日期:

var start = new Date().getTime()
alert("Milliseconds: " + (new Date().getTime() - start))

Firebug还有一个JavaScript的分析器。

对于JavaScript,我建议您使用分析器,如Firebug中内置的分析器:

替代文字
(来源: getfirebug.com

其他替代品可以是Google ChromeIE8附带的替代品

如果要以编程方式执行此操作,可以使用Date对象来获取时间差:

var startTime = new Date();
// ...
// ...
var endTime = new Date();
var delta = endTime - startTime; // difference in milliseconds

在这里找到了适当的小时/分钟/秒格式的完美功能: https//social.technet.microsoft.com/wiki/contents/articles/633.vbscript-determine-script-execution-time.aspx

用法:

dtmStartTime = Timer
Wscript.Echo "Hello, World!"
Wscript.Sleep 1000
Wscript.Echo "Script completed in " & GetElapsedTime

功能:

Function GetElapsedTime
    Const SECONDS_IN_DAY    = 86400
    Const SECONDS_IN_HOUR   = 3600
    Const SECONDS_IN_MINUTE = 60
    Const SECONDS_IN_WEEK   = 604800

    dtmEndTime = Timer

    seconds = Round(dtmEndTime - dtmStartTime, 2)
    If seconds < SECONDS_IN_MINUTE Then
        GetElapsedTime = seconds & " seconds "
        Exit Function
    End If
    If seconds < SECONDS_IN_HOUR Then 
        minutes = seconds / SECONDS_IN_MINUTE
        seconds = seconds MOD SECONDS_IN_MINUTE
        GetElapsedTime = Int(minutes) & " minutes " & seconds & " seconds "
        Exit Function
    End If
    If seconds < SECONDS_IN_DAY Then
        hours   = seconds / SECONDS_IN_HOUR
        minutes = (seconds MOD SECONDS_IN_HOUR) / SECONDS_IN_MINUTE
        seconds = (seconds MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE
        GetElapsedTime = Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds "
        Exit Function
    End If
    If seconds < SECONDS_IN_WEEK Then
        days    = seconds / SECONDS_IN_DAY
        hours   = (seconds MOD SECONDS_IN_DAY) / SECONDS_IN_HOUR
        minutes = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR) / SECONDS_IN_MINUTE
        seconds = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE
        GetElapsedTime = Int(days) & " days " & Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds "
        Exit Function
    End If
End Function

对于JavaScript,请使用FirebugIE分析器,或免费使用DynaTrace AJAX版本分析器

这真的取决于你想要衡量的是什么?

如果正在测试某些东西并想知道某些碎片走了多长时间,你可以只声明一个开始和停止时间变量,然后在它们之间做一个区别....

d = new Date();
x = 0;
for (i = 0; i < 1e7; ++i) { x += i; }
d2 = new Date();
d2 - d

12296

使用Date对象,它返回自1970年1月1日以来以毫秒为单位的valueOf() 。然后,您可以减去时间以获得经过的时间(以毫秒为单位)。

是一篇关于JavaScript计时的精彩文章,来自“Even Faster Websites”一书。 需要记住的两件事是,JavaScript Date对象的分辨率通常高达15ms(这取决于浏览器和操作系统),并且大多数分析器都具有观察者效果 请注意, Google Speed Tracer (自文章发布以来的新版本)用完了流程,并异步收集数据以最大限度地减少观察者的影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM