电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
树莓派3B和4B的SoC性能比较(三)
分 享
扫描二维码分享
树莓派3B和4B的SoC性能比较(三)
多语言开发
mcu比较
9604a3b72d92b876
关注
发布时间: 2020-06-22
丨
阅读: 1126
我玩树莓派主要是用来开发和各语言学习,为了更直观的比较树莓派3B和树莓派4B性能差异,通过运行代码,比较运行同一代码所花的时间,很显然花更少时间的硬件较好。一般来说,在树莓派上最常使用的开发语言一般有C、python和Java,以及在网页上经常会用到的php功能。我用这些语言各写一段同样功能的代码,分别在两块板上各自运行,比较运行时间的差异。 代码功能:计算π(圆周率)值。 方案1:将一个正方形分为k*k个小方块,统计落在正方形的内切圆内的小方块个数占所有方块的比例,其4倍即为π值。考虑到图像的对称性,我们仅计算第一象限的情况,取n=k/2=100000000。 各源代码分别如下: 其中c和java文件需编译后执行(编译命令为gcc grid_pi.c -lm、javac grid_pi.java),php和python文件可以直接通过命令解释执行,go语言有解释和编译两种方式(go run grid_pi.go和go build grid_pi.go)。 方案2:采用公式PI/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...计算π值。兼顾速率和精度,我们取值n=100000000,i从1到n,a=a*i/(i*2+1),逐次加上a,结果乘以2之后可以得到π值。 方案3:利用PI的积分公式 ![](https://cf03.ickimg.com/bbsimages/202006/17cee3135c72915bd64a81d9e932ae2e.png) 将[0,1)分成n等分,分别通过近似计算每一等分的数值,再进行相加,取n=100000000。 方案4:在[-1,1]的范围内随机撒下n个点,通过这些点是否在单位圆内,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,内切于一个正方形,正方形的面积是4,圆面积是pi,其比值为M/N,故计算π值4∗M/N。考虑到图像的对称性,我们仅计算第一象限的情况,取n=100000000。 编译器和运行环境版本如下: ![](https://cf03.ickimg.com/bbsimages/202006/6c06cc9d18ad3ffcaae646a81b49e4ec.png) 在树莓派3B上运行: 方案1: ![](https://cf03.ickimg.com/bbsimages/202006/be147d4a974be0e9c8662dcee4490233.png) 方案2: ![](https://cf03.ickimg.com/bbsimages/202006/b73b645dae8ca84e27ea87651b079b02.png) 方案3: ![](https://cf03.ickimg.com/bbsimages/202006/4f8ddd3963389e4b4e0e93cd7ac36083.png) 方案4: ![](https://cf03.ickimg.com/bbsimages/202006/a494dd5c5004fb606f44a043bbef1daa.png) 在树莓派4B上运行: 方案1: ![](https://cf03.ickimg.com/bbsimages/202006/0128ffca739b8aedd0b792dece6436b7.png) 方案2: ![](https://cf03.ickimg.com/bbsimages/202006/87bf99bba35c798f3ceaf014c732e07e.png) 方案3: ![](https://cf03.ickimg.com/bbsimages/202006/4668812821ca13df144daaf171a5c1f4.png) 方案4: ![](https://cf03.ickimg.com/bbsimages/202006/ec64a4efddab64dd1a8ef74508486800.png) 实现功能代码所花时间(秒)比较: ![](https://cf03.ickimg.com/bbsimages/202006/ca8468fe3ceb5ff73f4d439449f55a68.png) 因为数据类型和代码执行的不同,不同语种之间的比较意义不大,但整体来说,解释性的语言的Python和PHP执行时间较长,而通过C或者Java编译后执行的代码运行起来要快一些。我们关注点在树莓派3B与树莓派4B执行同样代码所需要的时间,我们将两块板子运行同样代码时间相除,作为效能提升的度量值。 从上面测试结果看来,除rand_pi.java外,其它树莓派3B到树莓派4B,代码运行速度有非常大提升,除了对编译器优化以外,SoC性能提升功不可没,远远不是主频从1.2GHz到1.5GHz那么简单。对于主流应用C和python都是3倍以上,后续准备进一步研究比较这两种语言。 五、硬件读取速率 树莓派有丰富的接口可以轻松调用,但严格说起来,硬件读取和写入并不仅依靠SoC,更重要的是内部总线速率,因此我们该测试比较只做参考。 我们知道树莓派板上的电源指示灯映射为/sys/class/leds/led1/brightness,因此我们可以用命令: echo 1 | sudo tee /sys/class/leds/led1/brightness echo 0 | sudo tee /sys/class/leds/led1/brightness 控制其点亮或熄灭。 可以用命令: cat /sys/class/leds/led1/brightness 查看其状态。 我们采用脚本shell评估反复运行这几条代码的运行时间,先设置灯亮(1),读取灯的状态,再设置灯灭(0),读取灯的状态,重复n次,分别将应该灯亮的次数和应该灯灭的读取数值加起来,看看是不是n和0。这段代码运行时间-直接空转进行n次0相加和n次1相加的总和,用于评估树莓派对LED的执行效率。在越短的时间内完成上述操作,则表示板卡对硬件操作的效率越高。 分别在树莓派3B和4B上尝试n=5000次循环,每次循环包括写入和读取各两次。操作时,led灯的闪烁肉眼清晰可见,结果如下: 树莓派3B: ![](https://cf03.ickimg.com/bbsimages/202006/e38449531b86f88336e70745e108679d.png) 树莓派4B: ![](https://cf03.ickimg.com/bbsimages/202006/cfbccadc0fb9062d1c5cea53c0539b5d.png) 其所用时间比值(1.36)比主频的比值(1.25)更高,推测除了主频外,其它硬件硬件性能也是有提升的。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
9604a3b72d92b876
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交