簡體   English   中英

在程序結束之前估算Java程序的執行時間

[英]Estimate the execution time of java program before program ends

我想知道如何才能在程序結束之前估算特定機器上的Java程序總運行時間? 我需要知道需要多少時間,這樣我才能宣布進度。

FYI我程序的主要算法需要O(n ^ 3)時間復雜度。 假設n = 100000,在我的機器上運行該程序需要多少時間? (雙Intel Xeon E2650)

問候。

理論上,1 GHz的計算能力將導致大約10億次簡單運算。 但是,找到簡單操作的數量並不總是那么容易。 即使您知道給定算法的時間復雜度,這還遠遠不夠-您還需要知道常數因子。 從理論上講,可以有一種線性算法,該算法需要花費幾秒鍾的時間來計算大小為10000輸入(某些類似的算法存在-例如線性預計算時間RMQ)。

但是,您所知道的是,將需要執行O(n^3)的數量級為100000^3操作。 因此,即使您的常數約為1/10^6 (極不可能),此計算也將花費大量時間。

我相信@ArturMalinowski的提案是解決您的問題的正確方法。 如果您針對預先已知的某個序列(例如{32,64,128,...}或他建議的{1,10,100,...}對算法的性能進行基准測試。 這樣,您將能夠以相對較高的精度確定常數因子。

暫無
暫無

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

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