一、前言
前面,我们先接触了JAVA的帮助文档 ,也就是应用程序编程接口API.
(上次API的 学习及下载地址:https://blog.csdn.net/qq_42446456/article/details/84330764)
这次,我们继续进行学习,本次要求:完成一个 java application应用程序,计算执行 十亿次空循环所需要的时间。并在 不同cup主频的计算机上运行此程序,比较其 运算所需时间有何差别。
二、分析学习
要想从计算机上获取当前的运行时间,那么我们就需要查询和学习有关计算机系统的类与方法。
1.System类介绍
打开API文档,搜索System类,查看相关的信息如下:
可见,System也是属于jjava.lang包下的类,用final来修饰。
特点:不能被继承,包含类字段(静态)和方法,不能被实例化(不能是抽象类和工具类),它的构造被私有了,也就是说它的方法必须以静态修饰。
2.方法
如上展示的方法中,我们提取相应的public static long currentTimeMillis()
方法来进行讲解。
static long currentTimeMillis()
:以毫秒单位值返回当前的系统时间。正式的 时间取值是相对于GMT时间(格林威治时间)1970年1月1日 00:00:00:00(0时0分0秒0毫)的系统时间取值。
三、实践
为了更好的理解和应用System类,我们使用其中的static long currentTimeMillis()
方法来构造一个小的 java application应用程序 ,计算执行 十亿次空循环所需要的时间
public class SystemDemo{
public static void main(String[] args){//主方法
/*
*public static long currentTimeMillis():以毫秒值返回当前系统时间
* 这个时间是相对于1970年1月1日 00:00:00:00(0时0分0秒0毫)的系统时间
*如:1970-1-1 00:00:01 时返回:1000
* 1970-1-1 00:01:00 时返回:1000*60
* 1970-1-1 05:00:00 时返回:1000*60*60*5
*一定要注意:返回时间是以毫秒为单位。
*/
//System.out.println(System.currentTimeMillis());//输出当前计算机时间
//计算一段程序运行的效率(时间)
long start =System.currentTimeMillis(); //定义一个记录开始的时间
long s = 0;//定义一个求和变量
for(int i=0;i<1000000000;i++){//for循环执行10亿次
//System.out.println(i);//输出i的循环情况
//s=s+i;//累加求和循环的情况
}
long end =System.currentTimeMillis(); //定义一个记录结束的时间
System.out.println("执行十亿次空循环用时:"+(end - start)+"毫秒");
//System.out.println("执行十亿次累加用时:"+(end - start)+"毫秒");
}
}
四、结果
1.计算执行十亿次空循环所需时间
2.计算执行十亿次累加所需时间
有的程序可能执行需要几秒几分钟或者几毫秒,这样的话不同的程序执行都有着不同的执行时间,我们可以做出相应的统计,以便于做出相应的更好优化。