|
>h-tom です。
>
>常に同じファイルに出力される前提なら閉じる必要はないので、"reopen"すればい
>いのでは?
>で、最後に閉じればいいだけ。
なるほど、reopenって手がありましたね。
reopen前のsetactivehidemaru #hwnd_new;は無くても大丈夫でした。
早くなったのでループ500回で計測して16秒(50回に換算すると1.6秒)
FileSystemObjectは早すぎるので10倍のループ5000回で計測して5秒(50回換算すると
0.05秒)
やっぱreopenもopenfileと同じく秀丸の内部処理が走るから仕方ないですが。
[reopen]
##i = 0;
##maxloop = 500;
#hwnd = hidemaruhandle( 0 ); //元ウィンドウのハンドルを取得する
disabledraw;
openfile @"/h d:\temp\a.txt";
#hwnd_new = hidemaruhandle( 0 ); //ウィンドウハンドルの取得
$$start_time = time;
while(##i < ##maxloop) {
// setactivehidemaru #hwnd_new;
reopen;
#tmp3 = val(gettext2(0, 1, linelen2, 1));
##i = ##i + 1;
}
$$end_time = time;
setactivehidemaru #hwnd; //元ウィンドウに戻る
closehidemaru #hwnd_new; //別ウィンドウを閉じる
enabledraw;
message $$start_time+"-"+$$end_time;
endmacro;
[FSO]
##objFso = createobject("Scripting.FileSystemObject");
if( getresultex(10) == false ) {
endmacro;
}
##i = 0;
##maxloop = 5000;
$$start_time = time;
while(##i < ##maxloop) {
##objFile = callmethod_returnobj( ##objFso,"OpenTextFile", @"d:\temp\a.txt",
1);
if( getresultex(10) == false ) {
message "OpenTextFile Error";
break;
}
$$line = member(##objFile,"ReadLine");
##tmp = val($$line);
##i = ##i + 1;
member ##objFile,"Close";
}
$$end_time = time;
message $$start_time+"-"+$$end_time;
endmacro;
|
|