方式一:使用 System.currentTimeMillis()
方法(基于毫秒级时间戳)
public class CodeRunningTimeExample1 {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 这里放置你要测试运行时间的代码块
for (int i = 0; i < 10000000; i++) {
// 简单示例,进行一个循环操作
Math.pow(i, 2);
}
long endTime = System.currentTimeMillis();
long runningTime = endTime - startTime;
System.out.println("代码运行时间:" + runningTime + " 毫秒");
}
}
- 首先通过调用
System.currentTimeMillis()
方法获取代码开始运行时的当前时间戳(以毫秒为单位,从 1970 年 1 月 1 日 00:00:00 UTC 到当前时刻的时间间隔),并将其存储在startTime
变量中。 - 然后在注释所指示的位置放置你实际想要测试运行时间的代码段,这里只是简单地使用了一个循环进行示例,你可以替换成任何你需要测试的代码逻辑,比如复杂的算法实现、数据库查询操作等。
- 当这段代码执行完后,再次调用
System.currentTimeMillis()
获取结束时的时间戳并存放在endTime
变量中。 - 最后通过
endTime - startTime
计算出时间差,也就是代码运行所花费的时间(单位为毫秒),并将结果输出显示。
方式二:使用 System.nanoTime()
方法(基于纳秒级时间戳,更精确,常用于性能调优等对精度要求高的场景)
public class CodeRunningTimeExample2 {
public static void main(String[] args) {
long startTime = System.nanoTime();
// 此处放置要测试运行时间的代码
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 10000; i++) {
stringBuilder.append(i);
}
long endTime = System.nanoTime();
long runningTime = endTime - startTime;
System.out.println("代码运行时间:" + runningTime + " 纳秒");
}
}
- 同样先使用
System.nanoTime()
方法获取代码开始运行瞬间的纳秒级时间戳(精度比毫秒更高),存储在startTime
变量中。这个时间戳表示从某个固定的起始点到当前时刻的纳秒数,不过起始点具体是什么并不需要我们关心,重点是可以通过前后时间戳的差值来准确衡量时间间隔。 - 接着在相应位置放入实际要测试运行时间的代码,这里以使用
StringBuilder
拼接字符串的操作作为示例代码块,你可以根据实际需求替换为其他代码逻辑。 - 当代码执行完毕后,再次调用
System.nanoTime()
获取结束时刻的时间戳存于endTime
变量中。 - 最后通过
endTime - startTime
算出代码运行的时间间隔(单位为纳秒),并输出显示结果,这样就能得到所测代码较为精确的运行时间了。
方式三:使用 Instant
和 Duration
类(Java 8 及以后版本,代码更简洁易读,基于时间点和时间段的概念)
import java.time.Duration;
import java.time.Instant;
public class CodeRunningTimeExample3 {
public static void main(String[] args) {
Instant start = Instant.now();
// 在这里插入要测试运行时间的代码
int sum = 0;
for (int i = 1; i <= 10000; i++) {
sum += i;
}
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
System.out.println("代码运行时间:" + duration.toMillis() + " 毫秒");
}
}
- 首先利用
Instant.now()
方法获取代码开始运行时刻对应的时间点,存储在start
变量中,Instant
类表示一个瞬间的时间点,它基于 UTC 时间标准,不包含时区信息。 - 然后在指定位置放置需要测试运行时间的代码,这里使用一个简单的循环求整数和作为示例代码内容,你可按需替换。
- 当代码执行完成后,再次调用
Instant.now()
获取结束时刻的时间点并存放在end
变量中。 - 接着使用
Duration.between(start, end)
方法,它会根据两个时间点(start
和end
)计算出它们之间的时间段,返回的Duration
类对象表示这个时间段,最后通过toMillis()
方法将时间段转换为以毫秒为单位的时长,并输出显示,以此得到代码运行所花费的时间长度。