正規表現の検索に時間がかかる場合があるNo.36450
Roka さん 18/04/11 17:03
 
改行がない30Kほどのファイルで「( +)?a」の文字列で正規表現を使った検索を実行
したときに、「1行の強調表示の計算に2秒以上かかっています。」という表示が出る
までに5分以上かかります。
実際の検索文字列はもっと複雑なものでしたが原因を特定するために文字列を絞った
らこの文字列で再現しました。

検索のダイアログボックスは、「正規表現」、「検索文字列を強調」、「検索したら
閉じる」だけチェックが入っている状態です。
動作環境の検索の項目はすべてデフォルトのままです。

秀丸エディタ 8.79 32bit
Windows 10 Pro 1709 64bit

[ ]
RE:36450 正規表現の検索に時間がかかる場No.36451
秀丸担当 さん 18/04/11 17:53
 

確かに言われているパターンで遅いことが確認できました。
V8.81β4においては、一回の正規表現の検索で関数が返らない場合に右下にバルーン
表示する対策と、少し遅いのが大量にある場合に処理の途中でもメッセージを表示す
るという2つの対策がされています。
このパターンの場合前者で、一回の関数呼び出しで帰らないようで、右下のバルーン
表示から強制終了の選択をするしかありませんでした。
そもそも遅いことについては秀まるおに連絡しておきます。

[ ]
RE:36451 正規表現の検索に時間がかかる場No.36452
秀まるお2 さん 18/04/12 11:57
 
 僕の方で調べてみたら、たしかに固まるくらい遅い場合がありました。

 ( +){0,1}a

 だと高速動作するので、そっちの処理と比べて欠けてる処理(特定の高速化用の処
理)を追加したら直りました。大変失礼しました。

 HmJre.dllの次のバージョン(V5.03)の方で対応して、秀丸エディタの次のβ版か
ら添付させていただきます。

[ ]
RE:36452 正規表現の検索に時間がかかる場No.36455
秀丸担当 さん 18/04/13 09:25
 

秀丸エディタV8.81β5で、遅い件の対策をしたHmJre.dll V5.03に入れ替えました。
以下のペーjの「先行開発バージョンはこちら」から試していただくことができます。
http://hide.maruo.co.jp/software/hidemaru.html

[ ]
RE:36455 正規表現の検索に時間がかかる場No.36456
Roka さん 18/04/13 10:40
 
V8.81β5で本来のもっと複雑な正規表現でも遅くなるのが修正されているのを確認し
ました。

[ ]