2011-03-08 46 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"