2012-11-14 44 views
0

假設我們有下一種情況:通過網絡連接兩臺計算機,需要通過網絡移動需要移動的小(甚至不同大小)文件的目錄(平面)。 什麼是更快: 1)直接移動目錄通過網絡或 2)壓縮(或通過任何其他算法壓縮),移動壓縮文件,並解壓?如何通過網絡移動大量文件

從我的經驗看來,它似乎是第二個,但我怎麼能看到它是正確的?

據我所知,這不是那麼簡單 - 是或不是,有播放器喜歡帶寬,壓縮算法,文件大小和平均壓縮率等,但我只是想知道可能有一些計算機科學我無知的?

+0

這是一個類似的問題:http://stackoverflow.com/questions/13216204/how-can-i-efficiently-move-millions-of-files-100gb-to-a-new-server –

回答

0

我認爲更好的辦法是將多個文件壓縮到單個存檔。

例如,現代3D遊戲 - 大量遊戲資源文件被壓縮到更大的檔案,並在遊戲運行時直接解壓縮到內存。這顯着降低了遊戲負載。

優點:

1)沒有必要重新讀取目錄索引多次,目錄索引讀取一次

2)沒有必要進行多次的fopen

3 )數據壓縮 - 在使用現代處理器(不超過10年:)時)從硬盤讀取比解壓縮過程慢得多(我不知道SSD盤如何使用)。

4)使用硬盤時,讀取單個(甚至碎片)的大文件比磁盤不同位置的許多小文件快得多。當讀取多個文件時,讀取速度會降低,因爲硬盤需要定位。

5)例如使用FTP傳輸多個文件時,我們需要爲每個文件創建STOR命令,而在傳輸存檔時,我們只需要一個STOR命令。

1

你沒有說你正在使用什麼樣的系統。最好的辦法是同時做兩件事。通過網絡發送壓縮存檔,並在另一端解壓縮,而不需要在任何一端存儲整個壓縮存檔。在Unix系統上,這通常使用tar調用gzip進行壓縮。您可以直接將焦油放入管道中,然後解開另一端。您也可以使用rsync,它也在鏈接上壓縮,但更復雜,避免發送已經在目的地的數據。