2011-03-08 21 views
5

Estoy haciendo algunas mediciones de rendimiento en VBScript. Quiero medir qué tan rápido mi algoritmo realizaTemporizador de grano fino para medidas de rendimiento de VBScript

t1 = Now() 
doAlotOfWork() 
t2 = Now() 
MsgBox "Operation took " & DateDiff ("s", t1, t2) & " seconds." 

Esto me da el tiempo en segundos. Si un algoritmo resulta en un tiempo de ejecución de 1 segundo y otro en 2 segundos, esto difícilmente me dará información útil. Necesito explotar el tamaño del problema a algo que demora un minuto en ejecutarse.

¿Alguien sabe de una manera de hacer este tipo de mediciones en VBScript, pero luego más refinado? Algo que introduce milisegundos por ejemplo.

Tengo la sensación de que debe haber una solución en WMI.

+3

Tiene que ejecutar sus algoritmos en un bucle cientos o incluso miles de veces. Eso no solo compensa un temporizador de resolución más baja, sino que también evita que el "ruido" aleatorio opaque sus hallazgos. –

Respuesta

7

podría utilizar el VBScript Timer function para obtener el tiempo transcurrido en milisegundos:

la función de temporizador devuelve el número de segundos y milisegundos, ya las 12:00 AM.

+1

Sí, es así de simple. Elegí "temporizador" como una etiqueta, pero no tenía la inteligencia para verificar la documentación de VBScript para una función con ese nombre. – mgr326639

+3

Tenga en cuenta que la resolución de la función 'Timer' no es exactamente de un milisegundo. No puedo encontrar ninguna documentación sobre esto, pero experimentalmente en mi computadora Win7 de 64 bits, la resolución es ~ 8ms. En el trabajo, en WinXP, son aproximadamente 15 ms. –

1

Si está trabajando en HP Quick Test Pro, aquí hay dos métodos más que le producen:

temporizadores dará un resultado (en milisegundos) que se puede almacenar en una variable

MercuryTimers("timerName").Start 
Wait 2 
Msgbox "Time is ticking..." 
MercuryTimers("timerName").Stop 
Msgbox "Elapsed time is: " & MercuryTimers("timerName").Elapsedtime & " milliseconds" 

tiempos de transacción aparecen en los resultados QTP/reportar

Services.StartTransaction "transactionName" 
Wait 2 
Msgbox "Time is ticking..." 
Services.EndTransaction "transactionName" 
Cuestiones relacionadas