smartgrepを高速化してみました。
https://github.com/pebble8888/smartgrep
結果、5倍近く高速化することができました。
- 試したことその1
mmapの利用
ファイルサイズ分のメモリを確保しファイル内容をすべて読み込む手法ですが試したところ、全く高速化されませんでしたので不採用。
- 試したことその2
マルチスレッド化
マシンのコア数に応じて複数のスレッドで検索処理を並列に行います。MacBookAirだと4コアなので、1つをディレクトリの検索処理、3つを文字の検索に使います。ただし、出力順序が崩れるので、それが嫌な場合はこの機能を使わないオプションも追加しました。この対応だけで、2.5倍高速化しました。
- 試したことその3
Instrumentでボトルネックを計測
これで2倍高速化しました。