原标题:RT-Thread软件包可以对MCU进行性能测试,跑一个试试!

在 ST 官网上查看 MCU 的介绍时,经常会看到下面的数据,例如STM32F103的介绍:

上面的 1.25 DMIPS/MHz 代表什么意思,又是如何得到的呢?这就是 CPU 性能测试 (benchmark) 小工具Dhrystone测试得到的。

Dhrystone

Dhrystone 是 1984 年由 Reinhold P. Weicker 提出的通用处理器 (CPU) 性能测试标准,最早用 ADA 实现,随后 Rick Richardson 把它翻译为 C 语言,并很快成为了业界标准。不过 Dhdrystone 只测试整型运算,并不包含浮点运算,因此无法用它来判断 FPU 的性能。

最新的源码可以在这里:https://www.netlib.org/benchmark/dhry-c找到,虽说是最新,其实也有几十年历史了,这个链接里不仅包含了介绍,也可以直接生成源码:

1$ curl https: //www.netlib.org/benchmark/dhry-c > dhry-c.sh

2$ chmod u+x dhry-c.sh

3$ ./dhry-c.sh

这样就可以看到目录下生成了源码和介绍了:

1.

2├── RATIONALE

3├── README_C

4├── VARIATIONS

5├── dhry-c.sh

6├── dhry.h

7├── dhry_1.c

8├── dhry_2.c

9├── dhry_c.dif

10└── submit.frm

当然,如果是在 RT-Thread 平台的话,直接在 env 下面 menuconfig 就可以找到 Dhrystone 软件包了:

1RT-Thread online packages

2tools packages --->

3[*] DHRYSTONE: a benchmark that measures the performance of MCUs andCPUs.

选中软件包并编译,就可以在 msh 下输入:

1msh> dhrystone_test

就可以看到跑分结果了,例如:

STM32F103 (ARMCC -O3 -Otime) 跑分: 79 DMIPS & 1.09 DMIPS/MHz

1| /

2- RT - Thread Operating System

3/ | 4.0.2build Oct 152019

42006- 2019Copyright by rt-thread team

5msh >

6msh >dhrystone_test

7

8Dhrystone Benchmark, Version 2.1(Language: C)

9

10Program compiled without 'register'attribute

11

12Execution starts, 320000runs through Dhrystone

13Execution ends

14

15Final values of the variables used in the benchmark:

16

17Int_Glob: 5

18should be: 5

19Bool_Glob: 1

20should be: 1

21Ch_1_Glob: A

22should be: A

23Ch_2_Glob: B

24should be: B

25Arr_1_Glob[ 8]: 7

26should be: 7

27Arr_2_Glob[ 8][ 7]: 320010

28should be: Number_Of_Runs + 10

29Ptr_Glob->

30Ptr_Comp: 536892000

31should be: (implementation-dependent)

32Discr: 0

33should be: 0

34Enum_Comp: 2

35should be: 2

36Int_Comp: 17

37should be: 17

38Str_Comp: DHRYSTONE PROGRAM, SOME STRING

39should be: DHRYSTONE PROGRAM, SOME STRING

40Next_Ptr_Glob->

41Ptr_Comp: 536892000

42should be: (implementation-dependent), same as above

43Discr: 0

44should be: 0

45Enum_Comp: 1

46should be: 1

47Int_Comp: 18

48should be: 18

49Str_Comp: DHRYSTONE PROGRAM, SOME STRING

50should be: DHRYSTONE PROGRAM, SOME STRING

51Int_1_Loc: 5

52should be: 5

53Int_2_Loc: 13

54should be: 13

55Int_3_Loc: 7

56should be: 7

57Enum_Loc: 1

58should be: 1

59Str_1_Loc: DHRYSTONE PROGRAM, 1'ST STRING

60should be: DHRYSTONE PROGRAM, 1'ST STRING

61Str_2_Loc: DHRYSTONE PROGRAM, 2'ND STRING

62should be: DHRYSTONE PROGRAM, 2'ND STRING

63

64Microseconds forone run through Dhrystone: 7

65Dhrystones per Second: 139130

66VAX MIPS rating: 79

GD32VF103CB (GCC -Os) 跑分: 50 DMIPS & 0.46 DMIPS/MHz

1| /

2- RT - Thread Operating System

3/ | 4.0.2build Oct 142019

42006- 2019Copyright by rt-thread team

5msh >

6msh >dhrystone_test

7

8Dhrystone Benchmark, Version 2.1(Language: C)

9

10Program compiled without 'register'attribute

11

12Execution starts, 320000runs through Dhrystone

13Execution ends

14

15Final values of the variables used in the benchmark:

16

17Int_Glob: 5

18should be: 5

19Bool_Glob: 1

20should be: 1

21Ch_1_Glob: A

22should be: A

23Ch_2_Glob: B

24should be: B

25Arr_1_Glob[ 8]: 7

26should be: 7

27Arr_2_Glob[ 8][ 7]: 320010

28should be: Number_Of_Runs + 10

29Ptr_Glob->

30Ptr_Comp: 536884636

31should be: (implementation-dependent)

32Discr: 0

33should be: 0

34Enum_Comp: 2

35should be: 2

36Int_Comp: 17

37should be: 17

38Str_Comp: DHRYSTONE PROGRAM, SOME STRING

39should be: DHRYSTONE PROGRAM, SOME STRING

40Next_Ptr_Glob->

41Ptr_Comp: 536884636

42should be: (implementation-dependent), same as above

43Discr: 0

44should be: 0

45Enum_Comp: 1

46should be: 1

47Int_Comp: 18

48should be: 18

49Str_Comp: DHRYSTONE PROGRAM, SOME STRING

50should be: DHRYSTONE PROGRAM, SOME STRING

51Int_1_Loc: 5

52should be: 5

53Int_2_Loc: 13

54should be: 13

55Int_3_Loc: 7

56should be: 7

57Enum_Loc: 1

58should be: 1

59Str_1_Loc: DHRYSTONE PROGRAM, 1'ST STRING

60should be: DHRYSTONE PROGRAM, 1'ST STRING

61Str_2_Loc: DHRYSTONE PROGRAM, 2'ND STRING

62should be: DHRYSTONE PROGRAM, 2'ND STRING

63

64Microseconds forone run through Dhrystone: 11

65Dhrystones per Second: 89385

66VAX MIPS rating: 50

顺便一提,如果没有看到测试结果,可能是你的 MCU 太强劲了,一下就跑完了所有的测试,以至于没有得到有效的结果;或者 msh 控制台卡死很久没有得到结果,多半是你的 MCU 太慢了。这种情况下都可以修改 menuconfig 里的迭代次数,来匹配你的 MCU。更多测试结果可以在下面的参考资料里找到。

参考资料

Dhrystone 软件包:

https://github.com/wuhanstudio/dhrystone

Dhrystone 测试结果汇总:

http://performance.netlib.org/performance/html/dhrystone.data.col0.html

Dhrystone 历史源码:

https://github.com/Keith-S-Thompson/dhrystone

Coremark

虽然在 ST 的官网上都会放有 Dhrystone 的测试结果,但是不得不说作为一个历史悠久的性能测试工具,它还是有很多弊端的,为此 eembc 推出了新的性能测试工具 Coremark,相比 Dhrystone 有不少改进:

Coremark 的主页可以在这里:https://www.eembc.org/coremark/找到,上面 Coremark 相比 Dhrystone 优点的截图也是从官网截取的,当然也可以从官网上找到最新的源码和测试结果。

当然,如果是在 RT-Thread 平台的话,直接在 env 下面 menuconfig 就可以找到 Coremark 软件包了:

1RT-Thread online packages

2tools packages --->

3[*] COREMARK : a benchmark that measures the performance of MCUs andCPUs.

选中软件包并编译,就可以在 msh 下输入:

1msh> core_mark

就可以看到跑分结果了,例如:

STM32F103RC (72MHZ) ARMCC -O3 -Otime 跑分 135:

1| /

2- RT - Thread Operating System

3/ | 4.0.2build Oct 132019

42006- 2019Copyright by rt-thread team

5msh >

6msh >core_mark

7Benchmark started, please make sure it runs forat least 10s.

8

92K performance run parameters forcoremark.

10CoreMark Size : 666

11Total ticks : 17776

12Total time(secs): 17.776000

13Iterations/Sec : 135.013501

14Iterations : 2400

15Compiler version : Please put compiler version here(e.g. gcc 4.1)

16Compiler flags :

17Memory location : STACK

18seedcrc : 0xe9f5

19[0]crclist : 0xe714

20[0]crcmatrix : 0x1fd7

21[0]crcstate : 0x8e3a

22[0]crcfinal : 0x382f

23Correct operation validated. See README.md forrun andreporting rules.

24CoreMark 1.0 : 135.013501 / Please put compiler version here(e.g. gcc 4.1)/ STACK

25

GD32VF103 (108MHz) GCC -Os 跑分 327:

1| /

2- RT - Thread Operating System

3/ | 4.0.2build Oct 132019

42006- 2019Copyright by rt-thread team

5msh >

6msh >core_mark

7Benchmark started, please make sure it runs forat least 10s.

8

92K performance run parameters forcoremark.

10CoreMark Size : 666

11Total ticks : 1178

12Total time(secs): 11

13Iterations/Sec : 327

14Iterations : 3600

15Compiler version : GCC8.2.0

16Compiler flags :

17Memory location : STACK

18seedcrc : 0xe9f5

19[0]crclist : 0xe714

20[0]crcmatrix : 0x1fd7

21[0]crcstate : 0x8e3a

22[0]crcfinal : 0x4bfc

23Correct operation validated. See README.md forrun andreporting rules.

24CoreMark 1.0 : 327 / GCC8.2.0 / STACK

25

最终得分当然是越高越好了,为了得到有效的测试结果,需要确保测试运行 10s 以上,可以修改 menuconfig 里的迭代次数,来匹配你的 MCU。更多测试结果可以在官网里找到。

参考资料

Coremark 软件包:

https://github.com/wuhanstudio/coremark

Coremark 测试结果汇总:

https://www.eembc.org/coremark/scores.php

Coremark 官网:

https://www.eembc.org/coremark/

注意事项

不得不说,无论是 Dhrystone 还是 Coremark,编译器的优化选项对测试结果影响都是比较大的,如果你的测试结果与官网的结果略有不同,可以看看是不是自己没有打开编译器的优化选项。

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。返回搜狐,查看更多

责任编辑:

dhrystone测试结果_RT-Thread软件包可以对MCU进行性能测试,跑一个试试!相关推荐

  1. dhrystone测试结果_RTThread软件包可以对MCU进行性能测试,跑一个试试!

    在 ST 官网上查看 MCU 的介绍时,经常会看到下面的数据,例如 STM32F103的介绍: 上面的 1.25 DMIPS/MHz 代表什么意思,又是如何得到的呢?这就是 CPU 性能测试 (ben ...

  2. JMeter 阶梯式加压测试插件 Concurrency Thread Group

    jmeter阶梯式加压测试:JMeter 阶梯式加压测试插件 Stepping Thread Group 由于Stepping Thread Group插件相对来说过于老旧,已不被官方所推荐. 所以这 ...

  3. dhrystone测试结果_Linux性能测试工具-UnixBench--安装以及结果分析-阿里云开发者社区...

    UnixBench unixbench是一个用于测试unix系统性能的工具,也是一个比较通用的benchmark, 此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方 ...

  4. Riscv五级流水线64位cpu,systemverilog编写,指令集rv64i,支持csr寄存器,可跑通dhrystone测试

    Riscv五级流水线64位cpu,systemverilog编写,指令集rv64i,支持csr寄存器,可跑通dhrystone测试. 支持2bit饱和分支预测 包括: 1.rv64单周期Cpu 2.r ...

  5. 模拟测试电脑性能软件,对比哪个模拟器好 六款电脑手游模拟器安兔兔性能测试跑分...

    现在用模拟器的用户电脑上玩手机应用的用户越来越多,但是使用的模拟器好用吗?但是很多人在用的时候老是觉得卡顿不好用,或者是兼容性不好,或者感觉速度慢不流畅,非常影响电脑上手游模拟的体验. 安卓模拟器作为 ...

  6. dhrystone测试结果_测试cpu的简单工具-dhrystone | 学步园

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在现在的internet网站上,有很多的cpu性能测试工具.这其中包括了各种评分软件,但是我还 ...

  7. dhrystone测试结果_Dhrystone Benchmark

    Dhrystone 分析报告 whetstone 有很多局限和不足, 为了弥补这种不足, 也为了适应形势的发展, Reinhold . p.Weicker 在 1984 年仿造 whetstone 的 ...

  8. dhrystone测试结果_CPU性能测试分析MIPS、DMIPS

    一 what MIPS: million instruction per second,表示每秒多少百万条指令,如 10MIPS ,表示每秒一千万条指令. MIPS/MHz : 表示 CPU 在每 1 ...

  9. dhrystone测试结果_Sisoftware Sandra测试:处理器_服务器-中关村在线

    ThinkStation E32 SFF工作站的Sisoftware Sandra 2012测试:处理器 本项测试采用的软件是Sisoftware Sandra 2012版,它支持最新的至强E3.E5 ...

最新文章

  1. CUDA Samples: Streams' usage
  2. 献给新一代AI后浪们----《后丹》
  3. Centos7 下nginx nginx-1.13.4 安装
  4. 通过 P3P规范让IE跨域接受第三方cookie session
  5. CSS3 keyframes动画实现弹跳效果
  6. Oracle 在 多个Virtualbox 虚拟机间 跨不同物理宿主机进行通信
  7. java url帮助类_Spring居然还提供了这么好用的URL工具类
  8. 【转】ASP.NET 2.0中Page事件的执行顺序
  9. MySQL Spatial Extensions 地理信息
  10. windows下pclpy安装失败的解决方法——本地安装
  11. 分析如何查找Linux死机的原因
  12. 【数据集】机器学习数据集汇总(附下载地址)
  13. 深山红叶PE工具箱嫦娥一号纪念版
  14. 父子类中静态方法和属性实现
  15. 简单的WGS84转UTM程序[C++]
  16. 也谈说话这件事--《好好说话》读后感
  17. 如何向Oracle数据库中插入带有特殊符号“”的数据
  18. 计算机基础长文档的排版,“WORD长文档排版技术
  19. 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
  20. 重启路由器后xshell连接Linux主机出现connect failed问题

热门文章

  1. http://www.ibm.com/developerworks/websphere/library/techarticles/0305_issw/recommendedreading.html
  2. ats中的Servername和via值修改
  3. 开发数字藏品平台的公司
  4. 基于ssm家教中介服务网站
  5. Android 组合键的监听
  6. 实现摄像头在内网、外网、gb28181 实现 “视频监控/直播” 的常用几种方式
  7. 商业模式新生代_商业模式设计方法视觉化思考——《商业模式新生代》笔记之九...
  8. 每天学点硬件 1.22 TRENCH PLANAR MOSFET
  9. VB.NET XOR 运算
  10. 你学会UI设计了吗?