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