- 作成者投稿
- 2008年6月8日 5:47 am #6147manhakuメンバー
改行が行頭にある行を正規表現の置換で削除しようとするとすごく時間がかかります。
ファイルは76万行程度あり、そのうち大半が改行が行頭に存在しています。
正規表現では^nのように検索しています。これは不具合ではなくエディタの処理能力によるものなのでしょうか。
ちなみに数値がある行(これも大半)は一瞬で処理されています。2008年6月9日 3:59 am #6149Yutaka Emuraキーマスターmanhakuさんは書きました:
改行が行頭にある行を正規表現の置換で削除しようとするとすごく時間がかかります。
ファイルは76万行程度あり、そのうち大半が改行が行頭に存在しています。
正規表現では^nのように検索しています。これは不具合ではなくエディタの処理能力によるものなのでしょうか。
ちなみに数値がある行(これも大半)は一瞬で処理されています。一般的に、正規表現や改行を含む文字列の検索には、単純な文字列の検索より時間がかかります。もし正規表現や改行を含まない文字列に置き換えられる場合は、その方法をおすすめします。また「大文字と小文字を区別」をチェックできる場合はチェックしたほうが速くなります。
正規表現や改行を含む場合も将来のバージョンで最適化したいと思っています。
また、遅いというのは、どの程度時間がかかるのか、数秒程度なのか、数分程度なのか、OS やマシンのスペックも含めて、もう少し具体的に教えていただけると、ありがたいです。検索や置換にも、さまざまの条件があるため、もしよろしければ、サンプルファイルを zip に圧縮して、テスト条件をできるだけ詳しく書いて (できればマクロにして)、 [email protected] あてに送っていただければ、確実に同じ条件で最適化を行うことができます。
2008年6月9日 4:34 am #6150matsuuchiメンバー松内です。
僕も数十万行~百万行超のLogファイルを扱うのですが、同じ経験があります。
改行文字の置換が原因と言うよりは、正規表現を使ってれば必ず起こっていると思います。例えば
1
2
3
4
5
6
7
8
9
(空行)
として、それのコピー&ペーストを繰り返して70万行のファイルを作ってmanhakuさんの再現をしてみたのですが、全体の3%処理するのに5分あまりかかりました(他のソフトも動いていたので、そんなに正確じゃないかも知れませんが)。
CPU使用率が100%になって、他の事が出来ないので、もうそれで止めてしまいました。
同じ物をSpeeeeed
http://akky.cjb.net/download/speeeeed.html
を使って置換してみると一瞬(1秒かからない)で出来るので、こうした巨大ファイルの正規表現置換に関してはこのツールをいつも使っています。EmEditorで巨大なファイルを扱えるようになった事で、かえってこうした問題が発生しちゃったんでしょうか :-)
OSはWindows2000SP4
CPUはPentium4:2.4GHz
RAMは1GB(512MBのデュアルチャンネル)
です。2008年6月9日 4:52 am #6152Yutaka Emuraキーマスターmatsuuchiさんは書きました:
松内です。
僕も数十万行~百万行超のLogファイルを扱うのですが、同じ経験があります。
改行文字の置換が原因と言うよりは、正規表現を使ってれば必ず起こっていると思います。例えば
1
2
3
4
5
6
7
8
9
(空行)
として、それのコピー&ペーストを繰り返して70万行のファイルを作ってmanhakuさんの再現をしてみたのですが、全体の3%処理するのに5分あまりかかりました(他のソフトも動いていたので、そんなに正確じゃないかも知れませんが)。
CPU使用率が100%になって、他の事が出来ないので、もうそれで止めてしまいました。
同じ物をSpeeeeed
http://akky.cjb.net/download/speeeeed.html
を使って置換してみると一瞬(1秒かからない)で出来るので、こうした巨大ファイルの正規表現置換に関してはこのツールをいつも使っています。EmEditorで巨大なファイルを扱えるようになった事で、かえってこうした問題が発生しちゃったんでしょうか :-)
OSはWindows2000SP4
CPUはPentium4:2.4GHz
RAMは1GB(512MBのデュアルチャンネル)
です。巨大ファイルを扱えるようになったから、ということは無いです。おそらく以前のバージョンから変わっていないはずです。
ツール メニューのカスタマイズ ダイアログの [検索] タブで、[正規表現が改行文字に一致することができる] のチェックは外れているでしょうか? また、[正規表現で検索する追加行数] は 0 になっているでしょうか?
2008年6月9日 5:11 am #6153matsuuchiメンバー松内です。
Yutakaさんは書きました:
巨大ファイルを扱えるようになったから、ということは無いです。おそらく以前のバージョンから変わっていないはずです。ツール メニューのカスタマイズ ダイアログの [検索] タブで、[正規表現が改行文字に一致することができる] のチェックは外れているでしょうか? また、[正規表現で検索する追加行数] は 0 になっているでしょうか?
すみません、紛らわしかったですね。
「巨大ファイルを扱えるようになったから」と言うのは、そもそもEmEditorが巨大ファイルを扱えないエディタだったら、
仮に多少処理に時間がかかる作りになっていたとしても、
扱うファイルも小さいから、気にならないまま問題にならなかったかも知れないって言うジョークです ;-pカスタマイズ ダイアログの設定は、二ヶ所とも仰る通りに設定していました。
2008年6月9日 8:00 pm #6157Yutaka Emuraキーマスターmatsuuchiさんは書きました:
松内です。Yutakaさんは書きました:
巨大ファイルを扱えるようになったから、ということは無いです。おそらく以前のバージョンから変わっていないはずです。ツール メニューのカスタマイズ ダイアログの [検索] タブで、[正規表現が改行文字に一致することができる] のチェックは外れているでしょうか? また、[正規表現で検索する追加行数] は 0 になっているでしょうか?
すみません、紛らわしかったですね。
「巨大ファイルを扱えるようになったから」と言うのは、そもそもEmEditorが巨大ファイルを扱えないエディタだったら、
仮に多少処理に時間がかかる作りになっていたとしても、
扱うファイルも小さいから、気にならないまま問題にならなかったかも知れないって言うジョークです ;-pカスタマイズ ダイアログの設定は、二ヶ所とも仰る通りに設定していました。
サンプル ファイルと詳細なメールありがとうございました。
確かに、改行を削除するのは非常に時間がかかります。これについては、既に最適化を始めていますが、マイナーなバージョンでは反映しないことにしますが、ご了承ください。しかしながら、改行を含む置換は最適化を行っても、以下の方法ほど速くはならないと思います。「置換」の代わりに、「ファイルから置換」コマンドを使って、「ファイルの種類」に1つのファイルだけを指定し、「変更したファイルを開いたままにする」のチェックを外し、検索する文字列には、「rn」と指定して置換後の文字列を空で実行すると、数秒以内で置換が実行されます。
この場合は、改行の有無に関係なく高速で置換が終了するので、もしよろしければこの方法で試してください
- 作成者投稿
- このトピックに返信するにはログインしてください。