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)+"毫秒");
这个程序还不完成请读者自行补充。
运行结果如下(现在知道用+=来拼接字符串是多么的低效了吧);