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进程