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()可能会有所帮助,但我不知道该怎么做.谢谢.
微基准测试很难,使用正确的工具,例如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值并分别标记它们.