2012-05-16 70 views
3

想知道是否有更快的方式將文件拆分爲除unix「拆分」以外的N個塊。拆分unix中的文件

基本上我有大文件,我想分成更小的塊,並行操作每個文件。

+0

不確定什麼要求在這個問題上-1,但沒關係 – Abhi

回答

1

我假設你正在使用split -b這比通過行分割更具CPU效率,但仍讀取整個輸入文件並將其寫入每個文件。如果split這部分的執行的串行性質是您的瓶頸,則可以使用dd並行提取文件的塊。對於每個並行進程,您將需要一個不同的dd命令。這裏有一個例子命令行(假設the_input_file是一個大文件這種提取位從中間):

dd skip=400 count=1 if=the_input_file bs=512 of=_output 

爲了使這項工作,你需要選擇的countbs適當的值(以上這些都是非常小) 。每個工人還需要選擇不同的值skip,以便塊不重疊。但這是有效的; dd執行skip查找操作。

當然,這仍然不如實現數據使用者進程那樣有效,因爲它可以直接讀取指定的輸入文件塊,並與其他類似的使用者進程並行讀取。但我假設你能做到這一點,你不會問這個問題。

0

鑑於這是一個OS實用程序,我傾向於認爲它已經過優化以獲得最佳性能。

您可以看到this question(或執行man -k splitman split)來查找可能可以使用的相關命令,而不是split

如果您正在考慮在C語言中實現您自己的解決方案,那麼我建議您針對您自己的特定系統/環境和一些示例數據運行一些基準測試,並確定使用什麼工具。

注意:如果您不打算經常這樣做,那麼可能不值得您花時間思考這個問題,只要繼續並使用一個工具即可完成您需要的工作(在這種情況下split