為什麼電腦處理任務時估算的時間進度很難準確?

時間 2021-05-31 03:20:22

1樓:

「很難準確」是不確切的。其實如果肯下力氣,這並不是乙個特別難的問題。樓上說的各種問題,比如大小檔案的I/O速度,計算量不易估計,搶先多工等等,都不是特別難。

比這難得多的問題也都有很好的解答。

比如說,一種思路是,首先判斷是什麼硬體,然後根據該硬體的能力(如計算速度或者I/O速度)估算計算量。如果實在需要精確,可以在不同配置的電腦上實際跑一跑。如果要考慮多工,可以首先進行一段複雜計算,或者等待一段時間看看被打斷多少次,從而估計一下有多少CPU時間可供利用。

但是搞這麼複雜,最後只是把進度條做得很精確,真的有這個必要嗎?

實際上用軟體的人,有幾個人計較安裝進度條是否準確的?大家只想快點裝上(絕對速度而非對速度的估計)。裝上之後看實際的使用效果。

如果微軟的鮑爾默說,我們Windows9的最大優點是安裝進度條特別的精確,底下肯定是哄堂大笑吧。

所以答案就很清楚了。不是這個問題本身困難。而是下大力氣解決這個問題沒有什麼實際意義,不能帶來經濟效益,所以這個問題沒有解決的必要。

2樓:

大前提:程式設計師都是很懶的人。

所以,以題目中提到的安裝過程為例,百分比進度可能是按照步驟數量估算的,但每個步驟的時間在很多情況下是事前不可預知的——比如「註冊 Windows 元件」的過程可能隨每個系統情況不同而有極大差異;

複製大量檔案的時候,簡單估測可能是根據檔案總數進行的,因為獲取檔案數量要比同事獲取每個檔案的體積病根據體積進行估算快速得多。誰都不願意在這個「複製檔案之前的預備步驟」上浪費太多無謂的時間對吧。

其實這和軟體專案管理,尤其是新手專案經理的專案預算是一樣的——誰都不知道下面會發生什麼事情,只能隨便拍腦袋猜個數字了。

3樓:仲晨

本來估算安裝執行時間就很難準確,說說安裝過程中常見的幾種操作:

解壓縮:主要是CPU運算,與CPU效能、CPU使用情況、其他程式搶占、剩餘物理記憶體、虛擬記憶體等等都直接相關。

系統註冊:都知道windows越用越慢,系統使用狀況不同,註冊dll、修改登錄檔等各種耗時都不同。

拷貝檔案:硬碟操作,不同廠家、型號、空間、快取策略、使用狀況的硬碟,在面對不同大小檔案時的耗時都有所不同。

以上這些還是一條路線的情況,如果碰到根據系統情況選擇不同步驟,或者嘗試多種方式,那就更複雜了。

這麼多複雜情況,幾乎不可能絕對準確,想要盡量準確就得先做一些實測,反而更耗時,有些得不償失。

比如CPU效能很好,前面解壓縮刷刷搞定,計時系統覺得「這電腦蠻快,按標準安裝耗時比例,還有10分鐘就結束了」;然後,由於硬碟實在太爛,一堆小檔案拷貝費勁,越等越長。

4樓:

計算程式中的一段:

temp=0;

time=0;

for i=1:1:timestep-1

tic% 中間是各種計算、運算

temp=temp+1;

loading=temp/timestep進度百分比

toc;

time_s=time_s+toc;

time_min=time_s/60迴圈已用時間顯示

remain_t=time_min*(1-loading)/loading;

fprintf('進度:%.2f %%\n', 100*loading ) ;

fprintf('已用時間(分):%.2f %c\n',time_min,'分');

fprintf('剩餘時間(分):%c %.2f %c\n','約',remain_t,'分');

end可以看到計算剩餘時間是要用到之前所用的時間和當下這步所處的位置的。

5樓:

你說的誤差應該分2種:

"比如估算的安裝的最後一分鐘往往需要三四分鐘甚至更長"

如果是統計已處理檔案佔總檔案的百分比來算,有可能最後處理的任務,雖然讀入資料小,但是處理起來慢。

例如hadoop的mapreduce就是這麼統計剩餘時間的,如果有的任務把資料全部讀完了,還沒出結果,進度就是100%,但還未結束。。

"比如前一秒還需要剩餘時間二十分鐘下一秒就估算還需要兩分鐘。"

這個應該是取樣時長太短了,取個大點的視窗可能會穩定點

6樓:

我覺得是因為windows系統是個搶先多工系統。

windows是根據實時的狀況給每乙個程式分配CPU時間。而估算程式,只能根據當前的資源分配量來估計完成的時間,而這個資源的分配實際上是隨時都在變化的,所以就不準確了。

打個不知道是否恰當的比方,我們修一棟房子,按照計畫可以10天後封頂,突然來個颱風,停工休息,工期就延長了。

為什麼每天清醒的時間只有8,9小時。其餘時間都在睡眠?在吵鬧的以及任何環境下 都能很快睡著 ?

我也很長時間都是這個狀態,總是困倦睡不夠,後來查了一下是甲減,而且拖的時間也比較久了。你如果其他的原因都排除了,就去測個甲狀腺功能看一下吧。 你這多大啊?生活有影響嗎?我假期一直這種狀態,我覺得我是睡多了,然後越來越能睡。最後強迫自己起來改生物鐘,後來就慢慢好了。你可以多運動運動,出去走走玩玩。改變...

我們買電腦時為什麼會選擇戴爾

八月 戴爾,聯想這兩家是老牌子,影響力也大。對於不懂電腦的小白來說一般只求效能穩定不折騰,所以會選這兩家的電腦,比如我剛畢業的時候買的第一台筆記本就是聯想的,死貴,不過有保障,後面對電腦熟悉了,學習了很多電腦硬體知識,自己也幹起了組裝電腦的活,這之後我就再也沒有買過聯想的任何東西了。戴爾的電腦有了解...

為什麼 Go 在 GC 時 STW 的時間很短?

sda1 這個問題的資料很多了,比如另一位答主的回答中給的那張圖,還有這篇文章我很推薦。但是究其原因,還是要看Golang自己的proposal。非STW階段都不打擾執行,WB write barrier 開啟的階段稍微損失效能,所以直到STW之前都可以認為系統執行的很快,到了STW就停止執行了。S...