|
本帖最后由 datbik189 于 2019-7-25 17:01 编辑
从测试来看, 建议采取切换WID的办法且不保存历史记录(将 &DISKPART_OLD 改成 &), 获得DISKPART的回显.
测试了一下,脚本运行速度没什么变化, 没办法了.
固定WID 和 切换不同的WID (换DISKPART), 运行100遍 "sel disk 0 + detail disk" 时间都是约 14 秒.
运行了1500次以后, 不保存历史记录(将 &DISKPART_OLD 改成 &), 结果如下:
固定WID: 临时文件有 43508 行,最后一次运行的时间为 217 ms, 总的运行时间 227 秒.
变换WID: 临时文件小于 500 行,最后一次运行的时间为 33 ms, 总的运行时间为 109 秒.
变换WID脚本:
envi^ envimode=1
set-raw &启动副本=thread* -here -tid:&备用tid team wait 50|set &DISKPART_备用WID=|load #998 & &DISKPART_备用WID &DISKPART_备用FILE & &|SET-RET &DISKPART_备用WID=%&DISKPART_备用WID%|SET-RET &DISKPART_备用FILE=%&DISKPART_备用FILE%
team set. &exit=exit\n|load #999*命令_宽字符 &exit
load #998 & &DISKPART_WID &DISKPART_FILE &DISKPART_OLD &DISKPART_NEWS //启动diskpart
%&启动副本%
load #999*命令_数字循环 &num 1 1 100 //生成数字序列
date &t1 uptime
forx * %&num%,&,
{* set. &指令=sel disk 0 \n detail disk
load #998 &指令 &DISKPART_WID &DISKPART_FILE &DISKPART_OLD &DISKPART_NEWS
Team read %&DISKPART_file%,**,&V|read -*,-1,&V,&V
IFEX $[%&V%>500 & %&DISKPART_备用WID%>0],
{* forx * %&exit%,&V,ENVI @@SENDMSG=%&DISKPART_WID%;0X102;0x%&V%
Team set &DISKPART_WID=%&DISKPART_备用WID%|set &DISKPART_FILE=%&DISKPART_备用FILE%
%&启动副本%
}
}
date &t2 uptime
calc &t=%&t2%-%&t1%
team set. &line=%&DISKPART_OLD%\n%&DISKPART_NEWS%|read -*,-1,&line,&line
mess %&DISKPART_OLD%\n%&DISKPART_NEWS%@耗时 %&t% ms %&line% 行
kill diskpart.exe
|
|