5

1〜2Kのファイルを読み取る場合、glob()との間のどちらが高速ですか?opendir()

4

6 に答える 6

10

http://code2design.com/forums/glob_vs_opendir

opendir()ディレクトリハンドラーを開いて反復できるため、明らかに高速である必要があります。最初の引数を解析する必要があるためglob()、さらに時間がかかります (さらにglob、再帰的なディレクトリを処理するため、サブディレクトリをスキャンするため、実行時間が長くなります。

于 2010-05-04T06:43:57.073 に答える
9

globそしてopendir、さまざまなことをします。globは、パターンに一致するパス名を見つけて配列でopendir返しますが、ディレクトリ ハンドルのみを返します。と同じ結果を得るには、glob追加の関数を呼び出す必要があります。これは、特にパターン マッチングが含まれる場合は、ベンチマーク時に考慮する必要があります。

Bill Karwinは最近、これに関する記事を書いています。見る:

于 2010-05-04T06:53:58.333 に答える
2

それが完全な比較であるかどうかはわかりませんがglob()、シェルのようなパターンを組み込むことができますがopendir、ディレクトリを高速化することで、そこに直接あります。

于 2010-05-04T06:40:48.203 に答える
1

ちょっとしたテストで答えることができる別の質問。412 個のものが入った便利なフォルダーがありましたが、結果はそれほど変わらないはずです。

igor47@whisker ~/test $ ls /media/music | wc -l
412
igor47@whisker ~/test $ time php opendir.php 
414 files total

real    0m0.023s
user    0m0.000s
sys 0m0.020s
igor47@whisker ~/test $ time php glob.php 
411 files total

real    0m0.023s
user    0m0.010s
sys 0m0.010s
于 2010-05-04T06:51:31.647 に答える