掛け算と割り算どっちが速い?
最近、C#はじめました。
C#で座標変換のコードを組んでるときに π / 2 と π * 0.5 ではどっちが速いんだろ?と思い、次のコードで実験。
using System; using System.Diagnostics; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { Stopwatch sw = new Stopwatch(); Console.WriteLine("測定開始"); for (int i = 0; i < 3; i++) { sw.Reset(); sw.Start(); for (double a = 1; a < 1000000000; a++) { double b = a * 0.5; } sw.Stop(); Console.WriteLine("乗算 = {0}", sw.Elapsed); sw.Reset(); sw.Start(); for (double a = 1; a < 1000000000; a++) { double b = a / 2.0; } sw.Stop(); Console.WriteLine("除算 = {0}", sw.Elapsed); } Console.Write("測定終了"); Console.ReadKey(); } } }
なんとなく乗算の方が速そうな気がしますが…
測定開始 乗算 = 00:00:01.5435426 除算 = 00:00:01.4159989 乗算 = 00:00:01.4436793 除算 = 00:00:01.4065029 乗算 = 00:00:01.4128276 除算 = 00:00:01.4040563 測定終了
おや、予想に反して除算の方が僅かに速いですね。
何度か繰り返し実行すると乗算の方が速くなることもありますが、除算が早く終わることの方が多い印象。
とはいえ、10億回まわして数百ミリ秒程度の違いだし、どっちでもいいや。