我有幾個java類文件,每個文件都有一個主要方法。由於這些是已編譯的類,因此我無法修改代碼並在調用類的main
方法之前和之後跟蹤系統時間。有什麼辦法可以從JVM或任何其他工具(最好是命令行)獲得此度量?如何測量預編譯的java類的執行時間?
回答
您可以實現這樣一個類:
class caller {
public static void main(String[] args) {
long initialTime = System.currentTimeMillis();
precompiled_class_name.main(args);
long finalTime = System.currentTimeMillis();
System.out.println("Spent time: " + (finalTime - initialTime));
}
}
如果您需要更多的內部信息,使用一個分析器像這樣的:http://jrat.sourceforge.net/
java -javaagent:shiftone-jrat.jar caller
這是命令行,但你會需要桌面應用程序來讀取結果。
創建一個空白的空應用程序無所事事,啓動時間。
計時測試應用程序。
減去差異。
請注意,您正在遇到各種與JIT,課程加載時間等有關的問題,這些問題會影響您的測量精度。至少你需要重複測試很多次。
雖然測量本身也沒有意義。如果你看看你爲什麼想知道這個問題,可能會更好,因爲看看你是否可以問一個更有用的問題。
謝謝。做這種測量的原因是憑經驗測量使用某些特定的代碼片段對程序執行時間的影響。但我所有的都是.class文件。你有沒有更好的方法來解決這個問題的建議? –
將類文件加載爲庫,編寫基準測試程序以加載該庫,並針對要測量的實際調用運行速度測試。瞭解微觀基準陷阱 –
http://stackoverflow.com/questions/20655963/java-benchmarking-why-is-the-second-loop-faster/20655996#20655996 –
- 1. 測量Java執行時間
- 2. 測量java短時間運行的線程執行時間
- 3. 如何測量由Java中的進程執行的代碼的執行時間?
- 4. 如何測量構建執行時間?
- 5. 測量時間執行
- 6. C++測量執行時間
- 7. 測量執行時間
- 8. 測量執行時間短
- 9. 獲取java類的編譯時間戳
- 10. 如何測量Java線程執行時間?
- 11. 測量多線程的執行時間
- 12. 程序執行的C++測量時間
- 13. 如何測量每一行的執行時間在C#
- 14. 如何在執行的各個階段執行perl CGI性能測量,基準測量和時間測量?
- 15. 運行編譯的Java類
- 16. C++編譯時間函數執行
- 17. 執行.Net DI編譯時間代理?
- 18. 使用JVMTI測量Java的執行時間
- 19. 測量Java的執行時間不起作用
- 20. 在編譯類時執行Eclipse插件
- 21. 如何測量一個函數從erlang shell執行的時間?
- 22. 如何測量100次程序執行的時間?
- 23. 如何測量CNN中每層的執行時間
- 24. 如何測量黃瓜步驟的執行時間
- 25. 如何測量Google Cloud上查詢的執行時間
- 26. 如何測量JSF中的動作執行時間?
- 27. 如何在Python中自動測量函數的執行時間
- 28. 如何測量npm/yarn任務/腳本的執行時間?
- 29. Windows Azure:如何測量代碼的執行時間
- 30. 如何測量openmp中每個線程的執行時間?
不知道你需要什麼級別的精度,但linux有內置時間命令http://www.thegeekstuff.com/2012/01/time-command-examples/ – niiru
謝謝,這應該給我一個開始。但是這段時間還沒有包含JVM本身在程序運行之前加載的時間?能夠跟蹤JVM執行程序所用的時間會很棒。 –
它可能不會來自命令行,但你可以使用'profiler'。 –