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

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

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM