全置換の速度がWin2000で遅い?No.17464
sem2224 さん 04/06/29 12:02
 
はじめましてsem2224といいます。

全置換に時間がかかっており、もっと早くしたいのですが。
よい情報をお持ちの方、教えてください。

今回置換したのは " -> , です。
全置換のスピードアップを使用しています。
テンポラリーファイルのメモリーサイズ128MBです。

また置換速度が次第に遅くなるようです。
250万個をぐらいでは25秒/1万個(Win98のCel 400MHzでは10秒)
350万個をぐらいでは30秒/1万個(Win98のCel 400MHzでは10秒)

ファイルサイズ 25MB
変換箇所 400万箇所
置換に要する時間 2時間 !!

----- 使用環境 -----
Pen4 3GHz
Men  523MB
OS   Windows2000
秀丸 V4.04

以上です。

[ ]
RE:17464 全置換の速度がWin2000で遅い?No.17465
秀まるお2 さん 04/06/29 12:51
 
 1行の折り返し桁数をなるべく大きくした方が、編集の速度(というか、編集
の時に行われる折り返し桁数の計算処理)は速くなります。あと、禁則処理は
OFFにした方がいいです。

 他には特に高速化できる設定方法は思いつきません。

[ ]
RE:17465 全置換の速度がWin2000で遅い?No.17480
sem2224 さん 04/06/30 19:41
 
sem2224です。

秀まるお2様 レスありがとうございます。

> 1行の折り返し桁数をなるべく大きくした方が、編集の速度
>(というか、編集の時に行われる折り返し桁数の計算処理)は
>速くなります。

1行の折り返し桁数の設定は132です。
(ファイルの1行の桁数は80〜100)

>あと、禁則処理はOFFにした方がいいです。

禁則処理をOFFにしてトライしてみます。

それでは

[ ]
RE:17480 全置換の速度がWin2000で遅い?No.17482
秀まるお2 さん 04/06/30 21:49
 
 折り返ししてないなら禁則処理をいじってもほとんど高速化しないです。

 他にいい作戦としてはですが、仮に、置換元文字が連続してるケースが多いな
らば、例えば、

 検索:   """""
 置換:   ,,,,,

 のように5文字まとめて置換させるのを実行して、次は4文字まとめて置換さ
せて、次は3文字…といった具合でまとめて置換するのを連続実行してやった方
が高速になるとは思います。

 あとあと、置換がだんだん遅くなるのは、たぶんですが、行番号が大きい程編
集の速度が遅くなってるせいかと思います。しいてこの辺は、全置換の時に限っ
て処理を高速化するような作戦も、その気になれば出来るんだろうとは思います
が…。

[ ]
RE:17464 全置換の速度がWin2000で遅い?No.17493
Buckeye さん 04/07/01 07:54
 
sem2224さん、

Win2kだと、大きなファイルの後半、置換数が一定速度で伸びていかず、ときど
き、引っかかるような感じで伸びていきますね。

秀丸側の設定では、テンポラリーファイルのメモリーサイズを小さくしても大き
くしてもほとんどパフォーマンスが変わりませんでした。やはり、OS側の仕様な
のでしょう。

>全置換に時間がかかっており、もっと早くしたいのですが。
>よい情報をお持ちの方、教えてください。

一番いいのは、秀丸ではなく、別の方法でやることでしょう。たとえば、Perlな
ど。

    適材適所です。秀丸はとてもいいソフトですが、一番のターゲットとなって
    いることが何なのかを考えれば、お望みのような処理がそれほど速くできな
    くても仕方がないと思います。

私の環境(PenIII 1G, メモリ1.75G)で、450万個ほどの半角スペース(半角ス
ペースのみのファイル)を,に置換すると、秀丸だと、最初のほうで10秒/1万個、
最後だと70秒/1万個ほどもかかります。えいやっと計算して、やはり2時間くら
いかかるということになるでしょうか。

同じ処理をPerlでやってみると、5秒とかからず450万個ほどの置換が終了しまし
た。

 この程度の処理なら、
 s/ /,/g;
 の1行ですますこともできます。

どうしても秀丸のみでやりたいということなら、マクロによって、まずファイル
を複数に分割し、それぞれについて必要な置換をしてから、最後に結合するとい
う処理すればいいでしょう。ファイルを小さくすると(半角スペース8万個)、
私の環境でも0.6秒/1万個くらいの置換速度が出ます。上記の2時間くらいはかか
りそうな処理がざっと5分くらいで終わる計算になります。細かく分割しすぎる
と、今度は分割・結合の処理に時間がかかってしまうので、適当な大きさにする
必要があります。

処理の起動さえ秀丸からでいいのなら、マクロでPerlを呼び出してファイル内の
置換を行ってから、秀丸側でファイルを読み込み直すという手もあるかも。

Best regards,
Buckeye

[ ]
RE:17493 全置換の速度がWin2000で遅い?No.17498
秀まるお2 さん 04/07/01 12:44
 
 秀丸は、どちらかというと、編集よりも表示をいかに高速化するかってことに
重きを置いてますので、大量の編集を連続実行する場合はあまり速くないです。
例えば1文字書き換える毎に禁則処理も行われるし、アンドゥバッファも更新す
るし、いろいろ重い処理が動いてしまいます。

 テンポラリファイルをメモリ上に置く設定にしても、それはあくまで表示の高
速化にしか役に立ちません。編集自体は重いままです。

 ということでなんですが、「全置換」の時に限って、高速に処理する専用の処
理を作ることは可能だと思います。アンドゥ出来ないという前提にはなりますけ
ど。

 一応そういうことで、「高速全置換」のような専用処理を将来作るという懸案
事項を覚えておくことにします。

[ ]
RE:17498 全置換の速度がWin2000で遅い?No.17501
Iranoan さん 04/07/01 17:02
 
 秀まるおさん今日は、Iranoan です。
>  一応そういうことで、「高速全置換」のような専用処理を将来作るという懸案
> 事項を覚えておくことにします。
 何にしても、将来の話ですが、全置換については、
・全置換時の [スピードアップ] ボタンを表示しないで、デフォルトで高速化
  する設定
  http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x13256.html#13272
・一括置換戻しという機能
  現在は全置換でも一つづつ戻るので、「全置換」をやる前に戻るとき大変
  http://hidemaruo.dip.jp:81/hidesoft/hidesoft_2/x01681.html#1700
という要望もあったので、実装するときは併せて検討して頂ければ幸いです。

[ ]
RE:17501 全置換の速度がWin2000で遅い?No.17504
IKKI さん 04/07/01 23:53
 
IKKI です。
単なる意見表明ですが…

> >  一応そういうことで、「高速全置換」のような専用処理を将来作るという懸案
> > 事項を覚えておくことにします。

これ、できたらいいですね。

 ・画面更新しない
 ・途中経過をアンドゥバッファに登録しない
 ・そのかわり爆速

という置換があったら、個人的には現行の全置換は使わなくなる気がします。
「高速全置換」だと現行機能とまぎらわしいので「一括置換」とでも呼ぶべきでしょ
うか。

何にしても、 4.10 正式版リリース後に取り組んでいただきたいところです。
期待しています。

[ ]
RE:17504 全置換の速度がWin2000で遅い?No.17519
sem2224 さん 04/07/05 09:57
 
元投稿者のsem2224です。

ヒントをいただきました秀まるお2さん、beckeyeさん、IKKIさん
Iranoanさん ありがとうございました。

多量の一括置換についてのみ別ソフトで行うことにしました。
また、
>「高速全置換」のような専用処理を将来作るという懸案事項
>を覚えておくことにします
この実装を楽しみにまっています。

それでは

[ ]