2009-12-31 3 views

ответ

37

Для VBScript вы можете использовать таймер: (., Что является для среды ASP)

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

Или ASP Profiler

Для JavaScript вы можете использовать Дата:

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

Firebug также имеет профилировщик JavaScript.

+0

Ничего себе, здесь была отличная партия ответов. Я думаю, что метод StartTime = Timer() EndTime = Timer() будет работать лучше всего для меня. Мне не нужно ничего слишком сложного или тонкого подробного, и это работает для моих целей. Благодарю. –

0

Это действительно зависит от того, что вы пытаетесь измерить?

Если тестируют что-то и хотят знать, как долго определенные части идут, вы могли бы просто объявить начальную и конечную временную переменную, а затем сделать разницу между ними ....

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

12296 

Используйте Date объект , который возвращает valueOf() в миллисекундах с 1 января 1970 года. Затем вы можете вычесть время, чтобы получить истекшее время в миллисекундах.

+0

Примечания: Не 100% точный http: // ejohn.org/blog/precision-of-javascript-time/ –

4

Для JavaScript, я бы порекомендовал вам использовать профайлер, как один встроенный в Firebug:

alt text http://getfirebug.com/screenScript-profile.gif

Другие альтернативы могут быть один в комплекте с Google Chrome или IE8

Если вы хотите сделать это программно, вы можете использовать Date объекты, чтобы получить разницу во времени:

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

Примечание: используя подход «Дата», ожидайте, что точность времени будет в лучшем случае в пределах 15 мс (по крайней мере в Windows): http://ejohn.org/blog/ точность-of-javascript-time/ –

+0

Спасибо, Джош !, Я искал эту статью! – CMS

+0

В Firebug вы можете ожидать тех же ошибок, что и при обычном выполнении JavaScript. Он также имеет проблему эффекта наблюдателя, замедляя работу вашего JavaScript, поскольку он работает в одном и том же потоке пользовательского интерфейса браузера, который делает javascript. – Annie

0

This - отличная статья о сроках JavaScript, из книги «Даже более быстрые веб-сайты». Две вещи, о которых следует помнить, - это то, что объекты JavaScript Date часто имеют разрешение до 15 мс (это зависит от браузера и операционной системы), а большинство профилировщиков имеют observer effect. Обратите внимание, что Google Speed Tracer (новый с момента публикации статьи) заканчивается и собирает данные асинхронно, чтобы минимизировать эффект наблюдателя.

1

Найдены идеальные функции с правильными Часами/Mins/СЕК форматирования здесь: 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 
Смежные вопросы