2009-05-23 25 views
1

什麼是使用FTP協議遞歸製作目錄(類似於UNIX mkdir -p)的最快算法?在FTP中實現mktree的最快方法

我也考慮過一種方法:

  1. MKDIR節點
  2. 如果錯誤和節點離開去1下一個節點
  3. 結束

但是,這可能會表現不好,如果部分目錄最有可能存在。例如,對於某些分期付款,「/ a/b/c/d/e/f/g」路徑的「/ a/b/c/d」部分存在%99的時間。

回答

1

考慮到發送命令和接收響應大部分時間都用完了,創建目錄路徑的最快方法是使用盡可能少的命令。

除了嘗試創建或cd到目錄以檢查其存在之外,沒有辦法使用mkdir a; mkdir a/b; ...,mkdir a/b/c/d/e/f是通常最快的方式(不要cd到子目錄中創建下一個,因爲這會延長進程)。

如果以這種方式創建多個目錄,您當然可以跟蹤您已經創建的頂級目錄。另外,根據路徑長度和上層目錄已存在的可能性,您可以嘗試從例如mkdir a/b/c(對於a/b/c/d/e/f),然後在未成功時回溯。但是,如果目錄不存在,那麼從長遠來看,這實際上會更慢。

0

如果現有的目錄層次結構在任何給定的深度都可能結束,那麼二進制搜索作爲開始位置將是最快的方法。但如dseifert points out所示,如果大多數時間目錄已經存在於k級別,那麼在k級而不是n/2級開始二進制搜索會更快。

順便說一句,你就必須要創建很多很深目錄對於這種優化是值得你花時間。你確定你沒有過早優化嗎?