我怎样才能比较Java中的2方法?

alt*_*k52 3 java methods performance compare

我在java中有2个方法(例如Factorial计算),我必须测试这两个方法以找出哪一个更快.我将该代码作为递归和循环:

它们都在同一类数据中.

    public long FakultaetRekursiv( int n){
        if(n == 1){
        return 1;
        }
        else{
        return FakultaetRekursiv(n-1) * n;
        }
    }


    public long Fakultaet( int n){
        int x=1;
        for(int i=1; i<=n; i++){
            x= x*i;
        }
        return x;       
    }
Run Code Online (Sandbox Code Playgroud)

我听说currentTimeMillis()可能会有所帮助,但我不知道该怎么做.谢谢.

Tom*_*icz 8

微基准测试很难,使用正确的工具,例如Caliper.这是一个适合您的示例:

import com.google.caliper.SimpleBenchmark;

public class Benchmark extends SimpleBenchmark {

    @Param({"1", "10", "100"}) private int arg;

    public void timeFakultaet(int reps) {
        for (int i = 0; i < reps; ++i) {
            Fakultaet(arg);
        }
    }

    public void timeFakultaetRekursiv(int reps) {
        for (int i = 0; i < reps; ++i) {
            FakultaetRekursiv(arg);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

该框架将运行巡视time*()方法很多次,而且它将注入不同的arg值并分别标记它们.