cfiler
cfiler copied to clipboard
Grep の高速化
ファイル名パターンと 無視するディレクトリパターンを指定させるようにしたら もっと高速にできる。
splitlines せずに re.findall か、re.finditer を使うことで高速化できるかもしれない。 あるいは、splitlines ではなくて、イテレータを使うことで1行ずつ検索したら、 メモリコピーを1回分減らすことができるかもしれない。
StringIO を使うと、splitlines せずに済ますことができそうだが、計測してみると余計に遅くなってしまうようだ。 from cStringIO import StringIO def iterbuf(buf): stri = StringIO(buf) while True: nl = stri.readline() if nl != '': yield nl.strip() else: raise StopIteration