首先需要了解的是,Java计时器工具StopWatch是一个简洁、轻量级的工具,它可以用来统计代码块、方法或程序的执行时间。下面我将详细讲解它的具体使用过程:
引入StopWatch
使用StopWatch的第一步是需要引入它所在的包,具体代码如下:
import org.apache.commons.lang3.time.StopWatch;
其中,org.apache.commons.lang3是StopWatch所在的包。
创建StopWatch对象
接下来需要创建StopWatch对象,代码如下:
StopWatch stopWatch = new StopWatch();
开始计时
执行代码时需要开启计时,即调用start()方法,代码如下:
stopWatch.start();
注意,如果程序中存在多个StopWatch计时器,需要分别对它们进行start()操作。
计时结束
当需要停止计时时,调用StopWatch的stop()方法,代码如下:
stopWatch.stop();
同样地,如果有多个计时器,需要逐个stop()。
获取计时时间
获取计时时间有多种方式,如获取毫秒数、获取秒数、格式化输出等。下面将列举常见方法。
获取计时毫秒数
使用getNanoTime()或getSplitNanoTime()方法可以获取毫秒数。其中,getNanoTime()返回从start()开始到当前时间的毫秒数,getSplitNanoTime()返回从上次调用split()方法开始到当前时间的毫秒数。代码如下:
long mills = stopWatch.getNanoTime() / 1000000;
// 或者
long splitMills = stopWatch.getSplitNanoTime() / 1000000;
获取计时秒数
使用getTime()或getSplitTime()方法可以返回从start()开始到当前时间的秒数。其中,getTime()方法返回总秒数,getSplitTime()方法返回从上次调用split()方法开始到当前时间的总秒数。代码如下:
long seconds = stopWatch.getTime() / 1000;
// 或者
long splitSeconds = stopWatch.getSplitTime() / 1000;
格式化输出
使用toString()方法可以将计时器时间转为字符串,方便输出。输出格式为“hh:mm:ss”,对应小时:分钟:秒。例如3小时15分20秒可以输出为“03:15:20”。代码如下:
String time = stopWatch.toString();
复位计时器
在进行下一个计时前需要复位计时器,使用StopWatch的reset()方法,代码如下:
stopWatch.reset();
需要注意的是,reset()方法并没有停止计时器,如果需要停止需要再次调用stop()方法。
示例一:基本使用
下面是一个基本使用的示例,经过计时,输出程序的执行时间:
import org.apache.commons.lang3.time.StopWatch;
public class Demo {
public static void main(String[] args) throws InterruptedException {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
// 模拟代码执行5秒
Thread.sleep(5000);
stopWatch.stop();
System.out.println("执行时间:" + stopWatch.getTime() / 1000f + "秒");
}
}
输出:
执行时间:5.0秒
示例二:计算排序算法时间复杂度
使用StopWatch可以方便计算排序算法的时间复杂度。下面是一个冒泡排序(Bubble Sort)的示例,计时并输出排序所需时间:
import org.apache.commons.lang3.time.StopWatch;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
int[] array = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
StopWatch stopWatch = new StopWatch();
stopWatch.start();
// 冒泡排序
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
stopWatch.stop();
System.out.println("排序后:" + Arrays.toString(array));
System.out.println("执行时间:" + stopWatch.getNanoTime() / 1000000f + "毫秒");
}
}
输出:
排序后:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
执行时间:0.218084ms
通过计时器可以发现,冒泡排序的时间复杂度为O(n²),即当数据量增长时排序时间会成倍增长。
以上就是关于Java计时器工具StopWatch的具体使用攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java计时器工具StopWatch的具体使用 - Python技术站