java测试耗时 递归 尚学堂059

System类有2个和时间有关的方法

currentTimeMillis()

public static long currentTimeMillis()

currentTimeMillis()返回当前时间(以毫秒为单位)。 请注意,虽然返回值的时间单位为毫秒,但该值的粒度取决于底层操作系统,并且可能较大。 例如,许多操作系统以几十毫秒为单位测量时间。

结果

在1970年1月1日UTC之间的当前时间和午夜之间的差异,以毫秒为单位。

nanoTime()

public static long nanoTime()

nanoTime()以纳秒为单位返回正在运行的Java虚拟机的高分辨率时间源的当前值。

该方法只能用于测量经过时间,与系统或挂钟时间的任何其他概念无关。 返回的值表示纳秒,因为一些固定但任意的起始时间(可能在将来,所以值可能是负数)。 在Java虚拟机的实例中,该方法的所有调用都使用相同的来源; 其他虚拟机实例可能会使用不同的来源。

 

仅当在Java虚拟机的同一实例中获得的两个此类值之间的差异被计算时,此方法返回的值才会变得有意义。。

例如,测量代码执行多长时间。

纳秒和毫秒

1纳秒=0.000 001毫秒

1毫秒=1000 000纳秒

如果想更明显地看到程序耗时,可以使用nanoTime()

测试时间流逝实例

public static void main(String[] args) {
		while(true) {
			long time1 = System.currentTimeMillis();
			long time2 = System.nanoTime();
			System.out.println(time1 + "  ---  " + time2);
		}
	}

+

测试递归耗时实例

public class Main {
	public static void main(String[] args) {
		long d1 = System.currentTimeMillis();  
        System.out.printf("%d阶乘的结果:%s%n", 10, factorial(10));
        long d2 = System.currentTimeMillis();
        System.out.printf("递归费时:%s%n", d2-d1);
	}
	
	/** 求阶乘的方法*/
    static long  factorial(int n){
        if(n==1){//递归头
            return 1;
        }else{//递归体
            return n*factorial(n-1);//n! = n * (n-1)!
        }
    }
}

 

展开阅读全文
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值