真魚から使うことのみを想定したクラスを書いてみた。
すなわち、今までTRegExprを使っていた部分を書き換えずに、差し替えのみで動作する形で。
で、例の8万文字テストをしてみたのだが、ちゃんと動作したし数倍速くなった。
掲示板にあった、正規表現でも検索結果を色分けする実装を行ったせいで、
TRegExprを使った方はもう固まる寸前で動作しているのだが、
鬼車を使った方は遅いけどじわりじわりと動いてくれて、その実力を見せてくれた。
TRegExprに唯一不満だった、スピード面を向上させているので、
外部DLLが一個増えるとしても実装の価値はあると言える。
ユニコードの検索もバッチリだ。
でも一つだけ納得いかない。
マッチしなかったら-1を返すべき関数が、どうしても0を返してくる。
そのせいで、マッチしなかったのか先頭で0文字にマッチしたのか区別できない。
困った。
下方向へ検索するなら、検索開始位置より小さい数字が来たらハズレにできる。
でも、上方向への検索だと、実際に先頭の0文字にマッチさせる必要もある。
マジで困った。
ここさえクリアできればかなり魅力的なんだが。
あと実はもう一つ、マルチスレッドの問題はまだ検証していない。
FAQにそれらしい情報が書いてあるのだが、普通に使ってりゃ問題が起こらなそうだ。
いや、意地悪な使い方で問題を起こせそうなのだが、無視しても構わなそうだ。
それから、もし気にくわないところがあったら修正できるよう、
DLLを自分でもビルドしてみた。Km氏の所と若干ファイルサイズが違っている。
ウチはVS2003だが、あちらはどのバージョンのVC++なんだろうか。
いや、あたしゃ知識がないので素直にビルドしたんであって、
あちらはなんかいろんなオプション指定したのかも知れないんだよね。
ともかく、スピード面で非常に魅力的なので、これは移行も十分ありうる。
上記の困った問題と、DLL添付してまで正規表現のスピードにこだわるべきかと、
あと、検索は良いけど置換をどうにかしなきゃと言う問題もあるにはある。
[日記的なもの/フリーソフト/2006]
鬼車#2 / 2006-04-03 (月)
- 1: Km (04/11 02:21)
- うちで公開しているのはVC++2005ExpressEditionでコンパイルしたやつです(240KB)。
README.jaに書いてある通りnmakeしただけですよ。コンパイルの途中で色々警告でてました。
ちなみにVC6でコンパイルすると220KBで、警告はでてませんでした。
なぜそっちを公開してないのかというと、特に理由はありません。新しい方がいいのかなぁというくらいです。 - 2: 本人 (04/11 09:24)
- サイズが出てるので併記しておくか。VS2003が224KB。
ウチは見つからないと叱られたファイルの場所にパスを通しまくって、
最後にPDB:NONEだけ無視されますの状態でビルド通った。
新しい方が良いだろうという判断には同意。
だがエクスプレス版に制限のない良いコンパイラをつけてくれてるだろうか。
別にどれが一番良いのかをあまり追及するつもりはないけどね。
- 1: Is there a good sleeping beside ambien 10 mg./ (03/02 14:01)
- Ambien. Ambien and the menstrual cycle. Discount ambien. Ambien cr. How to stop taking ambien. Ambien vs lunestra.
2009/01/09 (金) 更新 ©2005-2009 汁么ゴ魚 by Wantech
Powered by rNote 0.9.7.5



