如何计算 Java 中的经过/执行时间?
通常,经过的时间或执行时间是从事件的起点到终点的时间。以下是在Java中查找经过时间的各种方法-
currentTimeMillis()方法以毫秒为单位返回当前时间。要查找方法的经过时间,您可以获取执行所需方法之前和之后的时间值之间的差异。
nanoTime()方法以纳秒为单位返回当前时间。要查找方法的经过时间,您可以获取执行所需方法之前和之后的时间值之间的差异。
Instant类的now()方法返回当前时间,而Duration.between()方法返回给定的两个时间值之间的差值,您可以使用它们找到执行方法所花费的时间。
Apache公共库提供了一个称为Stopwatch的类,它提供了start()stop()和getTime()方法,您可以使用这些方法找到执行方法所花费的时间。
java.util.Date类的getTime()方法返回当前时间。要查找方法的经过时间,您可以获取执行所需方法之前和之后的时间值之间的差异。
您还可以使用getInstance().getTime().getTime() 通过获取差异找到经过的时间后。
示例:使用currentTimeMillis()方法
public class Example { public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String args[]){ //开始时间 long begin = System.currentTimeMillis(); //启动手表 new Example().test(); //时间结束 long end = System.currentTimeMillis(); long time = end-begin; System.out.println(); System.out.println("已用时间: "+time +" milli seconds"); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 已用时间: 4 milli seconds
示例:使用nanoTime()方法
public class Example { public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String args[]){ //开始时间 long begin = System.nanoTime(); //启动手表 new Example().test(); //时间结束 long end = System.nanoTime(); long time = end-begin; System.out.println(); System.out.println("已用时间: "+time); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 已用时间: 1530200
示例:使用Instant类
import java.time.Duration; import java.time.Instant; public class Example { public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String args[]) { //起始时间 Instant start = Instant.now(); new Example().test(); //时间结束 Instant end = Instant.now(); long time = Duration.between(start, end).toMillis(); System.out.println(); System.out.println(time+" Milli seconds"); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 3 Milli seconds
示例:使用StopWatch类
import org.apache.commons.lang3.time.StopWatch; public class Example { public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String args[]) { //实例化 StopWatch 类 StopWatch obj = new StopWatch(); //启动手表 obj.start(); new Example().test(); //停止手表 obj.stop(); System.out.println(); System.out.println("已用时间: "+obj.getTime() +" milli seconds"); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 已用时间: 1 milli seconds
示例:使用getTime()方法
import java.util.Date; public class Demo{ public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String[] args) { long startTime = new Date().getTime(); new Demo().test(); long endTime = new Date().getTime(); long time = endTime - startTime; System.out.println("执行时间处理时间: " + time); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 执行时间处理时间: 5
示例:使用Calendar类
import java.util.Calendar; public class Demo{ public void test(){ int num = 0; for(int i=0; i<=50; i++){ num =num+i; System.out.print(num+", "); } } public static void main(String[] args) throws InterruptedException { long startTime = Calendar.getInstance().getTime().getTime(); new Demo().test(); long endTime = Calendar.getInstance().getTime().getTime(); long time = endTime - startTime; System.out.println("执行时间处理时间: " + time); } }
输出结果
0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 执行时间处理时间: 20