精易论坛

标题: 汇编四种循环 取文本行数速度对比 [打印本页]

作者: cf2006a    时间: 2019-4-18 21:10
标题: 汇编四种循环 取文本行数速度对比
本帖最后由 cf2006a 于 2019-4-19 12:59 编辑
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本文本型 
t整数型 
a整数型 
b整数型 
c整数型 
文本字节集字节集 
文本 = 取重复文本 (1000, #换行符 )
t = 取启动时间 ()
计次循环首 (1000000, )
a = 文本_取行数1 (文本)
计次循环尾 ()
t = 取启动时间 () - t
调试输出 (a, t)
t = 取启动时间 ()
计次循环首 (1000000, )
b = 文本_取行数2 (文本)
计次循环尾 ()
t = 取启动时间 () - t
调试输出 (b, t)
文本字节集 = 到字节集 (文本)
t = 取启动时间 ()
计次循环首 (1000000, )
c = 汇编_取文本行数 (文本字节集)
计次循环尾 ()
t = 取启动时间 () - t
调试输出 (b, t)
t = 取启动时间 ()
计次循环首 (1000000, )
c = 取文本行数 (文本)
计次循环尾 ()
t = 取启动时间 () - t
调试输出 (c, t)
子程序名返回值类型公开备 注
取文本行数整数型 
参数名类 型参考可空数组备 注
文本文本型
置入代码 ({ 252, 51, 201, 87, 139, 125, 8, 139, 63, 131, 255, 0, 116, 37, 184, 0, 13, 10, 0, 174, 116, 20, 79, 193, 232, 8, 102, 175, 117, 6, 65, 193, 224, 8, 235, 239, 193, 224, 8, 79, 235, 233, 102, 129, 127, 253, 13, 10, 116, 1, 65, 139, 193, 95, 201, 194, 4, 0 })
返回 (0)
' cld
' xor ecx, ecx
' push edi
' mov edi, dword [ebp+0x08]
' mov edi, dword [edi]
' cmp edi, 0x00000000
' je Label1
' mov eax, 0x000A0D00
' Label4:
' scasb
' je Label2
' dec edi
' shr eax, 0x08
' scasw
' jne Label3
' inc ecx
' shl eax, 0x08
' jmp Label4
' Label3:
' shl eax, 0x08
' dec edi
' jmp Label4
' Label2:
' cmp word [edi-0x03], 0x0A0D
' je Label1
' inc ecx
' Label1:
' mov eax, ecx
' pop edi
' leave
' retn 0x0004
子程序名返回值类型公开备 注
汇编_取文本行数整数型 
参数名类 型参考可空数组备 注
参数一字节集
变量名类 型静态数组备 注
返回值整数型 
置入代码 ({ 96, 139, 69, 8, 139, 0, 139, 72, 4, 141, 88, 8, 184, 10, 0, 0, 0, 49, 210, 56, 3, 117, 1, 66, 67, 226, 248, 137, 85, 252, 97 })
返回 (返回值)
' pushad
' mov eax,[ebp+8]
' mov eax,[eax]
' mov ecx,[eax+4]
' lea ebx,[eax+8]
' mov eax,10
' xor edx,edx
' begin:
' cmp byte ptr [ebx],al
' jnz addr1
' inc edx
' addr1:
' inc ebx
' loop Begin
' mov [ebp-4],edx
' popad
子程序名返回值类型公开备 注
文本_取行数1整数型 取一个文本共有有多少行。
参数名类 型参考可空数组备 注
文本文本型
置入代码 ({ 139, 125, 8, 139, 63, 49, 192, 138, 15, 128, 249, 0, 116, 9, 71, 128, 249, 10, 117, 243, 64, 235, 240, 137, 236, 93, 194, 4, 0 })
返回 (0)
' mov edi, dword [ebp+0x08]
' mov edi, dword [edi]
' xor eax, eax
' Label2:
' mov cl, byte [edi]
' cmp cl, 0x00
' je Label1
' inc edi
' cmp cl, 0x0A
' jne Label2
' inc eax
' jmp Label2
' Label1:
' mov esp, ebp
' pop ebp
' retn 0x0004
子程序名返回值类型公开备 注
文本_取行数2整数型 取一个文本共有有多少行。
参数名类 型参考可空数组备 注
文本文本型
置入代码 ({ 139, 69, 8, 139, 48, 49, 201, 172, 132, 192, 116, 7, 60, 10, 117, 247, 65, 235, 244, 137, 200, 137, 236, 93, 194, 4, 0 })
返回 (0)
' mov eax, dword [ebp+0x08]
' mov esi, dword [eax]
' xor ecx, ecx
' Label2:
' lodsb
' test al, al
' je Label1
' cmp al, 0x0A
' jne Label2
' inc ecx
' jmp Label2
' Label1:
' mov eax, ecx
' mov esp, ebp
' pop ebp
' retn 0x0004



i支持库列表   支持库注释   
spec特殊功能支持库

作者: 扯谈i    时间: 2019-4-18 22:11
感谢楼主的分享
作者: 一尘不染    时间: 2019-4-18 22:49
感谢大神分享
作者: 月神k    时间: 2019-4-18 23:47
感谢分享.试试怎么样...
作者: 外星星人    时间: 2019-4-19 00:22
感谢大神分享
作者: haishifu    时间: 2019-4-19 01:23
本帖最后由 haishifu 于 2019-4-19 10:51 编辑

                                                   
作者: cf2006a    时间: 2019-4-19 09:45
haishifu 发表于 2019-4-19 01:23
为什么我写的要快那么多呢////。。。。
随便写的,没有完全优化空行。

* 1000 | 2579
* 1000 | 1328
* 1000 | 3953
* 1000 | 1188       你的 确实会更快些  

学习了!谢谢分享
作者: Snow优雅sict    时间: 2019-4-19 23:29
很给力 思路学习了
作者: 超级の赛亚人    时间: 2019-4-20 14:30
三种循环取文本行数速度对比.e (11.89 KB, 下载次数: 7)

作者: 超级の赛亚人    时间: 2019-4-20 14:30
三种循环取文本行数速度对比.e (11.89 KB, 下载次数: 65)




作者: 遵义静以修身    时间: 2019-4-20 17:10
谢谢大牛的分享
作者: 胡秀文    时间: 2019-4-22 12:32
有空楼主搞个集合吧,看楼主写了很多文本操作的东西
作者: wangqianghai2    时间: 2019-4-23 12:15
非常感谢楼主的分享,再接再力吧!
作者: 懒人定制软件    时间: 2019-6-1 16:32
大神,请收下我的膝盖  
作者: qwer2024    时间: 2022-9-12 20:21
555555555555555555555
作者: 搜迪斯内    时间: 2023-6-25 04:32
学习!谢谢分享
作者: hbqjb    时间: 2025-3-13 15:55
感谢楼主的无私!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4