PINDちょっとだけ最適化

id:co3kたん作のPINDに手を入れてみました。コミット権限もらうか。いやそこまではいいや。どうせ ack 使うし。

PINDについては→ http://blog.co3k.org/archives/37

RecursiveIteratorIterator のコンストラクタの第2引数は RecursiveIteratorIterator::LEAVES_ONLY がデフォルト値で、ファイル内容の検索用途なら葉(leaf)以外は見る必要ないのでこっちの方が向いてます。

http://www.php.net/~helly/php/ext/spl/classRecursiveIteratorIterator.html#e831f5147ec06773875b31544c95d66c

Index: pind.php
===================================================================
--- pind.php    (リビジョン 14)
+++ pind.php    (作業コピー)
@@ -49,9 +49,7 @@

 // Create an iterator for searching files under a directories
 $iterator = new RecursiveIteratorIterator(
-    new RecursiveDirectoryIterator($dirname),
-    RecursiveIteratorIterator::SELF_FIRST
-);
+    new RecursiveDirectoryIterator($dirname));

 // Begin searching the files
 while ($iterator->valid()) {

これだけでけっこうはやくなったよ。

ところで、Non-static method call の STRICTエラーが出まくるのをなんとかして欲しい。PEARライブラリが悪いのかもしれんが。

RecursiveFilterIterator 使った版も作ってみたんだけど、こっちはもうちょっとまとめてから別エントリで紹介します。