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)+"毫秒");

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

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

 

posted @ 2018-07-01 10:14  底层码农  阅读(31580)  评论(0编辑  收藏  举报