請問 windows 刪除為何會比同硬碟移動慢呢?
今天刪除一個大資料夾,有幾十萬個文件,總和大約20GB
按 Shift + Delete
永久刪除,發現需要等幾十分鐘
但是將資料夾移動到同硬碟
其他地方,按住拖拉只需要短短幾秒鐘。
請問為何會有這樣的差異呢?
拿這個關鍵字去搜尋沒有看到類似文章,請問有大神了解這原理嗎?
以下是個人胡亂猜想 :
刪除系統底層其實會做備份紀錄所以比較慢?
移動資料夾, 只需要動最上層那一個資料夾指標, 就完成了; 因為那個資料夾底下的東西, 都是跟著那個資料夾內含的 Link-list 查下來的, 所以不管最上層移動到哪邊去, 底下的通通不用動, 改一下最上層的那個指標就可以....
(請想像: 你移動一大串肉粽, 只要拿最上面的那個繩結, 整串肉粽就被你移動到新位置了, 不需要每一個肉粽都單獨去移動他)
刪除資料夾, 標準程序是:
這個刪除檔案指標的動作, 有多少個檔案, 就要被觸發多少次, 沒有辦法省; 而且因為是從最底層往上做, 所以每一層的每一個檔案, 通通要被改寫新指標, 相較於移動只改一個指標而言, 他的工作量是 N 倍...
(請想像: 要把肉粽丟廚餘, 你得把每個肉粽都打開, 把裡面的餡挖出來, 丟進廚餘桶, 再把粽葉和繩子丟去不可回收桶, 每一個都要這樣做一次...沒辦法只把最上面的一顆打開挖出來丟掉, 下面所有的肉粽就會跟著也打開丟掉)
原來如此!
再次感謝 raytracy 大神 , 每次您的留言都讓人受益匪淺
大神想請教一下
若是下指令 rmdir /s/q folderName
則刪除速度會變很快
它的刪除程序跟正常的刪除程序不同嗎?
COOL! 大神用肉粽解釋LinkedList, 很有風味XD 餓了
xSummer
先簡單回答您的問題:
因為檔案總管在刪除每個檔案之前, 會多花一點時間看一下每個檔案的內容, 但是 rmdir 指令不會去看檔案, 就蒙著眼睛硬幹.....
至於檔案總管是去看了些甚麼? 我目前手邊沒有足夠的資料說明, 有空可以去 StackOverflow 看一下, 這個問題好像也討論過一陣子....
【肉粽】比較不像資料夾結構,因為粽子都是一個繩頭底下有很多條細繩,每一條細繩底下只有一顆粽子,屬於單層式結構,一顆粽子底下不會再綁上另一顆粽子。
不過,我暫時想不出有什麼多層次又好吃的食物,可能要請教海棉大大。
移動目錄會快的原因,是因為並未移動實際磁區位置。而是將檔案指標修改。
但檔案還是存放在同一個地方。
這所謂的快速,也只適合用在同一分區上。
當移動的位置是在不同分區,還是會很慢的。
至於有人追加問的「 rmdir /s/q folderName」
也是同一種道理。
其實在windows上,所有的目錄都有一個d屬性。
而這個d屬性是可以移除掉的。
d屬性移除掉後,就會將目錄變成一個檔案了。
早期我曾經有寫過這種東西來隱藏一些東西。
就是固定將某些a級的東西放在某個目錄。再將該目錄改成檔案。
要用再加d屬性。