XREA.COM Logo XREA.COM Ad

旧雑記サルベージ

107管理人 ★:06/09/06 17:46 ID:???
2006年02月26日
■AutoHotkeyでfenrir風の物を作る
042.zip(http://lukewarm.s101.xrea.com/up/file/042.zip)

パフォーマンス的に可能かどうかを試すために作ってみた。

フォルダをスキャンする部分は、Loopとかを適当に使ってできた。
複数のファイルマスクを指定できるようにするのが面倒だったので、BREGEXP.DLLの正規表現で判別するようにした。
スキャン結果の書き出しでは、FileAppendを使った。
FileAppendは1回ごとに出力先ファイルを開き直すためパフォーマンスが悪いが、ファイルを1行ずつ読む「Loop,Read」でOutputFileを指定しておくと開きっぱなしにしてくれる。
いちいち何かのファイルを開かないと利用できないので困る。
とりあえず、スキャン対象のフォルダをテキストに列挙して、それをLoop,Readし、OutputFileにスキャン結果のファイルを指定するようにした。
DllCallを使えば、開きっぱなしにしたファイルに追記していくこともできるが、DllCallの処理が遅いようなので、できるだけ標準の機能を使うことにした。
スキャン速度は、とりあえずfenrirより劇的に遅いということはなかった。

検索部分では、スペース区切りで列挙されたキーワードの部分一致検索のみを実装した。
入力内容の末尾に文字が追加された場合だけ、前回の検索結果からの絞り込みを行うようにした。
6000ファイルくらいある時でも、それなりの早さで検索できた。

当初、試しにMigemoを付けてみたところ、やたらと遅くなった。
まだ絞り込み検索を行うようになっていなかったのと、入力文字が1文字だけでもMigemoで検索していたのが原因のような気がする。

フォルダ内のファイルを候補として表示する機能も付けた。
数百ファイル程度ならそれなりの速度で展開できる。

一度実行したファイルは、スキャン結果ファイルとは別に書き出しておくようにした。
このファイルでは、Tabで区切ってキーワードを記述できるようにした。
最後のTabより後がファイルパスの本体になる。
検索結果項目を実行するときは、単にRunに引数として与えているだけなので、コマンドライン引数を含めて記述することも可能な気がする。

とりあえず一通りの機能を付けてみた。
起動速度なども、とりあえず実用的な速度になっているような気がする。
fenrirはあまり使っていないので、その他の細かい挙動の違いなどは不明。
131KB
名前: E-mail:
ファイル:
0ch BBS 2005-10-08