开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8454|回复: 68
收起左侧

[2018开源大赛(第三届)] 光速取重复字节集--史上最快--指数递增 算法

[复制链接]
结帖率:33% (2/6)
发表于 2018-12-11 01:32:02 | 显示全部楼层 |阅读模式   广东省广州市
早时发了个利用 取重复文本  快速取重复字节集的
https://bbs.125.la/forum.php?mod=viewthread&tid=14280584&page=1&ordertype=1#pid14759597
猛然想起,文本字节0结尾阿 xxxxxxx 果然,带0的都被去掉了
bug!!我居然写出一个有bug的东西。
而且,当重复的字节数为2个时,1千万次的重复要800毫秒了,自带的更不用说,等了好久还没出时间停止掉了!
不爽!
于是,光速取重复字节集诞生了!

你没有看错!1亿次重复2字节,在我电脑只需要281毫秒!
QQ截图20181211012203.png

史上最快光速 内存 指数递增 克隆法 欢迎参观*** 光速取重复字节集-史上最快.e (4.63 KB, 下载次数: 223)

点评

能不能改成文本去重复例子。看不懂   江苏省淮安市  发表于 2018-12-14 10:44
如果不是想申请加精易模块的话.使用快速对象会方便和快一些.   陕西省渭南市  发表于 2018-12-11 07:36
好吧,脑子又抽筋了,防止一些重复次数 传入小于1次的,,在最开始加个 如果真(重复次数<1) 返回({}) 就好了。。   广东省广州市  发表于 2018-12-11 01:42
结帖率:33% (2/6)
 楼主| 发表于 2019-3-8 15:19:32 | 显示全部楼层   广东省广州市
那是刚想到时写出的 完善版自己申请内存 构造正规字节集   (快速取重复文本就是 去掉构造字节集   缓冲区申请多1字节返回文本型就是了)
一直在我的快速模块里放着没有发出来
现在补上,还有快速转文本源码
bu.e (7.57 KB, 下载次数: 48)

点评

10亿才几字节?会算么?物理内存懂吗? 你非纠结我这个属性和精易模块的不一样干什么呢? 你还不如去学学window内存管理????????????????????????   广东省中山市  发表于 2019-3-9 12:45
我测试了下 10亿都能分配,怎么会内存不足。   江西省九江市  发表于 2019-3-9 09:56
属性9 为 不使用连续内存+填充0 防止内存不足时无法分配连续物理内存   广东省中山市  发表于 2019-3-8 23:06
对了 直接把申请内存的标志改成8也可以   江西省九江市  发表于 2019-3-8 22:22
这个应该是有BUG 的,我把这个申请内存的***出来改成 取空白字节集的,发现 无论循环几次 只会执行一次   江西省九江市  发表于 2019-3-8 22:09
回复 支持 反对

使用道具 举报

发表于 2020-5-27 16:58:05 | 显示全部楼层   浙江省嘉兴市
太牛了老湿!老司机中的战斗机。。。
回复 支持 反对

使用道具 举报

结帖率:99% (166/167)
发表于 2020-3-5 19:16:06 | 显示全部楼层   上海市上海市
谢谢楼主的分享,学习啦!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2019-11-1 19:30:45 | 显示全部楼层   湖南省长沙市
如果不是想申请加精易模块的话.使用快速对象会方便和快一些
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-14 20:37:45 | 显示全部楼层   江西省九江市
改成重复文本的用不了了

点评

已经改好了   江西省九江市  发表于 2019-3-16 11:45
https://bbs.125.la/forum.php?mod=viewthread&tid=14327228&extra= 这里的源码有重复文本   广东省广州市  发表于 2019-3-15 00:00
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-8 22:20:38 | 显示全部楼层   江西省九江市
  
子程序名返回值类型公开备 注
取空白字节集_asm字节集 
参数名类 型参考可空数组备 注
字节集长度整数型
HeapAlloc (GetProcessHeap (), 8, 字节集长度 + 8)
置入代码 ({ 199, 0, 1, 0, 0, 0, 255, 117, 8, 143, 64, 4, 139, 229, 93, 194, 4, 0 })
' mov dword ptr[eax],01h  ;字节集 前4位 为整数1,第二个4位 是整数 字节集长度,写入1标记为字节集,可以当 字节数组引用
' push dword ptr[ebp+8]
' pop dword ptr[eax+4]
' mov esp,ebp
' pop ebp
' retn 4
返回 ({  })


还是用这个吧 稍微会快一些

点评

10亿才几字节?会算么?物理内存懂吗? 你非纠结我这个属性和精易模块的不一样干什么呢? 你还不如去学学window内存管理????????????????????????   广东省中山市  发表于 2019-3-9 12:46
不是bug 你改成取空白字节集的不行 说明你没改对而已   广东省中山市  发表于 2019-3-8 23:07
属性9 为 不使用连续内存+填充0 防止内存不足时无法分配连续物理内存   广东省中山市  发表于 2019-3-8 23:06
一样快的 正规字节集类型 有保留8字节 171   广东省中山市  发表于 2019-3-8 23:04
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-8 21:01:37 | 显示全部楼层   江西省九江市
  
子程序名返回值类型公开备 注
到字节集2字节集 文本到字节集
参数名类 型参考可空数组备 注
文本参数文本型
' len = 文本_strlen (文本参数)
' 空白字节集 = 取空白字节集 (len)
' 返回 (空白字节集)
返回 (指针到字节集 (取文本型指针_asm (文本参数), 文本_strlen2 (文本参数)))


发个文本快速到字节集的

点评

文本快不了的 都要重新分配内存   广东省中山市  发表于 2019-3-8 23:11
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-8 20:06:06 | 显示全部楼层   江西省九江市
本帖最后由 shituo 于 2019-3-8 20:49 编辑

' 临时 = 待重复的字节集  ' 去掉这行  如果 待重复的字节集太长 这一行会导致申请内存耗时而且多一个变量 如果是频繁使用这个命令耗时比少一个变量也会快一些

.版本 2  .子程序 置eax, 整数型 .参数 a, 整数型  置入代码 ({ 139, 69, 8, 201, 194, 4, 0 }) ' ; mov eax,[ebp+8] ' ;leave ' ; ret 4 返回 (0)

点评

是哦 忘记了 我当时写时一开始是有改动 待重复的字节集 得 会修改到原始字节集 就用了个临时 后面不用那种方式保存就不会改到参数 变量就没什么用了 忘记修改了 哈哈   广东省中山市  发表于 2019-3-8 20:37
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-8 14:36:48 | 显示全部楼层   江西省九江市
  
子程序名返回值类型公开备 注
取重复字节集_指数递增2字节集 
参数名类 型参考可空数组备 注
重复次数整数型
欲重复的字节集字节集
变量名类 型静态数组备 注
缓冲区字节集 
长度整数型 
源指针整数型 
目的指针整数型 
缓冲区长度整数型 
偏移指针整数型 
未有长度整数型 
长度 = 取字节集长度 (欲重复的字节集)
缓冲区长度 = 重复次数 × 长度
如果真 (缓冲区长度 > 0)
缓冲区 = 取空白字节集 (缓冲区长度)
源指针 = 取字节集指针_asm (欲重复的字节集)
目的指针 = 取字节集指针_asm (缓冲区)
内存_写到内存_b_asm (目的指针, 源指针, 长度)
偏移指针 = 目的指针 + 长度
未有长度 = 缓冲区长度 (偏移指针 - 目的指针)
判断循环首 (长度 < 未有长度)
内存_写到内存_b_asm (偏移指针, 目的指针, 长度)
偏移指针 = 偏移指针 + 长度
未有长度 = 缓冲区长度 (偏移指针 - 目的指针)
长度 = 长度 + 长度
判断循环尾 ()
如果真 (长度 > 未有长度)
内存_写到内存_b_asm (偏移指针, 目的指针, 未有长度)

返回 (缓冲区)
子程序名返回值类型公开备 注
取字节集指针_asm整数型 
参数名类 型参考可空数组备 注
字节集变量字节集
置入代码 ({ 139, 69, 8, 139, 0, 131, 248, 0, 116, 3, 131, 192, 8, 201, 194, 4, 0 })
返回 (0)
给你优化了下 你看看  哪里有不合适的么?

点评

看不出哪里不合适 看置顶   广东省广州市  发表于 2019-3-8 15:20
回复 支持 反对

使用道具 举报

结帖率:30% (6/20)

签到天数: 9 天

发表于 2019-3-8 14:35:52 | 显示全部楼层   江西省九江市
给你优化了下 你看看  哪里有不合适的么?
  
子程序名返回值类型公开备 注
取重复字节集_指数递增2字节集 
参数名类 型参考可空数组备 注
重复次数整数型
欲重复的字节集字节集
变量名类 型静态数组备 注
缓冲区字节集 
长度整数型 
源指针整数型 
目的指针整数型 
缓冲区长度整数型 
偏移指针整数型 
未有长度整数型 
长度 = 取字节集长度 (欲重复的字节集)
缓冲区长度 = 重复次数 × 长度
如果真 (缓冲区长度 > 0)
缓冲区 = 取空白字节集 (缓冲区长度)
源指针 = 取字节集指针_asm (欲重复的字节集)
目的指针 = 取字节集指针_asm (缓冲区)
内存_写到内存_b_asm (目的指针, 源指针, 长度)
偏移指针 = 目的指针 + 长度
未有长度 = 缓冲区长度 (偏移指针 - 目的指针)
判断循环首 (长度 < 未有长度)
内存_写到内存_b_asm (偏移指针, 目的指针, 长度)
偏移指针 = 偏移指针 + 长度
未有长度 = 缓冲区长度 (偏移指针 - 目的指针)
长度 = 长度 + 长度
判断循环尾 ()
如果真 (长度 > 未有长度)
内存_写到内存_b_asm (偏移指针, 目的指针, 未有长度)

返回 (缓冲区)
子程序名返回值类型公开备 注
取字节集指针_asm整数型 
参数名类 型参考可空数组备 注
字节集变量字节集
置入代码 ({ 139, 69, 8, 139, 0, 131, 248, 0, 116, 3, 131, 192, 8, 201, 194, 4, 0 })
返回 (0)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表