2009-12-31 11 views

risposta

37

Per VBScript è possibile utilizzare Timer: (. Cioè per un ambiente ASP)

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

O ASP Profiler

Per JavaScript è possibile utilizzare Data:

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

Firebug ha anche un profiler per JavaScript.

+0

Wow c'è stata una grande quantità di risposte qui. Penso che il metodo "StartTime = Timer() EndTime = Timer()" funzionerà al meglio per me. Non ho bisogno di nulla di eccessivamente complicato o raffinato e questo funziona per i miei scopi. Grazie. –

0

Questo dipende davvero da cosa stai provando a misurare?

Se stanno testando qualcosa e vogliono sapere quanto tempo alcuni pezzi vanno, si può solo dichiarare una start e stop variabile tempo, poi fare una differenza tra loro ....

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

12296 

Utilizzare l'oggetto Date , che restituisce uno valueOf() in millisecondi dal 1 ° gennaio 1970. È quindi possibile sottrarre i tempi per ottenere il tempo trascorso in millisecondi.

+0

Nota: non al 100% accurato http: // ejohn.org/blog/accurate-of-javascript-time/ –

4

Per JavaScript, io mi consiglia di utilizzare un profiler, come quello incorporato in Firebug:

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

Altre alternative possono essere quello incluso in Google Chrome, o IE8

Se si desidera farlo a livello di programmazione, è possibile utilizzare gli oggetti per ottenere una differenza di orario:

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

Nota: utilizzando l'approccio Date, si aspetti che la precisione dei tempi sia al massimo entro 15ms (almeno su Windows): http://ejohn.org/blog/ accurate-of-javascript-time/ –

+0

Grazie Josh !, stavo cercando quell'articolo! – CMS

+0

Ci si possono aspettare gli stessi problemi di accuratezza in un firebug come si fa nella normale esecuzione di JavaScript. Ha anche il problema di un effetto osservatore, rallentando il tuo JavaScript perché viene eseguito nello stesso thread UI del browser che fa il javascript. – Annie

0

This è un grande articolo sul tempismo JavaScript, tratto dal libro "Anche siti Web più veloci". Due cose da tenere a mente sono che gli oggetti Data JavaScript hanno spesso una risoluzione di 15 ms (varia a seconda del browser e del sistema operativo) e la maggior parte dei profiler ha un observer effect. Si noti che Google Speed Tracer (nuovo poiché l'articolo è stato pubblicato) esaurisce il processo e raccoglie i dati in modo asincrono per ridurre al minimo l'effetto dell'osservatore.

1

trovato il perfetto funzionamento con una corretta Ore/Minuti/Sec formattazione qui: https://social.technet.microsoft.com/wiki/contents/articles/633.vbscript-determine-script-execution-time.aspx

Usage:

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

Funzione:

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 
Problemi correlati