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

从F到0 - From F to 0

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

纳秒级高精度的子程序指针执行频率时间耗时测量算法

[复制链接]
发表于 2018-10-4 19:59:36 | 显示全部楼层 |阅读模式
本帖最后由 QAQ 于 2018-10-4 19:59 编辑


  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序

  7. 输出频率时间 (, 子程序执行频率测试 (&测频子程序, 10000))


  8. .子程序 测频子程序, , , 此处添加要循环执行的子程序,严禁任何参数以及返回值

  9. 处理事件 ()


  10. .子程序 输出频率时间
  11. .参数 子程序名, 文本型, 可空
  12. .参数 频率, 双精度小数型

  13. 输出调试文本 (子程序名 + “ 频率:” + 频率转换 (频率) + “ 时间:” + 时间转换 (1000000000 ÷ 频率))


  14. .子程序 Rdtsc, 长整数型

  15. 置入代码 ({ 15, 49, 201, 195 })
  16. ' rdtsc
  17. ' leave
  18. ' ret

  19. 返回 (0)

  20. .子程序 取CPU主频, 长整数型
  21. .局部变量 周期, 长整数型

  22. 周期 = Rdtsc ()
  23. 延时 (1000)
  24. 周期 = Rdtsc () - 周期
  25. 返回 (周期)

  26. .子程序 子程序执行频率测试, 双精度小数型
  27. .参数 子程序指针, 子程序指针
  28. .参数 执行次数, 整数型
  29. .局部变量 周期, 长整数型
  30. .局部变量 耗时, 双精度小数型
  31. .局部变量 CPU主频, 长整数型
  32. .局部变量 执行频率, 双精度小数型


  33. CPU主频 = 取CPU主频 ()
  34. 周期 = Rdtsc ()

  35. 计次循环_调用子程序 (子程序指针, 执行次数)
  36. 周期 = Rdtsc () - 周期
  37. 耗时 = 周期 ÷ 执行次数
  38. 执行频率 = CPU主频 ÷ 耗时
  39. 返回 (执行频率)

  40. .子程序 计次循环_调用子程序, , , 调用并循环几次指定的子程序指针。
  41. .参数 指针地址, 子程序指针, , 指针的返回值将会被舍弃,严禁有任何参数。
  42. .参数 循环次数, 整数型, , 不能小于1否则不会被执行。

  43. 置入代码 ({ 139, 69, 8, 139, 93, 12, 129, 251, 255, 255, 255, 127, 118, 2, 235, 22, 185, 0, 0, 0, 0, 235, 11, 80, 83, 81, 82, 255, 208, 90, 89, 91, 88, 65, 59, 203, 114, 241, 201, 194, 8, 0 })

  44. .子程序 频率转换, 文本型
  45. .参数 频率, 双精度小数型

  46. .判断开始 (频率 ≥ 1000000000000)
  47.     返回 (到文本 (频率 ÷ 1000000000000) + “Thz”)
  48. .判断 (频率 ≥ 1000000000)
  49.     返回 (到文本 (频率 ÷ 1000000000) + “Ghz”)
  50. .判断 (频率 ≥ 1000000)
  51.     返回 (到文本 (频率 ÷ 1000000) + “Mhz”)
  52. .判断 (频率 ≥ 1000)
  53.     返回 (到文本 (频率 ÷ 1000) + “Khz”)
  54. .默认

  55. .判断结束
  56. 返回 (到文本 (频率) + “Hz”)


  57. .子程序 时间转换, 文本型
  58. .参数 时间, 双精度小数型

  59. .判断开始 (时间 ≥ 1000000000)
  60.     返回 (到文本 (时间 ÷ 1000000000) + “S”)
  61. .判断 (时间 ≥ 1000000)
  62.     返回 (到文本 (时间 ÷ 1000000) + “mS”)
  63. .判断 (时间 ≥ 1000)
  64.     返回 (到文本 (时间 ÷ 1000) + “uS”)
  65. .默认

  66. .判断结束
  67. 返回 (到文本 (时间) + “nS”)
复制代码

相关帖子

发表于 2018-10-4 22:05:42 | 显示全部楼层
大大666,1天拿5个勋章...
发表于 2018-10-5 09:34:29 | 显示全部楼层
这也可以?楼猪V5
发表于 2018-10-6 20:00:02 | 显示全部楼层
不可能吧这精度
发表于 2018-10-9 16:03:34 | 显示全部楼层
不知道,路过看看
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-26 21:01 , Processed in 2.244129 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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