wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

javaで、if文と%(剰余)のどちらが速いかを少しだけ比較

以前c++で実験してみたif文と%(剰余)の比較をjavaでもやってみました。
wrongwrong163377.hatenablog.com

実行環境

実行環境は以下の通りです。

OS Windows10 Pro
CPU Core i7 6700
MEM DDR4 2133CL13 8GBx2
JDK 1.8.0_131

実行したコード

プロジェクト全体は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