幾乎所有的讀條都是假的,讀條的任務通常代表電腦正在後臺瘋狂幹活,速度是以納秒計算的,作為一個人類,我們詢問進度這件事,慢到不可想象,所以,我們是絕對看不到實時進度的,除非我們想讓電腦和我們的速度同步。作為非同步的結果,本身就不準確。但是為什麼差那麼多呢?應該之差納秒級的誤差呀。這裡涉及兩種情況,第一,程式本身會把進度記錄下來,非同步的以進度條展現。可是程式只知道他幹完了什麼,還要幹什麼,卻不知道未來要乾的事和已經幹好的事的時間比。因為電腦本身是複雜的,其他的後臺程式,不同的硬體資源組合。舉個例子,一臺ssd電腦的磁碟讀寫佔比就很小,一臺普通硬碟磁碟讀寫往往佔比很大。程式往往不會花心思去區分的。再舉個例子,下載電影時,電影被切成很多小塊,透過不同的路線被傳輸過來,其中有一條路有問題,那幾小塊死活傳不過來。佔比很小,可沒它又不行。就卡住啦。第二種情況,讓高速執行的程式記錄進度會嚴重拉慢執行速度。這時候進度條就徹底是假的了,她真是現實的是一共五件事,幹完三件了。
簡單補充一下,不同的任務是不一樣的,比如下載,就比較好量化,運算速度也不是太高。進度條往往更可信。這裡提到的高速任務,主要是偏重計算的任務,當執行高速任務時,其實比較忌諱切換,或程序間通訊,你不希望任務等待任何其他的慢程序。好像在高速路上不可以有訊號燈一樣。
幾乎所有的讀條都是假的,讀條的任務通常代表電腦正在後臺瘋狂幹活,速度是以納秒計算的,作為一個人類,我們詢問進度這件事,慢到不可想象,所以,我們是絕對看不到實時進度的,除非我們想讓電腦和我們的速度同步。作為非同步的結果,本身就不準確。但是為什麼差那麼多呢?應該之差納秒級的誤差呀。這裡涉及兩種情況,第一,程式本身會把進度記錄下來,非同步的以進度條展現。可是程式只知道他幹完了什麼,還要幹什麼,卻不知道未來要乾的事和已經幹好的事的時間比。因為電腦本身是複雜的,其他的後臺程式,不同的硬體資源組合。舉個例子,一臺ssd電腦的磁碟讀寫佔比就很小,一臺普通硬碟磁碟讀寫往往佔比很大。程式往往不會花心思去區分的。再舉個例子,下載電影時,電影被切成很多小塊,透過不同的路線被傳輸過來,其中有一條路有問題,那幾小塊死活傳不過來。佔比很小,可沒它又不行。就卡住啦。第二種情況,讓高速執行的程式記錄進度會嚴重拉慢執行速度。這時候進度條就徹底是假的了,她真是現實的是一共五件事,幹完三件了。
簡單補充一下,不同的任務是不一樣的,比如下載,就比較好量化,運算速度也不是太高。進度條往往更可信。這裡提到的高速任務,主要是偏重計算的任務,當執行高速任務時,其實比較忌諱切換,或程序間通訊,你不希望任務等待任何其他的慢程序。好像在高速路上不可以有訊號燈一樣。