2009-05-23 13 views
1

一般に、FTPプロトコルを使用して再帰的にディレクトリ(UNIXのmkdir -pに似ています)を作成する最も速いアルゴリズムは何ですか?FTPでmktreeを実装する最も速い方法

私は1つのアプローチを検討している

:エラーとノードが次のノードを1に行く

  • エンド
  • を残した。しかし一部であれば、これは悪いパフォーマンスを持っている可能性がある場合

    1. MKDIRノード
    2. のディレクトリが存在する可能性が最も高い。たとえば、いくつかの償却では、 "/ a/b/c/d/e/f/g"パスの "/ a/b/c/d"部分が%99の時間内に存在します。

    答えて

    1

    コマンドを送信して応答を受信することがほとんどの場合、ディレクトリパスを作成する最も速い方法は、可能な限り少ないコマンドを使用することです。

    mkdir aを使用するだけでディレクトリを作成したり、ディレクトリにcdしてその存在をチェックしたりする方法はありません。 mkdir a/b; ...、mkdir a/b/c/d/e/fは一般的に最速の方法です(プロセスを長くするので、サブディレクトリを作成して次のディレクトリを作成しないでください)。

    このように複数のディレクトリを作成する場合は、もちろん作成済みのトップレベルディレクトリを追跡することができます。また、パスの長さや、上位のディレクトリがすでに存在する可能性によって、たとえば次のように始めることもできます。 mkdir a/b/c(a/b/c/d/e/fの場合)、それが成功しなかった場合はバックトラックします。しかし、ディレクトリが存在しない可能性が高い場合、実際には長期的には遅くなります。

    0

    既存のディレクトリ階層が同じ深さで終了する可能性がある場合は、バイナリ検索の開始位置が最速の方法になります。しかし、dseifert points outとして、ほとんどの場合、ディレクトリが既にレベルkになるまで存在すれば、レベルn/2ではなくレベルkでバイナリ検索を開始する方が速くなります。

    ところで、あなたはあなたの時間の価値があると、最適化のこの種のために非常に深いディレクトリのたくさんを作成する必要があるだろう。あなたは時期尚早に最適化していないと確信していますか?

    関連する問題