マクロで置換している時のダイヤログにつNo.06371
末三 さん 00/08/24 02:16
 
「replaceall 全置換」と「replaceallfast 高速全置換」
についてです。

マクロ処理中に出てくるダイヤログボックス(スピードアップ云々)を
出さないようには出来ないのでしょうか?
大量に置換する際、あのダイヤログが ”ちかちか”して非常にじゃまですし
数分に及ぶマクロの実行中にあってはかなりの時間のロスになっているようです。
せめて「replaceallfast 高速全置換」についてだけでも何とかならないでしょうか。
また、マクロの記述の変更で解決することが出来れば方法を教えてください。

[ ]
RE:06371 マクロで置換している時・・・追No.06381
末三 さん 00/08/25 00:34
 
「replaceall 全置換」と「replaceallfast 高速全置換」


gofiletop;
while(result){
       replacedown "検索文字列","置換文字列";
}

や、他の、「ダイヤログを出さない、完全にステルスで実行出来る」関数
に書き換えて実行したところ(さらに細かい改良を重ねましたが)
以前4〜5時間(中断するまでの時間による推定。マクロの完了を待てませんでし
た。)
かかっていた処理を15分ほどで終わりました。

「replaceallfast 高速全置換」をステルス(スピードアップ云々のダイヤログボッ
クスを出さない)
で実行出来ればさらなる高速化も期待出来るのではないでしょうか。

[ ]
RE:06381 マクロで置換している時・・・追No.06389
秀丸担当 さん 00/08/25 17:19
 
>「replaceallfast 高速全置換」をステルス(スピードアップ云々のダイヤログボッ
>クスを出さない)
>で実行出来ればさらなる高速化も期待出来るのではないでしょうか。

replaceallfastはその名の通り速いはずですが、replacedownのループより
遅いのでしょうか?
replaceallfastはスピードアップ云々のダイアログボックスの中の数字しか
書き変わっていないと思うのですが、他にどこかちらつく部分があるのでし
ょうか。

改行を含む置換などをした場合は、極端に遅くなることがあるという報告も
ありますが、それはreplaceallfastでもreplacedownでもどちらでも言える
ことです。

[ ]
RE:06389 マクロで置換している時・・・追No.06392
末三 さん 00/08/25 21:49
 

> replaceallfastはその名の通り速いはずですが、replacedownのループより
> 遅いのでしょうか?
> replaceallfastはスピードアップ云々のダイアログボックスの中の数字しか
> 書き変わっていないと思うのですが、他にどこかちらつく部分があるのでし
> ょうか。

1つのマクロ処理対象ファイルに於いて(ファイルは「openfile /h」で開きまし
た)
約80種類の文字列に対して「replaceallfast」を実行しました。 
「ちかちかする」と表現したのは置換対象文字列の種類の数だけダイアログが点滅
を繰り返すからだと思います。これも少数回だとあまり気になりませんが、
マクロ処理対象ファイルが1000近く有る処理の場合、8万回もの点滅が
繰り返される訳です。

そこで1対象ファイルにおいて80近く有る置換対象文字列のうち
70種類以上は存在したとしても1つなので「replacedown」に置き換え
残りも「replacedownのループ」に置き換えたところディスプレイに変化はなく
(厳密にはマクロを起動したウィンドウのタイトルのアクティブ、非アクティブの変
化は有りますが)
先に述べたような高速化につながりました。

そこで、置換対象文字列が1種類なら「replaceallfast」が「replacedownのルー
プ」
又は「1回のreplacedown」よりも高速なら、ダイアログさえ出ないように出来れ
ば、
さらなる高速化が期待できるのでは無いかと思いました。

対象にする文字列が8万近くも有ることを想定してはいなかったと思いますが
秀丸のマクロの記述が非常に簡単なので、テキストの処理に関しては出来るだけ
使うようにしています。

とりあえずは今回の「replaceallfast」を使わない方のマクロで満足していますが、
出来ればあと少しでも速くなればいいなと思っております。

[ ]
RE:06392 マクロで置換している時・・・追No.06404
秀丸担当 さん 00/08/28 18:05
 
>1つのマクロ処理対象ファイルに於いて(ファイルは「openfile /h」で開きまし
>た)
>約80種類の文字列に対して「replaceallfast」を実行しました。 

なるほど。一回のreplaceallfastが遅いというのではなく、何回も呼ぶと
遅いのですね。試しにマクロを作ってやってみたところ、場合によっては
遅くなることがありました。
しかしreplaceallfastは4〜5時間で、replacedownは15分という差が
出るほど、著しく遅いようには感じませんでした。
テストするマクロと対象ファイルが違うためかもしれませんが。
とりあえずステルスのときはこのダイアログも出さない方向で検討してお
きます。でもこれは内部的な処理の仕方の問題で、ダイアログの存在とは
直接関係無いかもしれないです。

[ ]