java中如何测试一段代码的运行时间

Posted 底层码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何测试一段代码的运行时间相关的知识,希望对你有一定的参考价值。

 

一、以毫秒为单位。
long startTime = System.currentTimeMillis(); //获取开始时间

doSomething(); //测试的代码段

long endTime = System.currentTimeMillis(); //获取结束时间

System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间

 

二、以纳秒为单位。

long startTime=System.nanoTime(); //获取开始时间

doSomeThing(); //测试的代码段

long endTime=System.nanoTime(); //获取结束时间

System.out.println("程序运行时间: "+(endTime-startTime)+"ns");

 

时间换算:

1小时=60分钟

1分钟=60秒

1秒=1000毫秒

1毫秒=1000微秒

1微秒=1000纳秒

1纳秒=1000皮秒

 

我们一java中的拼接字符串为例子

一毫米为例,纳秒用的方式一模一样。

 

 1 final int N = 100000;
 2 
 3 
 4 
 5 //演示低效的方法拼接字符串
 6 long starTime = System.currentTimeMillis();
 7 String str = "*";
 8 for (int i = 0; i < N; i++) {
 9     str += "*";
10             
11 }
12 long endTime = System.currentTimeMillis();
13 System.out.println("+=用时:"+(endTime - starTime)+"毫秒");
14 
15 
16 //使用StringBuffer进行字符串拼接(自接对内存进行修改)  大约是前面的(+=)1000倍
17  starTime = System.currentTimeMillis();
18 StringBuffer str1 = new StringBuffer("*");
19 for (int i = 0; i < N; i++) {
20         str1.append("*");//拼接 追加
21                 
22 }
23  endTime = System.currentTimeMillis();
24 System.out.println("StringBuffer的append用时:"+(endTime - starTime)+"毫秒");
25 
26 
27 
28  //StringBuffer 的加强版 StringBuilder java1.5以后   ,StringBuilder效率大约是前面的StringBuffer的4 5 倍
29 starTime = System.currentTimeMillis();
30 StringBuilder str2 = new StringBuilder("*");
31 for (int i = 0; i < N; i++) {
32         str2.append("*");//拼接 追加
33                 
34 }
35 endTime = System.currentTimeMillis();
36  System.out.println("StringBuilder的append用时:"+(endTime - starTime)+"毫秒");

这个程序还不完成请读者自行补充。

运行结果如下(现在知道用+=来拼接字符串是多么的低效了吧);

 

以上是关于java中如何测试一段代码的运行时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段中使用 GetJsonFromUrlTask​​.java

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

如何在kotlin的片段内显示网格视图?

vscode用啥符号把某一段代码包起来,类似C#的#region?

如何重构这个 Java 代码片段

在 Python 多处理进程中运行较慢的 OpenCV 代码片段