以前c++で実験してみたif文と%(剰余)の比較をjavaでもやってみました。
wrongwrong163377.hatenablog.com
実行したコード
プロジェクト全体はGitHubに上げました。
github.com
public class Main { public static int MAX = 1000000000; public static int If(){ int i = 0; int j = 0; long start = System.nanoTime(); while(i < MAX) { if((j+=1) == 100) j = 0; i++; } long end = System.nanoTime(); System.out.println("If Time:" + (end - start) / 1000000f + "ms"); return i + j; } public static int Mod(){ int i = 0; int j = 0; long start = System.nanoTime(); while(i < MAX){ j = (j+1)%100; i++; } long end = System.nanoTime(); System.out.println("Mod Time:" + (end - start) / 1000000f + "ms"); return i + j; } public static void main(String[] args) { int Ifres = If(); int Modres = Mod(); System.out.println("If :" + Ifres + "\nMod:" + Modres); } }
実行結果
実行結果は以下の通りです。
10回ほど実行して最速だったものを選びました。
Mod | If |
---|---|
3383[ms] | 249[ms] |
感想
前回の結果からどちらが速いかという結果については予想できていましたが、c++に比べてjavaのifの結果が滅茶苦茶速いですね。
何回やっても結果はかなり安定していたので、計測ミスではないと思います。
Modに関しても、言うほど遅くはありません。
こうなってくると、以前やったAndroid上でのc++とjavaの速度比較の結果が何だったのか気になります。
wrongwrong163377.hatenablog.com
気になるけど検証する時間が……。
参考にしたサイト
時間計測はこちらのサイトを参考にさせて頂きました。
qiita.com