0

いくつかの反復を実行する Excel VBA コードがあります。各反復は基本的に配列を計算し、目標に到達するまで、通常は約 8 または 6 回試行します。問題は、これを数百回実行する必要があり、システムが遅すぎることです。

最初に、ターゲットに到達するまでにかかる時間を計りました。通常は約 16 ミリ秒です。次に、各ループのタイミングを計ったところ、16ms のタイムを除いて、通常は 0ms (非常に高速) であることがわかりました。その後、何も変更せずにこれを数回繰り返し (CTRL+ALT+F9)、16ms かかるループはさまざまです (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

ただし、実際の計算は非常に長く、いくつかのクラスに分かれています...

16ms は気にしませんが、この 16ms を何度も実行すると、シートを再計算するのに 10 秒かかります... 助けてくれてありがとう!!!!!!

4

2 に答える 2

3

コードに余分な時間がかかっているわけではなく、解像度はGetTickCount10 ~ 16 ミリ秒程度です。この値の倍数の時間値のみを取得します。

MSDN の記事はこちら

于 2013-09-13T03:09:21.317 に答える
0

Excel.exe をリアルタイムの優先度にして、再度テストします (これは、コード実行時のシステムの応答に影響します)。

ここに画像の説明を入力

于 2013-09-13T01:21:54.430 に答える