web-dev-qa-db-ja.com

VBScriptまたはJavaScriptでコード実行時間を測定する方法は?

VBScript でコードの実行時間を測定する良い方法は何ですか?

または、 JavaScript でそれを行う方法に失敗しましたか?

16
Rob Segal

VBScriptの場合、タイマーを使用できます。

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

または ASPプロファイラー (つまり、ASP環境用)

JavaScriptの場合、日付を使用できます。

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

Firebug JavaScript用のプロファイラーもあります。

39
jspcal

JavaScriptの場合、組み込みのようなプロファイラーを使用することをお勧めします Firebug

alt text
(ソース: getfirebug.com

他の選択肢は、Googleに含まれているものである可能性があります Chrome 、または IE8

プログラムで実行したい場合は、 Date オブジェクトを使用して時差を取得できます。

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

ここで適切な時間/分/秒のフォーマットで完璧な関数を見つけました: 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
3
Concept211

JavaScriptの場合は、 Firebug または [〜#〜] ie [〜#〜] プロファイラーを使用するか、無料 DynaTrace AJAX =エディションプロファイラー

1
Craig Stuntz

これは本当にあなたが測定しようとしているものに依存しますか?

何かをテストしていて、特定の部分がどれくらいの時間かかるか知りたい場合は、開始時間変数と停止時間変数を宣言してから、それらの間で違いを出すことができます。

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

12296
_

Dateオブジェクトを使用します。このオブジェクトは1970年1月1日からミリ秒単位でvalueOf()を返します。その後、時間を減算して経過時間をミリ秒単位で取得できます。

0
Jason S

This は、「Even Faster Websites」という本からの、JavaScriptのタイミングに関するすばらしい記事です。覚えておくべき2つのことは、JavaScript Dateオブジェクトの解像度は15msにもなることが多く(これはブラウザーとオペレーティングシステムによって異なります)、ほとんどのプロファイラーには オブザーバー効果 があります。 Google Speed Tracer (記事が公開されてから新しい)はプロセスが不足し、オブザーバー効果を最小限に抑えるために非同期でデータを収集することに注意してください。

0
Annie