加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

我怎样才能比较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值并分别对它们进行标记.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读