常见脚本编写使用中效率很慢执行效率也不理想。萌生了自己打造一套的想法。执行效率问题因为是基于解释的和内置功能优化不足导致的。编写效率是还不够方便快捷。
先说执行效率问题那就把脚本编译成二进制可执行程序,把脚本语言翻译成编程语言在编译自然可解决。现在GPU执行单元已经足够常见现象就是CPU接近满载而GPU使用率50%浮动。那就把计算量大的常用功能交给GPU处理计算量大常用的我解除的是图色处理。如果遇到GPU满载CPU不足呢那就使用CPU处理兜底(因为调度问题要先查询CPU使用率和GPU使用率结果发现这个开销挺大CPU处理图色 GPU处理图色功能有了没有好的解决办法目前统一走的GPU),在处理的过程中发现GPU并发能力处理图色是CPU的几十倍的效率提升多点找色在1920*1080下最低两毫秒最高5毫秒是真好用但也踩了一个坑GPU初始化管线排队竟然有上限,解决方案就是通过服务代理解决。
对于脚本编写效率的处理所见即所得能录制键盘鼠标操作为什么不能录制直接生成的多点找色可用脚本代码。通过预置做函数目录和例子检索注释实现对例子的搜索
函数目录格式如下:
KW: 关闭 窗口 异步 结束
DESC: 异步关闭窗口(不卡脚本)
SIG: ColorAbout.CloseWindowAsync(hwnd As Integer) As Boolean
CODE:
ColorAbout.CloseWindowAsync(h)
KW: 目标 句柄 当前 默认 窗口
DESC: 脚本默认目标窗口句柄
SIG: ColorAbout.TargetHwnd As Integer
CODE:
Dim h As Integer = ColorAbout.TargetHwnd
KW: 找色 多点 自动 智能 分流 GPU CPU
DESC: 多点找色-自动选GPU/CPU(推荐)
SIG: ColorAbout.CFindMultiColorGPU2(x1,y1,x2,y2, 首色, 偏移, sim, fx, fy) As Boolean
CODE:
Dim fx As Long, fy As Long
If ColorAbout.CFindMultiColorGPU2(0, 0, 1919, 1079, “000000”, “2|0|000000,-1|1|000000”, 1.0, fx, fy) Then
ColorAbout.PrintLog("命中 " & fx & “,” & fy)
End If
KW: 找色 单色 GPU 后台 快
DESC: 单色找色-GPU通道
SIG: ColorAbout.CFindColorGPU(x1,y1,x2,y2, color, sim, fx, fy) As Boolean
CODE:
Dim fx As Long, fy As Long
If ColorAbout.CFindColorGPU(0, 0, 1919, 1079, “FF0000”, 0.9, fx, fy) Then
ColorAbout.PrintLog("命中 " & fx & “,” & fy)
End If
智能分流不满意调度的时候插叙消耗资源有点大暂时给屏蔽了 ColorAbout.CFindMultiColorGPU2
踏过无数小坑后最终实现了脚本的二进制编译图色处理功提速优化和所见即所得编程。脚本编译二进制就是一个翻译问题预先用编程语言编写好所有要用到的函数,编译之前扫描翻译成常见编程语言补头尾然后编译就是了。
下面就是语言的选择 底层操作C语言优势还是很明显GPU服务这方面用C语言,脚本编译问题总不能每个机器上都布置上编译环境吧。现在主流是WIN10自带.NET,那就用它编译。界面用我习惯的VB6处理。成果截图极其丑陋但是能用。
这个 功能多点选取根据相似度 一键选取 生成的脚本 立刻编译测试通过则写入文件,编译测试未通过就提示。节省了抠图这个速度极慢的活.
1标注的就是脚本能编译成可执行二进制的关键部分。可以认为是脚本翻译成编程语言的核心功能。2脚本编辑注释写上窗口。旁边自动出现关于窗口的脚本功能直接复制自己感觉方便一些加快脚本编辑的 速度。
优化效果跑13个模拟器 无限循环脚本间隔50毫秒多点找色点阵是不存在的 这样就必须遍历完整个设定区域电源模式高性能脚本如下
Dim tStep1 As Long = Environment.TickCount
do
Dim fx As Long, fy As Long
If ColorAbout.CFindMultiColorGPU(20, 46, 399, 224, “038409”, “2|0|00C300,3|0|00C200,4|0|00E800,5|0|00C200,7|0|00A300,2|1|00B502,3|1|00BF00,4|1|00BC00,7|1|00A300,-2|2|008600,1|2|028205,3|2|00A100,4|2|01C101,5|2|01AD02,7|2|00A300”, 1, fx, fy, ColorAbout.TargetHwnd) Then
SafeClick(31,50)'选完成任务
exit do
Else
’ 未找到
End If
ColorAbout.BgSleep(50)
ColorAbout.SetCurFunc(" Step " & Environment.TickCount - tStep1)
If Environment.TickCount - tStep1 >= 60000 Then
tStep1 = Environment.TickCount
End If
loop
脚本无运行情况下 CPU GPU使用情况![在这里插入图片描述]
13个脚本同时运行CPU GPU使用情况 15% 49%
13个并发CPU2%的增幅 GPU2-3个百分点的增加。17% GPU稳定在51%