我怎样才能比较Java中的2方法?
发布时间:2020-12-15 05:10:30 所属栏目:Java 来源:网络整理
导读:我在 java中有2个方法(例如Factorial计算),我必须测试这两个方法以找出哪一个更快.我将该代码作为递归和循环: 它们都在同一类数据中. public long FakultaetRekursiv( int n){ if(n == 1){ return 1; } else{ return FakultaetRekursiv(n-1) * n; } } publi
我在
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; } 我听说currentTimeMillis()可能会有所帮助,但我不知道该怎么做. 解决方法
Micro-benchmarking is hard,使用正确的工具,例如
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); } } } 该框架将运行巡视时间*()方法很多次,而且它将注入不同的arg值并分别对它们进行标记. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |