在 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.sh2$ chmod u+x dhry-c.sh3$ ./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.dif10└── submit.frm

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

1RT-Thread online packages2  tools packages  --->3      [*] DHRYSTONE: a benchmark that measures the performance of MCUs and CPUs.

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

1msh> dhrystone_test

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

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

 1 \ | / 2- RT -     Thread Operating System 3 / | \     4.0.2 build Oct 15 2019 4 2006 - 2019 Copyright by rt-thread team 5msh > 6msh >dhrystone_test 7 8Dhrystone Benchmark, Version 2.1 (Language: C) 910Program compiled without 'register' attribute1112Execution starts, 320000 runs through Dhrystone13Execution ends1415Final values of the variables used in the benchmark:1617Int_Glob:            518        should be:   519Bool_Glob:           120        should be:   121Ch_1_Glob:           A22        should be:   A23Ch_2_Glob:           B24        should be:   B25Arr_1_Glob[8]:       726        should be:   727Arr_2_Glob[8][7]:    32001028        should be:   Number_Of_Runs + 1029Ptr_Glob->30  Ptr_Comp:          53689200031        should be:   (implementation-dependent)32  Discr:             033        should be:   034  Enum_Comp:         235        should be:   236  Int_Comp:          1737        should be:   1738  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING39        should be:   DHRYSTONE PROGRAM, SOME STRING40Next_Ptr_Glob->41  Ptr_Comp:          53689200042        should be:   (implementation-dependent), same as above43  Discr:             044        should be:   045  Enum_Comp:         146        should be:   147  Int_Comp:          1848        should be:   1849  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING50        should be:   DHRYSTONE PROGRAM, SOME STRING51Int_1_Loc:           552        should be:   553Int_2_Loc:           1354        should be:   1355Int_3_Loc:           756        should be:   757Enum_Loc:            158        should be:   159Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING60        should be:   DHRYSTONE PROGRAM, 1'ST STRING61Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING62        should be:   DHRYSTONE PROGRAM, 2'ND STRING6364Microseconds for one run through Dhrystone: 765Dhrystones per Second:                      13913066VAX  MIPS rating:                           79

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

 1 \ | / 2- RT -     Thread Operating System 3 / | \     4.0.2 build Oct 14 2019 4 2006 - 2019 Copyright by rt-thread team 5msh > 6msh >dhrystone_test 7 8Dhrystone Benchmark, Version 2.1 (Language: C) 910Program compiled without 'register' attribute1112Execution starts, 320000 runs through Dhrystone13Execution ends1415Final values of the variables used in the benchmark:1617Int_Glob:            518        should be:   519Bool_Glob:           120        should be:   121Ch_1_Glob:           A22        should be:   A23Ch_2_Glob:           B24        should be:   B25Arr_1_Glob[8]:       726        should be:   727Arr_2_Glob[8][7]:    32001028        should be:   Number_Of_Runs + 1029Ptr_Glob->30  Ptr_Comp:          53688463631        should be:   (implementation-dependent)32  Discr:             033        should be:   034  Enum_Comp:         235        should be:   236  Int_Comp:          1737        should be:   1738  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING39        should be:   DHRYSTONE PROGRAM, SOME STRING40Next_Ptr_Glob->41  Ptr_Comp:          53688463642        should be:   (implementation-dependent), same as above43  Discr:             044        should be:   045  Enum_Comp:         146        should be:   147  Int_Comp:          1848        should be:   1849  Str_Comp:          DHRYSTONE PROGRAM, SOME STRING50        should be:   DHRYSTONE PROGRAM, SOME STRING51Int_1_Loc:           552        should be:   553Int_2_Loc:           1354        should be:   1355Int_3_Loc:           756        should be:   757Enum_Loc:            158        should be:   159Str_1_Loc:           DHRYSTONE PROGRAM, 1'ST STRING60        should be:   DHRYSTONE PROGRAM, 1'ST STRING61Str_2_Loc:           DHRYSTONE PROGRAM, 2'ND STRING62        should be:   DHRYSTONE PROGRAM, 2'ND STRING6364Microseconds for one run through Dhrystone: 1165Dhrystones per Second:                      8938566VAX  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 packages2  tools packages  --->3      [*] COREMARK : a benchmark that measures the performance of MCUs and CPUs.

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

1msh> core_mark

就可以看到跑分结果了,例如:STM32F103RC (72MHZ) ARMCC -O3 -Otime 跑分 135:

 1 \ | / 2- RT -     Thread Operating System 3 / | \     4.0.2 build Oct 13 2019 4 2006 - 2019 Copyright by rt-thread team 5msh > 6msh >core_mark 7Benchmark started, please make sure it runs for at least 10s. 8 92K performance run parameters for coremark.10CoreMark Size    : 66611Total ticks      : 1777612Total time (secs): 17.77600013Iterations/Sec   : 135.01350114Iterations       : 240015Compiler version : Please put compiler version here (e.g. gcc 4.1)16Compiler flags   :17Memory location  : STACK18seedcrc          : 0xe9f519[0]crclist       : 0xe71420[0]crcmatrix     : 0x1fd721[0]crcstate      : 0x8e3a22[0]crcfinal      : 0x382f23Correct operation validated. See README.md for run and reporting rules.24CoreMark 1.0 : 135.013501 / Please put compiler version here (e.g. gcc 4.1)  / STACK25

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

 1 \ | / 2- RT -     Thread Operating System 3 / | \     4.0.2 build Oct 13 2019 4 2006 - 2019 Copyright by rt-thread team 5msh > 6msh >core_mark 7Benchmark started, please make sure it runs for at least 10s. 8 92K performance run parameters for coremark.10CoreMark Size    : 66611Total ticks      : 117812Total time (secs): 1113Iterations/Sec   : 32714Iterations       : 360015Compiler version : GCC8.2.016Compiler flags   :17Memory location  : STACK18seedcrc          : 0xe9f519[0]crclist       : 0xe71420[0]crcmatrix     : 0x1fd721[0]crcstate      : 0x8e3a22[0]crcfinal      : 0x4bfc23Correct operation validated. See README.md for run and reporting rules.24CoreMark 1.0 : 327 / GCC8.2.0  / STACK25

最终得分当然是越高越好了,为了得到有效的测试结果,需要确保测试运行 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,编译器的优化选项对测试结果影响都是比较大的,如果你的测试结果与官网的结果略有不同,可以看看是不是自己没有打开编译器的优化选项。

1.2019年RT-Thread开发者大会来袭,参与赢四重好礼

2.来自BAT大牛总结的常用设计模式汇总~

3.NXP全能型MCU主打通用嵌入式和工业物联网市场,你用得上吗?

4.关于8位MCU产品的十大误解

5.物联网的两大焦虑,Qorvo打包来解决!

6.GitHub启动代码永久保存计划,至少一千年!

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

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

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

    原标题:RT-Thread软件包可以对MCU进行性能测试,跑一个试试! 在 ST 官网上查看 MCU 的介绍时,经常会看到下面的数据,例如STM32F103的介绍: 上面的 1.25 DMIPS/MH ...

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

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

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

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

  4. securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐

    想要直观的了解自己电脑状况,那么一款好用的电脑跑分软件无疑是必不可少的,毕竟他能够将测试结果用跑分的形式计算出来.那么,电脑跑分软件哪个比较好呢?下面是小编分享的好用的电脑跑分软件推荐,游戏玩家们可不 ...

  5. alphac测试和bata测试区别_康一康!接口测试与性能测试的区别瞧过来~

    点击上方蓝字  关注我们前言 最近我在一个论坛上看到了一个关于性能测试和接口测试的经典问题,问题如下: 问题:后端性能测试,一个功能其实都是由后台多个接口组成的. 例如一个单据的保存,可能后台需要调用 ...

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

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

  7. Tesin移动App测试突破1000万次,成为行业领跑者

    Testin移动App测试突破1000万次,成为行业领跑者 Android的碎片化一直都是开发者的噩梦,因此催生了对移动应用测试专业外包服务的需求.2011年11月,Testin在全球率先推出了移动A ...

  8. 中国人身材测试小软件编码,测试 || 我怀疑你是假中国人,不信你来试试

    原标题:测试 || 我怀疑你是假中国人,不信你来试试 中国人都不认识的汉字,你认识几个? 常说"我是中国人,不会学外文",借此来嘲笑那些学英语很努力的同学.哈哈,咱们是中国人,学就 ...

  9. 性能测试跑分软件,专业测试软件 性能跑分有多强

    专业测试软件 性能跑分有多强 专业测试软件 性能跑分有多强 酷比魔方双核太阳花硬件配置的详细了解,我们还是需要通过专业的测试软件来检测一下.笔者此次依然采用Quadrant Advanced.安兔兔评 ...

最新文章

  1. react hooks使用_为什么要使用React Hooks?
  2. 对抗性攻击的原理简介
  3. 【临实战】使用 Python 处理 Nginx 日志
  4. Ant Design Pro开发后台管理系统(新增页面)
  5. Virtools 3D行为编程系列(一)
  6. C#中调用API函数RegisterHotKey注册多个系统热键
  7. 【DP】错排问题(ybtoj DP-1-1)
  8. docker jenkins
  9. 力扣93. 复原 IP 地址(JavaScript)
  10. 安装CentOS的注意事项
  11. 大学生医保的报销范围
  12. 【数据结构】DFS 代码模板
  13. 模板文件不存在,无法解析文档!的终极解决方案
  14. Python 3.8.7安装教程
  15. kettle软件的使用
  16. BIN、HEX,ELF,AXF文件的区别
  17. Python -- 创建数字列表
  18. python的 e是什么意思_python中的e是什么意思
  19. SIM800C实验记录之通过GPRS上网
  20. Bzoj 2563: 阿狸和桃子的游戏 题解

热门文章

  1. 不用比较运算符及循环控制语句,判断int型的a、b两数的大小
  2. N-Gram的数据结构
  3. intValue()的用法
  4. excel 插入图片 NPOI
  5. 基于py3和pymysql的数据库查询,查询某几列的数据
  6. HDU-5123-who is the best?
  7. 【转帖】漫话C++0x(四) —- function, bind和lambda
  8. 跟燕十八学习PHP-第十五天-php增删改查表数据
  9. 如果爱情不会让人受伤
  10. AIR 中 File 对象的几个系统文件夹及其属性.