見出し画像

MATLABはコードを回す度に最適化される?(x^2とx*xはどっちの処理が早い?)

matlabで二乗の計算をする際、
「x^2とx*xってどっちが早いんだろう、、、」
と急に疑問に思い、適当に回してました
(こんな時間に何を、、、)

すると、回す度にコードの処理速度が早くなることに気づきました(あってるよね?)

たぶん、何度も使ってる計算はすぐ取り出せるようになってるのかな?

実際に回してたコードは以下の通りです

i = i + 1;
fprintf("%d回目\n", i)

tic
1^2;
toc

tic
1*1;
toc

連続して10回実行した結果はこちらです

>> i = 0

i =

     0

>> comparison_squaring
1回目
経過時間は 0.000156 秒です。
経過時間は 0.000092 秒です。
>> comparison_squaring
2回目
経過時間は 0.000234 秒です。
経過時間は 0.000055 秒です。
>> comparison_squaring
3回目
経過時間は 0.000344 秒です。
経過時間は 0.000060 秒です。
>> comparison_squaring
4回目
経過時間は 0.000110 秒です。
経過時間は 0.000057 秒です。
>> comparison_squaring
5回目
経過時間は 0.000464 秒です。
経過時間は 0.000327 秒です。
>> comparison_squaring
6回目
経過時間は 0.000007 秒です。
経過時間は 0.000003 秒です。
>> comparison_squaring
7回目
経過時間は 0.000005 秒です。
経過時間は 0.000002 秒です。
>> comparison_squaring
8回目
経過時間は 0.000005 秒です。
経過時間は 0.000003 秒です。
>> comparison_squaring
9回目
経過時間は 0.000006 秒です。
経過時間は 0.000003 秒です。
>> comparison_squaring
10回目
経過時間は 0.000006 秒です。
経過時間は 0.000003 秒です。

10回目以降も同じような実行時間でした

この結果から、繰り返し利用される計算はすぐ行えるようにするか、結果をどこかに格納しているのかな?と思いました

本来の目的であった
「x^2とx*xはどっちが早いだろう」は
x*xに軍配が上がるのかな?って感じです

結論: 課金の力ってスゲー!!

いいなと思ったら応援しよう!