SORU
13 EKİM 2008, PAZARTESİ


Nasıl VBA kodu süre test musun?

Farklı fonksiyonlar kez çalışan karşılaştırabilirsiniz böylece beni çalıştırmak için aldığın zaman haber olacak bir işlevi sarın, ben VBA kodu var mı?

CEVAP
13 EKİM 2008, PAZARTESİ


Fonksiyonları çok yavaş sürece, yüksek çözünürlüklü, çok bir zamanlayıcı ihtiyacınız olacak. Biliyorum en doğru bir QueryPerformanceCounter. Daha fazla bilgi için Google. Bir sınıfa aşağıdaki itmeyi deneyin, çağrı CTimer o zaman bir örnek, bir yerde global olun ve sadece .StartCounter .TimeElapsed diyebilirsin

Option Explicit

Private Type LARGE_INTEGER
    lowpart As Long
    highpart As Long
End Type

Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LARGE_INTEGER) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As LARGE_INTEGER) As Long

Private m_CounterStart As LARGE_INTEGER
Private m_CounterEnd As LARGE_INTEGER
Private m_crFrequency As Double

Private Const TWO_32 = 4294967296# ' = 256# * 256# * 256# * 256#

Private Function LI2Double(LI As LARGE_INTEGER) As Double
Dim Low As Double
    Low = LI.lowpart
    If Low < 0 Then
        Low = Low   TWO_32
    End If
    LI2Double = LI.highpart * TWO_32   Low
End Function

Private Sub Class_Initialize()
Dim PerfFrequency As LARGE_INTEGER
    QueryPerformanceFrequency PerfFrequency
    m_crFrequency = LI2Double(PerfFrequency)
End Sub

Public Sub StartCounter()
    QueryPerformanceCounter m_CounterStart
End Sub

Property Get TimeElapsed() As Double
Dim crStart As Double
Dim crStop As Double
    QueryPerformanceCounter m_CounterEnd
    crStart = LI2Double(m_CounterStart)
    crStop = LI2Double(m_CounterEnd)
    TimeElapsed = 1000# * (crStop - crStart) / m_crFrequency
End Property

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • David Wills

    David Wills

    31 Aralık 2007