这个问题分为两部分。第一个是看看是否有一个快速和简单的代码,我可以合并到我的当前的子,以检查该子将采取多快运行。我只需要精确到几秒钟,甚至几分钟。
第二,我目前正在努力优化我的潜艇的运行时间。它是一个搜索函数,允许用户指定要搜索哪些变量并在下面的工作表中显示结果。我已经上网了,我做了以下的通用应用程序,以加快我的程序
然而,每次用户运行搜索时,我的程序仍然需要5到10秒才能运行。这一次我想尽量减少。
我意识到如果不看我的代码,很难给出具体的建议,但我目前只是在寻找一般性的建议。如果在实现了一般原则之后仍然很慢,我将在这里发布我的代码。
我的搜索程序是一个线性搜索程序,并将值存储到一个数组中。不过,我的搜索函数可以容纳多达4个搜索变量,我将每个搜索存储在一个数组中,并将最后的数组合并为一个最终的结果数组。
发布于 2011-07-01 09:44:46
我通常使用GetTickCount API函数。只要你不打算在几周或几个月内测量时间,它就应该是准确的。下面是一个例子,它显示了正在计时的不同的循环措施。1滴答= 1ms
Private Declare Function GetTickCount Lib "kernel32" () As Long
Sub test()
Dim nTime
nTime = GetTickCount
Set load_array = Range("a5:z65000")
array_index = WorksheetFunction.Match("Test 15", WorksheetFunction.Index(load_array, 0, 1), 0)
rngtimer = GetTickCount - nTime
nTime = GetTickCount
load_array = Range("a5:z65000").Value
array_index = WorksheetFunction.Match("Test 15", WorksheetFunction.Index(load_array, 0, 1), 0)
arraytimer = GetTickCount - nTime
nTime = GetTickCount
load_array = Range("a5:z65000").Value
For a = LBound(load_array) To UBound(load_array)
If load_array(a, 1) = "Test 15" Then
array_index = a
End If
Next
arraylooptimer = GetTickCount - nTime
nTime = GetTickCount
For a = 1 To 65000
If Range("a5").Offset(a, 0) = "Test 15" Then
array_index = a
End If
Next
excelooptimer = GetTickCount - nTime
MsgBox ("Range Search: " & rngtimer & vbCrLf & _
"Array Search: " & arraytimer & vbCrLf & _
"ArrayLoop Search: " & arraylooptimer & vbCrLf & _
"ExcelLoop Search: " & excelooptimer)
End Sub https://stackoverflow.com/questions/6545997
复制相似问题