我有一個函數在我不太新的開發機器上運行了大約0.7秒。 (它在我測試的另一臺機器上運行約3秒鐘)在運行某個函數之前估計執行時間
我想在上述功能完成前向用戶顯示大約半秒的預先消息。
在函數完成之前,我不想顯示消息太久,因爲看着它並等待會很煩人。另一方面,我寧願不等到功能完成,因爲整個事情都是從用戶操作開始的,我不想浪費時間 - 如果能夠在其他功能執行任務時顯示該消息。
我已經添加了一個短Thread.sleep()
的循環,讓預先消息掛起,如果功能「太快」,但我恐怕通常不會是這樣的......所以,我想要看看我能否基於當前的機器規格大致估計執行時間,甚至可以根據當前的CPU使用情況來估計執行時間,並在運行該函數之前執行此操作。另外,由於我們正在談論幾秒和幾毫秒,如果獲取這些信息將花費超過幾毫秒,那麼這是不值得的。在這種情況下,我可能只在應用程序加載時計算一次。
有沒有人有一個想法如何做到這一點?
在後臺線程上運行該函數,在UI線程上顯示消息,並在後臺線程完成其任務時刪除該消息。你不需要估計任何東西,你仍然可以保持UI的自由。 – keyboardP 2013-03-13 14:20:36
假設時間總是一個壞主意。你如何知道你的功能在任何機器上運行超過0.5秒? – 2013-03-13 14:22:06
假設時間是不可能的:如果在過去10年中用戶開始一個擁有更高優先級的繁重任務,並且您的任務剛好處於捱餓狀態,該怎麼辦? – 2013-03-13 14:22:50