簡體   English   中英

如何測量預編譯的Java類的執行時間?

[英]How can I measure the execution time of a precompiled java class?

我有幾個Java類文件,每個文件都有一個main方法。 由於這些是已編譯的類,因此在調用這些類的main方法之前和之后,我無法修改代碼並跟蹤系統時間。 有什么辦法可以從JVM或任何其他工具(最好是命令行)中獲得此度量?

創建一個空白的空應用程序,在啟動時不執行任何操作。

計時您的測試應用程序。

減去差異。

請注意,盡管您會遇到有關JIT,類加載時間等各種問題,這些問題都會影響測量的准確性。 至少您需要多次重復測試。

但是,這種測量本身也沒有任何意義。 如果您想知道為什么要這樣做,然后看看是否有更有用的問題可以提出,這可能會更好。

您可以實現這樣的類:

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

那是命令行,但是您需要一個桌面應用程序來讀取結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM