Java計算程序代碼執(zhí)行時間的方法小結(jié)
本文實例總結(jié)了Java計算程序代碼執(zhí)行時間的方法。分享給大家供大家參考,具體如下:
有時候為了排查性能問題,需要記錄完成某個操作需要的時間,我們可以使用System類的currentTimeMillis()方法來返回當前的毫秒數(shù),并保存到一個變量中,在方法執(zhí)行完畢后再次調(diào)用 System的currentTimeMillis()方法,并計算兩次調(diào)用之間的差值,就是方法執(zhí)行所消耗的毫秒數(shù)。
如方法一:
long startTime = System.currentTimeMillis(); //獲取開始時間
doSomething(); //測試的代碼段
long endTime = System.currentTimeMillis(); //獲取結(jié)束時間
System.out.println("程序運行時間:" + (endTime - startTime) + "ms"); //輸出程序運行時間
第二種方法是以納秒為單位計算的(使用System的nanoTime()方法):
long startTime=System.nanoTime(); //獲取開始時間
doSomeThing(); //測試的代碼段
long endTime=System.nanoTime(); //獲取結(jié)束時間
System.out.println("程序運行時間: "+(endTime-startTime)+"ns");
示例代碼一:
public static void main(String[]args){
String str="";
long starTime=System.currentTimeMillis();
//計算循環(huán)10000的時間
for(int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long Time=endTime-starTime;
System.out.println(Time);
StringBuilder bulider=new StringBuilder("");
starTime=System.currentTimeMillis();
for(int j=0;j<10000;j++){
bulider.append(j);
}
endTime=System.currentTimeMillis();
Time=endTime-starTime;
System.out.println(Time);
}
示例代碼二:
public class Main {
/**
* 計算兩個時間點直接逝去的毫秒數(shù)
*
*/
public void computeAndDisplayElapsedTime() {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(60);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
float seconds = (endTime - startTime) / 1000F;
System.out.println(Float.toString(seconds) + " seconds.");
}
/**
* 啟動程序
*/
public static void main(String[] args) {
new Main().computeAndDisplayElapsedTime();
}
}
輸出結(jié)果類似:
```out 0.609 seconds.
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《java日期與時間操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
IDEA2020.1創(chuàng)建springboot項目(國內(nèi)腳手架)安裝lombok
這篇文章主要介紹了IDEA2020.1創(chuàng)建springboot項目(國內(nèi)腳手架)安裝lombok,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(Stack)實現(xiàn)詳解
這篇文章主要為大家詳細介紹了Java數(shù)據(jù)結(jié)構(gòu)學習筆記第二篇,Java數(shù)據(jù)結(jié)構(gòu)與算法之棧Stack實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
Java中的ConcurrentLinkedQueue使用解析
這篇文章主要介紹了Java中的ConcurrentLinkedQueue使用解析,一個基于鏈接節(jié)點的無界線程安全隊列,此隊列按照 FIFO(先進先出)原則對元素進行排序,隊列的頭部是隊列中時間最長的元素,需要的朋友可以參考下2023-12-12
Java多線程CountDownLatch的實現(xiàn)
本文主要介紹了Java多線程CountDownLatch的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
@Valid 校驗無效,BindingResult未獲得錯誤的解決
這篇文章主要介紹了@Valid 校驗無效,BindingResult未獲得錯誤的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
詳解SpringBoot中異步請求和異步調(diào)用(看完這一篇就夠了)
這篇文章主要介紹了SpringBoot中異步請求和異步調(diào)用問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
從零構(gòu)建可視化jar包部署平臺JarManage教程
這篇文章主要為大家介紹了從零構(gòu)建可視化jar包部署平臺JarManage教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05

