|

分享源码
界面截图: |
- |
是否带模块: |
- |
备注说明: |
- |
本帖最后由 明天自然醒 于 2025-7-4 10:16 编辑
经常看到刚入门的小伙伴们写代码会碰到卡死的问题,遇到优化瓶颈了也可以看看,说不定有帮助。以下是一个案例,分为七步。前四步已经可以满足大部分需求了~
未优化的代码 “耗时:8.8885125 s”
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 数量 | 整数型 | | | 随机字符串 | 文本型 | | | 字符集 | 文本型 | | | 字符位置 | 整数型 | | | 开始计时 ()编辑框_域名列表.内容 = “”字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”数量 = 到整数 (编辑框_生成条数.内容 ) 计次循环首 (数量, i ) 随机字符串 = “” 计次循环首 (到整数 (编辑框_生成位数.内容 ), )  字符位置 = 取随机数 (1, 取文本长度 (字符集 ))   随机字符串 = 随机字符串 + 取文本中间 (字符集, 字符位置, 1 ) 计次循环尾 () 编辑框_域名列表. 加入文本 (随机字符串 + 编辑框_后缀部分.内容 + #换行符 ) 计次循环尾 ()弹出计时结果 ()
优化第一步 “耗时:313.7165 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 数量 | 整数型 | | | 随机字符串 | 文本型 | | | 字符集 | 文本型 | | | 字符位置 | 整数型 | | | 结果文本 | 文本型 | | | 开始计时 ()字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”数量 = 到整数 (编辑框_生成条数.内容 ) 计次循环首 (数量, i ) 随机字符串 = “” 计次循环首 (到整数 (编辑框_生成位数.内容 ), )  字符位置 = 取随机数 (1, 取文本长度 (字符集 ))   随机字符串 = 随机字符串 + 取文本中间 (字符集, 字符位置, 1 ) 计次循环尾 () 结果文本 = 结果文本 + 随机字符串 + 编辑框_后缀部分.内容 + #换行符 计次循环尾 ()编辑框_域名列表.内容 = 结果文本 弹出计时结果 ()
优化第二步 “耗时:197.86 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 数量 | 整数型 | | | 随机字符串 | 文本型 | | | 字符集 | 文本型 | | | 字符位置 | 整数型 | | | 后缀 | 文本型 | | | 结果文本 | 文本型 | | | 如果真 (是否为调试版 ()) 信息框 (“调试运行下有误差”, 0, , ) 开始计时 ()字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”数量 = 到整数 (编辑框_生成条数.内容 )后缀 = 编辑框_后缀部分.内容 计次循环首 (数量, i ) 随机字符串 = “” 计次循环首 (到整数 (编辑框_生成位数.内容 ), )  字符位置 = 取随机数 (1, 取文本长度 (字符集 ))   随机字符串 = 随机字符串 + 取文本中间 (字符集, 字符位置, 1 ) 计次循环尾 () 结果文本 = 结果文本 + 随机字符串 + 后缀 + #换行符 计次循环尾 ()编辑框_域名列表.内容 = 结果文本 弹出计时结果 ()
优化第三步 “耗时:102 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
3.1 减少对 '编辑框_生成位数' 的访问 (PS: 编译后生效)
3.2 减少使用 取文本长度 (字符集) (PS: 编译后生效)
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | 数量 | 整数型 | | | 生成位数 | 整数型 | | | 随机字符串 | 文本型 | | | 字符集 | 文本型 | | | 字符集长度 | 整数型 | | | 字符位置 | 整数型 | | | 后缀 | 文本型 | | | 结果文本 | 文本型 | | | 如果真 (是否为调试版 ()) 信息框 (“调试运行下有误差”, 0, , ) 开始计时 ()字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”字符集长度 = 取文本长度 (字符集 ) 数量 = 到整数 (编辑框_生成条数.内容 )生成位数 = 到整数 (编辑框_生成位数.内容 )后缀 = 编辑框_后缀部分.内容 计次循环首 (数量, i ) 随机字符串 = “” 计次循环首 (生成位数, )   字符位置 = 取随机数 (1, 字符集长度 )   随机字符串 = 随机字符串 + 取文本中间 (字符集, 字符位置, 1 ) 计次循环尾 () 结果文本 = 结果文本 + 随机字符串 + 后缀 + #换行符 计次循环尾 ()编辑框_域名列表.内容 = 结果文本 弹出计时结果 ()
优化第四步 “耗时:50.288 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
3.1 减少对 '编辑框_生成位数' 的访问 (PS: 编译后生效)
3.2 减少使用 取文本长度 (字符集) (PS: 编译后生效)
- 提高字符串拼接效率
变量名 | 类 型 | 静态 | 数组 | 备 注 | 快速文本 | 快速文本对象 | | | 数量 | 整数型 | | | 生成位数 | 整数型 | | | 字符集 | 文本型 | | | 字符集长度 | 整数型 | | | 字符位置 | 整数型 | | | 后缀 | 文本型 | | | 开始计时 ()快速文本. 置内存增量 (1024 × 1024 )字符集 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”字符集长度 = 取文本长度 (字符集 ) 数量 = 到整数 (编辑框_生成条数.内容 )生成位数 = 到整数 (编辑框_生成位数.内容 )后缀 = 编辑框_后缀部分.内容 计次循环首 (数量, ) 计次循环首 (生成位数, )  字符位置 = 取随机数 (1, 字符集长度 )  快速文本. 添加 (取文本中间 (字符集, 字符位置, 1 ))  计次循环尾 () 快速文本. 添加 (后缀, #换行符 ) 计次循环尾 ()编辑框_域名列表.内容 = 快速文本. 取文本 (, )弹出计时结果 ()
优化第五步 “耗时:41.36 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
3.1 减少对 '编辑框_生成位数' 的访问 (PS: 编译后生效)
3.2 减少使用 取文本长度 (字符集) (PS: 编译后生效)
- 提高字符串拼接效率
- 减少 '取文本中间' 带来的中间损耗(内存申请、内存释放),直接将数据写入提前申请好的大内存
变量名 | 类 型 | 静态 | 数组 | 备 注 | 快速字节集 | 快速字节集对象 | | | 数量 | 整数型 | | | 生成位数 | 整数型 | | | 字符集 | 字节集 | | | 字符集长度 | 整数型 | | | 字符位置 | 整数型 | | | 后缀 | 字节集 | | | 开始计时 ()快速字节集. 置内存增量 (1024 × 1024 )字符集 = 到字节集 (“0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”) 字符集长度 = 取字节集长度 (字符集 )数量 = 到整数 (编辑框_生成条数.内容 )生成位数 = 到整数 (编辑框_生成位数.内容 )后缀 = 到字节集 (编辑框_后缀部分.内容 ) 计次循环首 (数量, ) 计次循环首 (生成位数, )  字符位置 = 取随机数 (1, 字符集长度 )  快速字节集. 添加 (字符集 [字符位置 ])  计次循环尾 () 快速字节集. 添加 (后缀, { 13, 10 }) 计次循环尾 ()编辑框_域名列表.内容 = 到文本 (快速字节集. 取字节集 (, )) 弹出计时结果 ()
优化第六步 “耗时:4.47 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
3.1 减少对 '编辑框_生成位数' 的访问 (PS: 编译后生效)
3.2 减少使用 取文本长度 (字符集) (PS: 编译后生效)
- 提高字符串拼接效率
- 减少 '取文本中间' 带来的中间损耗(内存申请、内存释放),直接将数据写入提前申请好的大内存
- 变更组件
变量名 | 类 型 | 静态 | 数组 | 备 注 | 快速字节集 | 快速字节集对象 | | | 数量 | 整数型 | | | 生成位数 | 整数型 | | | 字符集 | 字节集 | | | 字符集长度 | 整数型 | | | 字符位置 | 整数型 | | | 后缀 | 字节集 | | |
宽度 = 740 开始计时 ()快速字节集. 置内存增量 (1024 × 1024 )字符集 = 到字节集 (“0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”) 字符集长度 = 取字节集长度 (字符集 )数量 = 到整数 (编辑框_生成条数.内容 )生成位数 = 到整数 (编辑框_生成位数.内容 )后缀 = 到字节集 (编辑框_后缀部分.内容 ) 计次循环首 (数量, ) 计次循环首 (生成位数, )  字符位置 = 取随机数 (1, 字符集长度 )  快速字节集. 添加 (字符集 [字符位置 ])  计次循环尾 () 快速字节集. 添加 (后缀, { 13, 10 }) 计次循环尾 ()代码编辑框1. 置文本 (到文本 (快速字节集. 取字节集 (, )) )弹出计时结果 ()
优化第七步 “耗时:2.318 ms”
【优化内容】
- 减少对 '编辑框_域名列表' 的访问
- 减少对 '编辑框_后缀部分' 的访问 (PS: 编译后生效)
3.1 减少对 '编辑框_生成位数' 的访问 (PS: 编译后生效)
3.2 减少使用 取文本长度 (字符集) (PS: 编译后生效)
- 提高字符串拼接效率
- 减少 '取文本中间' 带来的中间损耗(内存申请、内存释放),直接将数据写入提前申请好的大内存
- 变更组件
- 极致优化,追加小批次
变量名 | 类 型 | 静态 | 数组 | 备 注 | 快速字节集 | 快速字节集对象 | | | 数量 | 整数型 | | | 生成位数 | 整数型 | | | 字符集 | 字节集 | | | 字符集长度 | 整数型 | | | 字符位置 | 整数型 | | | 后缀 | 字节集 | | | 缓冲区 | 字节集 | | | 后缀长度 | 整数型 | | | 域名长度 | 整数型 | | | 内存偏移 | 整数型 | | | j | 整数型 | | |
宽度 = 740 如果真 (到整数 (编辑框_生成条数.内容 ) ≤ 10000 ) 信息框 (“生成条数 >= 10万,效果更明显”, 0, , ) 开始计时 ()快速字节集. 置内存增量 (1024 × 1024 )字符集 = 到字节集 (“0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”) 字符集长度 = 取字节集长度 (字符集 )数量 = 到整数 (编辑框_生成条数.内容 )生成位数 = 到整数 (编辑框_生成位数.内容 )后缀 = 到字节集 (编辑框_后缀部分.内容 ) + { 13, 10 } 后缀长度 = 取字节集长度 (后缀 )域名长度 = 生成位数 + 后缀长度 缓冲区 = 取空白字节集 (域名长度 ) 内存偏移 = 取变量数据地址 (缓冲区 ) + 生成位数 计次循环首 (数量, ) 计次循环首 (生成位数, j )  字符位置 = 取随机数 (1, 字符集长度 )  缓冲区 [j ] = 字符集 [字符位置 ] 计次循环尾 () 写到内存 (后缀, 内存偏移, 后缀长度 )  快速字节集. 添加 (缓冲区 ) 计次循环尾 ()代码编辑框1. 置文本 (到文本 (快速字节集. 取字节集 (, )) )弹出计时结果 ()
优化案例1.zip
(6.89 KB, 下载次数: 23)
|
评分
-
查看全部评分
|