Что такое хороший способ измерения времени выполнения кода в VBScript?
Или не получается, как это сделать в JavaScript?
Что такое хороший способ измерения времени выполнения кода в VBScript?
Или не получается, как это сделать в JavaScript?
Для VBScript вы можете использовать таймер:
StartTime = Timer()
EndTime = Timer()
Response.Write("Seconds to 2 decimal places: " & FormatNumber(EndTime - StartTime, 2))
Или ASP Profiler (то есть для среды ASP.)
Для JavaScript вы можете использовать Date:
var start = new Date().getTime()
alert("Milliseconds: " + (new Date().getTime() - start))
Firebug также имеет профайлер для JavaScript.
Для JavaScript я бы порекомендовал вам использовать профилировщик, например встроенный в Firebug:
(источник: getfirebug.com)
Другие альтернативы могут быть включены в Google Chrome или IE8
Если вы хотите сделать это программно, вы можете использовать объекты 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 используйте Firebug или IE или бесплатно Профайлер изданий DynaTrace AJAX.
Это действительно зависит от того, что вы пытаетесь измерить?
Если вы испытываете что-то и хотите знать, как долго некоторые куски идут, вы можете просто объявить начальную и конечную временную переменную, а затем сделать разницу между ними.
d = new Date();
x = 0;
for (i = 0; i < 1e7; ++i) { x += i; }
d2 = new Date();
d2 - d
12296
Используйте объект Date
, который возвращает значение valueOf()
в миллисекундах с 1 января 1970 года. Затем вы можете вычесть время, чтобы получить истекшее время в миллисекундах.
Это - отличная статья о сроках JavaScript, из книги "Даже более быстрые веб-сайты". Две вещи, о которых следует помнить, - это то, что объекты JavaScript Date часто имеют разрешение до 15 мс (это зависит от браузера и операционной системы), а большинство профилировщиков имеют эффект наблюдателя. Обратите внимание, что Google Speed Tracer (новый с момента публикации статьи) исчерпывает процесс и собирает данные асинхронно, чтобы минимизировать эффект наблюдателя.