如何在 Java 中计算经过时间/执行时间?
通常,经过时间或执行时间是从事件的起点到终点的时长。以下是几种在 Java 中查找经过时间的方法:
- currentTimeMillis() 方法以毫秒为单位返回当前时间。要查找某个方法的经过时间,您可以获取目标方法执行前后时间值的差值。
- nanoTime() 方法以纳秒为单位返回当前时间。要查找某个方法的经过时间,您可以获取目标方法执行前后时间值的差值。
- Instant 类的 now() 方法返回当前时间,Duration.between() 方法返回两个给定时间值之间的差值,您可以使用它们来查找方法执行所花费的时间。
- Apache commons 库提供了一个名为 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[]){
//Start time
long begin = System.currentTimeMillis();
//Starting the watch
new Example().test();
//End time
long end = System.currentTimeMillis();
long time = end-begin;
System.out.println();
System.out.println("Elapsed Time: "+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, Elapsed Time: 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[]){
//Start time
long begin = System.nanoTime();
//Starting the watch
new Example().test();
//End time
long end = System.nanoTime();
long time = end-begin;
System.out.println();
System.out.println("Elapsed Time: "+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, Elapsed Time: 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[]) {
//Starting time
Instant start = Instant.now();
new Example().test();
//End time
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[]) {
//Instantiating the StopWatch class
StopWatch obj = new StopWatch();
//Starting the watch
obj.start();
new Example().test();
//Stopping the watch
obj.stop();
System.out.println();
System.out.println("Elapsed Time: "+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, Elapsed Time: 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("Execution time: " + 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, Execution time: 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("Execution time: " + 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, Execution time: 20
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP