VBAを使っていてふと気づいたことなのですが、 x ^ 2とx * xは計算結果は全く同じなのですが、x * xの方が6倍程度速く計算することができます。 Sub test() start_time = Timer For j = 1 To 10000 For i = 1 To 1000 y = i ^ 2 * j ^ 2 Next Next zikan = Format(Timer - start_time, "0.00") End Sub というプログラムの計算時間が3.80秒なのに対し、 y = i ^ 2 * j ^ 2をy = i * i * j * jに書き換えて実行すると 0.66秒になります。 恐らく、x ^ 2とx * xで計算アルゴリズムが異なるからだと思うのですが、 一般的によく知られたことなのでしょうか? また、どのようにアルゴリズムが異なるのでしょうか? また、VB以外の他のプログラミング言語にも見られるのでしょうか? ちなみに、 Function bekijou(x, y) bekijou = 1 For q = 1 To y bekijou = bekijou * x Next End Function という関数を作って、 y = bekijou(i, 2) * bekijou(j, 2)で実行してみたところ、計算時間は更に伸びて、 9.47秒になってしまいました。 これ以外に意外と知られていない計算速度を上げるためのコツなどがありましたら 教えてください。
↧