2011-03-08 47 views
5

我正在VBScript中进行一些性能测量。我想测量我的算法执行得有多快用于VBScript性能测量的细粒度计时器

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

这给了我几秒钟的时间。如果一种算法产生1秒的执行时间,另一种算法在2秒内产生另一种算法,这几乎不会给我任何有用的信息。我需要将问题的规模扩大到需要一分钟才能执行的事情。

有没有人知道在VBScript中做这些测量的方法,但是更精细。例如引入毫秒的东西。

我有一种感觉,在WMI中必须有一个解决方案。

+3

你需要在一个循环数百甚至数千的运行算法倍。这不仅可以补偿较低分辨率的计时器,还可以防止随机“噪音”混淆您的发现。 – 2011-03-08 10:08:16

回答

7

您可以使用VBScript Timer function获得所用时间(毫秒):

定时器函数返回的秒和毫秒数 ,因为 12:00 AM。

+1

是的,就这么简单。我选择了“计时器”作为标记,但没有智慧来检查VBScript文档中是否有该名称的函数。 – mgr326639 2011-03-08 17:25:25

+3

请注意,定时器功能的分辨率不完全是一毫秒。我找不到任何关于此的文档,但在我的Win7 64位计算机上进行实验时,分辨率为〜8ms。在工作上,在WinXP上,它大约是15毫秒。 – 2011-03-09 05:51:59

1

如果您在HP的QuickTest Pro的工作,这里有两个,你是提供方法:

定时器会给出一个结果(以毫秒为单位),您可以在一个变量

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

交易时间在QTP结果显示/报告

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