Как измерить время выполнения кода в VBScript или JavaScript?
Что такое хороший способ измерения времени выполнения кода в VBScript?
Или не получается, как это сделать в JavaScript?
Ответы
Ответ 1
Для 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.
Ответ 2
Для JavaScript я бы порекомендовал вам использовать профилировщик, например встроенный в Firebug:
(источник: getfirebug.com)
Другие альтернативы могут быть включены в Google Chrome или IE8
Если вы хотите сделать это программно, вы можете использовать объекты Date
чтобы получить разницу во времени:
var startTime = new Date();
// ...
// ...
var endTime = new Date();
var delta = endTime - startTime; // difference in milliseconds
Ответ 3
Нашел идеальную функцию с правильным форматированием часов/мин/сек:
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
Ответ 4
Для JavaScript используйте Firebug или IE или бесплатно Профайлер изданий DynaTrace AJAX.
Ответ 5
Это действительно зависит от того, что вы пытаетесь измерить?
Если вы испытываете что-то и хотите знать, как долго некоторые куски идут, вы можете просто объявить начальную и конечную временную переменную, а затем сделать разницу между ними.
Ответ 6
d = new Date();
x = 0;
for (i = 0; i < 1e7; ++i) { x += i; }
d2 = new Date();
d2 - d
12296
Используйте объект Date
, который возвращает значение valueOf()
в миллисекундах с 1 января 1970 года. Затем вы можете вычесть время, чтобы получить истекшее время в миллисекундах.
Ответ 7
Это - отличная статья о сроках JavaScript, из книги "Даже более быстрые веб-сайты". Две вещи, о которых следует помнить, - это то, что объекты JavaScript Date часто имеют разрешение до 15 мс (это зависит от браузера и операционной системы), а большинство профилировщиков имеют эффект наблюдателя. Обратите внимание, что Google Speed Tracer (новый с момента публикации статьи) исчерпывает процесс и собирает данные асинхронно, чтобы минимизировать эффект наблюдателя.