2013-03-13 114 views
0

我有一個函數在我不太新的開發機器上運行了大約0.7秒。 (它在我測試的另一臺機器上運行約3秒鐘)在運行某個函數之前估計執行時間

我想在上述功能完成前向用戶顯示大約半秒的預先消息。

在函數完成之前,我不想顯示消息太久,因爲看着它並等待會很煩人。另一方面,我寧願不等到功能完成,因爲整個事情都是從用戶操作開始的,我不想浪費時間 - 如果能夠在其他功能執行任務時顯示該消息。

我已經添加了一個短Thread.sleep()的循環,讓預先消息掛起,如果功能「太快」,但我恐怕通常不會是這樣的......所以,我想要看看我能否基於當前的機器規格大致估計執行時間,甚至可以根據當前的CPU使用情況來估計執行時間,並在運行該函數之前執行此操作。另外,由於我們正在談論幾秒和幾毫秒,如果獲取這些信息將花費超過幾毫秒,那麼這是不值得的。在這種情況下,我可能只在應用程序加載時計算一次。

有沒有人有一個想法如何做到這一點?

+4

在後臺線程上運行該函數,在UI線程上顯示消息,並在後臺線程完成其任務時刪除該消息。你不需要估計任何東西,你仍然可以保持UI的自由。 – keyboardP 2013-03-13 14:20:36

+0

假設時間總是一個壞主意。你如何知道你的功能在任何機器上運行超過0.5秒? – 2013-03-13 14:22:06

+0

假設時間是不可能的:如果在過去10年中用戶開始一個擁有更高優先級的繁重任務,並且您的任務剛好處於捱餓狀態,該怎麼辦? – 2013-03-13 14:22:50

回答

1

估計時間是毫無意義的,而且很可能無法做到精確。 (儘管可能有一些情況可以完成)。

看看過去的Windows文件複製「剩下10秒鐘......剩下2分鐘......剩下5秒鐘」它一直在根據它使用的任何指標改變估計值。最好只展示一個調整圖像或消息,讓用戶知道正在發生的事情。

如果您正在處理的項目清單,那麼這將是對你很容易,因爲消息可能是:

加工項目4 100

至少這樣的用戶可以大致瞭解代碼的功能。如果你沒有這種情況通知用戶,那麼我會減少你的損失,並顯示一個簡單的「處理....」的消息,或一些圖標,無論你喜歡你的解決方案。

相關問題