0

我有一些运行多次迭代的 Excel VBA 代码。每次迭代基本上都是计算一个数组,直到达到一个目标,通常大约 8 或 6 次尝试。问题是我需要运行这个数百次,系统太慢。

首先我计算了达到目标所需的时间:通常在 16 毫秒左右。然后我为每个循环计时,我知道它们的时间通常为 0 毫秒(非常快),除了一个时间为 16 毫秒的循环。然后我重复了几次(CTRL+ALT+F9),没有任何变化,需要 16 毫秒的循环会有所不同(有时是第 2 次,有时是第 5 次,等等......)

顺便说一句,有时是 15 毫秒...

所以我知道这是一个多任务系统,但是有什么方法可以让这个系统运行得更加一致吗?

作为参考,这是执行计时的代码:

      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 秒...谢谢您的帮助!!!!!!

4

2 回答 2

3

并不是您的代码花费了额外的时间,分辨率GetTickCount约为 10 到 16 毫秒。您将只能获得该值的倍数的时间值。

请参阅此处的 MSDN 文章

于 2013-09-13T03:09:21.317 回答
0

将 Excel.exe 设为 Realtime Priority 并再次测试(这会影响代码运行时的系统响应):

在此处输入图像描述

于 2013-09-13T01:21:54.430 回答