设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 298|回复: 0
收起左侧

易语言MASM置入代码实现 取文本长度() 2.0改进版 效率提升比核心库快1倍 (返回整数型)

[复制链接]
发表于 2023-6-18 20:24:14 | 显示全部楼层 |阅读模式
1.png
  1. 正在编译现行程序
  2. 正在检查重复名称...
  3. 正在预处理现行程序
  4. 正在进行名称连接...
  5. 正在统计需要编译的子程序
  6. 正在编译...
  7. 正在生成主程序入口代码
  8. 程序代码编译成功
  9. 正在封装易格式目的代码
  10. 开始运行被调试程序
  11. * 比较 系统核心支持库的 取文本长度() 与 此汇编程序的效率
  12. * 文本长度:1000000000 核心库耗时(毫秒):1216 汇编耗时(毫秒):780 效率提升:155%
  13. * 文本长度:1000000000 核心库耗时(毫秒):1794 汇编耗时(毫秒):749 效率提升:239%
  14. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):749 效率提升:235%
  15. * 文本长度:1000000000 核心库耗时(毫秒):1779 汇编耗时(毫秒):795 效率提升:223%
  16. * 文本长度:1000000000 核心库耗时(毫秒):1840 汇编耗时(毫秒):749 效率提升:245%
  17. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):765 效率提升:230%
  18. * 文本长度:1000000000 核心库耗时(毫秒):1779 汇编耗时(毫秒):795 效率提升:223%
  19. * 文本长度:1000000000 核心库耗时(毫秒):1903 汇编耗时(毫秒):749 效率提升:254%
  20. * 文本长度:1000000000 核心库耗时(毫秒):1794 汇编耗时(毫秒):764 效率提升:234%
  21. * 文本长度:1000000000 核心库耗时(毫秒):1794 汇编耗时(毫秒):764 效率提升:234%
  22. * 文本长度:1000000000 核心库耗时(毫秒):1794 汇编耗时(毫秒):764 效率提升:234%
  23. * 文本长度:1000000000 核心库耗时(毫秒):1778 汇编耗时(毫秒):765 效率提升:232%
  24. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):765 效率提升:230%
  25. * 文本长度:1000000000 核心库耗时(毫秒):1810 汇编耗时(毫秒):764 效率提升:236%
  26. * 文本长度:1000000000 核心库耗时(毫秒):1794 汇编耗时(毫秒):749 效率提升:239%
  27. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):748 效率提升:235%
  28. * 文本长度:1000000000 核心库耗时(毫秒):1778 汇编耗时(毫秒):749 效率提升:237%
  29. * 文本长度:1000000000 核心库耗时(毫秒):1778 汇编耗时(毫秒):749 效率提升:237%
  30. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):749 效率提升:235%
  31. * 文本长度:1000000000 核心库耗时(毫秒):1763 汇编耗时(毫秒):764 效率提升:230%
  32. * 完成 最大效率:254%
  33. 被调试易程序运行完毕
复制代码

  1. .版本 2

  2. .程序集 程序集1

  3. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  4. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  5. 返回 (0)  ' 可以根据您的需要返回任意数值

  6. .子程序 _临时子程序
  7. .局部变量 长度, 整数型
  8. .局部变量 文本, 文本型
  9. .局部变量 时间, 整数型
  10. .局部变量 耗时A, 整数型
  11. .局部变量 耗时B, 整数型
  12. .局部变量 效率, 整数型
  13. .局部变量 最大效率, 整数型
  14. .局部变量 文本长度, 整数型
  15. .局部变量 文本长度2, 整数型

  16. .变量循环首 (0, 10000, 1, 长度)
  17.     文本 = 取空白文本 (长度)
  18.     .如果真 (取文本长度2 (文本) ≠ 取文本长度 (文本))
  19.         输出调试文本 (“错误”)
  20.         结束 ()
  21.     .如果真结束

  22. .变量循环尾 ()
  23. 文本 = 取空白文本 (1000000000)
  24. 时间 = 取启动时间 ()
  25. 输出调试文本 (“比较 系统核心支持库的 取文本长度() 与 此汇编程序的效率”)
  26. .计次循环首 (20, )
  27.     文本长度 = 取文本长度 (文本)
  28.     耗时A = 取启动时间 () - 时间
  29.     时间 = 取启动时间 ()
  30.     文本长度2 = 取文本长度2 (文本)
  31.     .如果真 (文本长度 ≠ 文本长度2)
  32.         输出调试文本 (“错误”)
  33.         结束 ()
  34.     .如果真结束
  35.     耗时B = 取启动时间 () - 时间
  36.     效率 = 耗时A ÷ 耗时B × 100
  37.     .如果真 (效率 > 最大效率)
  38.         最大效率 = 效率
  39.     .如果真结束
  40.     输出调试文本 (“文本长度:” + 到文本 (文本长度2) + “ 核心库耗时(毫秒):” + 到文本 (耗时A) + “ 汇编耗时(毫秒):” + 到文本 (耗时B) + “ 效率提升:” + 到文本 (效率) + “%”)
  41. .计次循环尾 ()
  42. 输出调试文本 (“完成 最大效率:” + 到文本 (最大效率) + “%”)

  43. .子程序 取文本长度2, 整数型, 公开, MASM汇编指令取文本型数据的长度,不包含结束0。(比系统核心支持库自带的 取文本长度() 效率提升200%以上)
  44. .参数 文本数据, 文本型, , 参数值指定欲检查其长度的文本数据。

  45. 置入代码 ({ 83, 81, 139, 69, 8, 131, 248, 0, 127, 7, 51, 192, 233, 15, 1, 0, 0, 139, 0, 131, 248, 0, 127, 7, 51, 192, 233, 1, 1, 0, 0, 139, 200, 139, 24, 10, 219, 116, 4, 10, 255, 117, 5, 233, 227, 0, 0, 0, 15, 203, 10, 219, 116, 4, 10, 255, 117, 5, 233, 212, 0, 0, 0, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 5, 233, 194, 0, 0, 0, 15, 203, 10, 219, 116, 4, 10, 255, 117, 5, 233, 179, 0, 0, 0, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 5, 233, 161, 0, 0, 0, 15, 203, 10, 219, 116, 4, 10, 255, 117, 5, 233, 146, 0, 0, 0, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 5, 233, 128, 0, 0, 0, 15, 203, 10, 219, 116, 4, 10, 255, 117, 2, 235, 116, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 2, 235, 101, 15, 203, 10, 219, 116, 4, 10, 255, 117, 2, 235, 89, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 2, 235, 74, 15, 203, 10, 219, 116, 4, 10, 255, 117, 2, 235, 62, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 2, 235, 47, 15, 203, 10, 219, 116, 4, 10, 255, 117, 2, 235, 35, 131, 192, 4, 139, 24, 10, 219, 116, 4, 10, 255, 117, 2, 235, 20, 15, 203, 10, 219, 116, 4, 10, 255, 117, 2, 235, 8, 131, 192, 4, 233, 14, 255, 255, 255, 138, 24, 10, 219, 117, 2, 235, 3, 64, 235, 245, 43, 193, 89, 91, 201, 194, 4, 0 })
  46. ' push ebx
  47. ' push ecx
  48. ' mov eax,[ebp+8]
  49. ' .if sdword ptr eax <= 0
  50. ' xor eax,eax
  51. ' jmp ASM_END
  52. ' .endif
  53. ' mov eax,[eax]
  54. ' .if sdword ptr eax <= 0
  55. ' xor eax,eax
  56. ' jmp ASM_END
  57. ' .endif
  58. ' mov ecx,eax
  59. ' .while 1
  60. ' mov ebx,[eax]
  61. ' .if !bl || !bh
  62. ' .break
  63. ' .endif
  64. ' bswap ebx
  65. ' .if !bl || !bh
  66. ' .break
  67. ' .endif
  68. ' add eax,4
  69. ' mov ebx,[eax]
  70. ' .if !bl || !bh
  71. ' .break
  72. ' .endif
  73. ' bswap ebx
  74. ' .if !bl || !bh
  75. ' .break
  76. ' .endif
  77. ' add eax,4
  78. ' mov ebx,[eax]
  79. ' .if !bl || !bh
  80. ' .break
  81. ' .endif
  82. ' bswap ebx
  83. ' .if !bl || !bh
  84. ' .break
  85. ' .endif
  86. ' add eax,4
  87. ' mov ebx,[eax]
  88. ' .if !bl || !bh
  89. ' .break
  90. ' .endif
  91. ' bswap ebx
  92. ' .if !bl || !bh
  93. ' .break
  94. ' .endif
  95. ' add eax,4
  96. ' mov ebx,[eax]
  97. ' .if !bl || !bh
  98. ' .break
  99. ' .endif
  100. ' bswap ebx
  101. ' .if !bl || !bh
  102. ' .break
  103. ' .endif
  104. ' add eax,4
  105. ' mov ebx,[eax]
  106. ' .if !bl || !bh
  107. ' .break
  108. ' .endif
  109. ' bswap ebx
  110. ' .if !bl || !bh
  111. ' .break
  112. ' .endif
  113. ' add eax,4
  114. ' mov ebx,[eax]
  115. ' .if !bl || !bh
  116. ' .break
  117. ' .endif
  118. ' bswap ebx
  119. ' .if !bl || !bh
  120. ' .break
  121. ' .endif
  122. ' add eax,4
  123. ' mov ebx,[eax]
  124. ' .if !bl || !bh
  125. ' .break
  126. ' .endif
  127. ' bswap ebx
  128. ' .if !bl || !bh
  129. ' .break
  130. ' .endif
  131. ' add eax,4
  132. ' .endw
  133. ' .while 1
  134. ' mov bl,[eax]
  135. ' .if !bl
  136. ' .break
  137. ' .endif
  138. ' inc eax
  139. ' .endw
  140. ' sub eax,ecx
  141. ' ASM_END:
  142. ' pop ecx
  143. ' pop ebx
  144. ' leave
  145. ' retn 4
  146. 返回 (0)

复制代码

相关帖子

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

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-27 15:22 , Processed in 1.722099 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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