查看單個文章
舊 2005-06-29, 11:54 AM   #1
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時級別:98 | 在線時長:10160小時 | 升級還需:37小時
註冊日期: 2002-12-07
文章: 13488
精華: 0
現金: 26849 金幣
資產: 3024779 金幣
預設 程式執行績效

這裡用到 WinAPI 函數

以下是 VB 宣告
Public Declare Function GetTickCount Lib "kernel32" () As Long

作用是 "計算Windows從啟動後所運行的總時間" 單位是1豪秒 (1ms)
1s = 1000ms = 1000000μs = 1000000000ns

接著是實作
假設我們要得知 S() 函數(指令、運算)
所要花費的時間

Function ReviseTimerTickNum(Optional ByRef ReviseTimerTickMilliSec As Long) As Long
Dim LongTick As Long

LongTick = GetTickCount
Do
Call S()
DoEvents

ReviseTimerTickNum = ReviseTimerTickNum + 1
ReviseTimerTickMilliSec = GetTickCount - LongTick
Loop Until ReviseTimerTickMilliSec > 0

End Function

'得知做多少次(S+DoEvents)會多 ReviseTimerTickMilliSec 豪秒
'得知多 ReviseTimerTickMilliSec 豪秒需做ReviseTimerTickNum次

注意 ReviseTimerTickMilliSec 通常會大於 1 (從1.xx~x.xx)

至於這個結果能做什麼?

...待續 ^^
mini 目前離線  
送花文章: 2053, 收花文章: 8067 篇, 收花: 26918 次
回覆時引用此帖