我有一些Excel VBA代码可以运行多次迭代。 每次迭代基本上计算一个数组,直到达到目标,通常是大约8或6次尝试 问题是我需要运行几百次并且系统太慢了。
首先我计算了达到目标需要多少时间:通常大约16毫秒。 然后我计时每个循环,我得到的通常是他们的时间在0ms(非常快),除了一次16ms。 然后我重复了几次(CTRL + ALT + F9)而没有任何变化,并且需要16ms的循环变化(有时是第2次,有时是第5次等等)
顺便说一句,有时它是15ms ...所以我理解这是一个多任务处理系统,但是有什么方法可以使这种运行更加一致吗?
作为参考,这是执行时间的代码:
While (Abs(Y - Me.Model.Tjref) > 0.5) And (Count < 100)
Count = Count + 1
t(Count) = GetTickCount
If Y > x Then ' left condition
X1 = x
Y1 = Y
Else ' right condition
X2 = x
Y2 = Y
End If
x = (X1 + X2) / 2
Me.Model.Tjref = x
Y = Me.Model.Tjmax
t(Count) = GetTickCount - t(Count)
t1 = t1 + t(Count)
Wend
MsgBox t(1) & " " & t(2) & " " & t(3) & " " & t(4) & " " & t(5) & " " & t(6) & " " & t(7) & " " & t(8) & " " & t(9) & " " & t(10) & " tot: " & t1
然而,实际的计算时间很长,分为几类......
我并不担心16毫秒,但是当我在这16毫秒的时间内多次运行时,重新计算一张表就会有10秒钟... 谢谢你的帮助!!!!!!
答案 0 :(得分:3)
并非您的代码需要额外的时间,GetTickCount
的分辨率大约为10到16毫秒。您只能获得此值的倍数的时间值。
答案 1 :(得分:0)
使Excel.exe成为实时优先级并再次测试(这将影响代码运行时的系统响应):