用java代码写美国时间_如何衡量Java代码所用的时间?
本問題已經有最佳答案,請猛點這里訪問。
我需要分析Java中的一些算法的復雜性。為此,我計劃提供大量的輸入,并測量Java實現所花費的時間。檢查某些代碼行之間的時間最精確和準確的方法是什么?我需要精確到毫秒…
不完全是!我在尋找類似System.NanoTime()的東西,但是上面提到的問題更多的是關于一些正式的基準測試。它需要一些深度的閱讀,這可能對一個隨便的讀者沒有幫助。
@Mangatrai:作為一個"臨時讀者"在這個領域是危險的:幾乎所有你真正需要"檢查代碼行之間的時間"的情況都會受到這個問題中討論的內容的嚴重影響。否則,你將得到毫無價值或誤導性的數據,并做出錯誤的決定。
你的問題與時間復雜性有什么關系?您是否了解時間復雜性是靜態分析,而您要求績效基準?
@喬阿希姆,我明白。對于不經意的讀者,我的意思是為了自己的理解而運行一些快速測試。
@VAL時間復雜性確實是一個靜態分析,但是我們可以通過性能基準來評估它。說第一次跑步我給了N個元素,然后是2N,3N…等等。通過繪制一個圖表,根據所花費的時間,我可以得到一個概念,比如復雜度是線性的還是更高的多項式。當然,我們不會得到確切的時間復雜性,但我問了更多關于玩一些代碼的問題。
甚至可以使用System.nanoTime()獲得納秒分辨率。
但是,您可能需要考慮以下幾點:
如何在Java中編寫正確的微基準?
你提到的問題很好。我會通讀的…
使用speed4j等庫,不僅可以對調用進行基準測試,還可以在日志中提供統計信息,還可以通過jmx遠程查看。最好使用這樣的庫,而不是放置System.Current。在整個代碼中調用。
+1用于添加新內容=)
酷!很好的補充
假設你有一個特別的方法,你想把它放在顯微鏡下。您可以這樣做:
long time1 = System.nanoTime();
thatMethod();
long time2 = System.nanoTime();
long timeTaken = time2 - time1;
System.out.println("Time taken" + timeTaken +" ns");
計算機真的很快,所以在使用getTimeMillis()時可能會出現時差,可能為零。因此,使用nanoTime()
您也可以使用Caliper。他們有一段視頻要開始。另外,仔細閱讀creichen所指的答案。里面有很多很棒的東西。
使用System.nanoTime()或System.currentTimeMillis()來獲取代碼的開始和結束時間。請注意,微觀基準只測量JVM性能的基本方面。注意JVM的預熱階段,在這之后JIT就開始了。
我建議使用system.nantime()stackoverflow.com/questions/11591000/…
long startTime = System.currentTimeMillis();
//code lines whose time you want to calculate
long endTime = System.currentTimeMillis();
System.out.println("Took"+(endTime - startTime) +" ms");
。
我很想這么做,但是……請格式化您的代碼。避免陳述已經陳述的內容。
long start = ?System.currentTimeMillis();
// your code
long end = System.currentTimeMillis();
long diff = end-start;
或
long start = ?System.nanoTime();
// your code
long end = System.nanoTime();
long diff = end-start;
long diffInMillis = diff/1000000;
號
我建議不要使用currentTimeMillis來知道執行時間。
總結
以上是生活随笔為你收集整理的用java代码写美国时间_如何衡量Java代码所用的时间?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抹脸的步骤先用什么后用什么(正确的护肤顺
- 下一篇: java 延迟初始化_Java并发编程—