shaoziyang 发表于 2016-12-15 22:53:46

【F769IDISCOVERY评测】MicroPython测试二

为了测试MicroPython在STM32F769DISC(STM32官网)上的运行性能,同时也是为了和STM32F746DISC进行对比,做了圆周率计算测试。这也可以作为另外一种跑分测试。

在STM32F769DISC和STM32F746DISC上,分别计算1000、2000、5000和10000位圆周率,然后比较运行时间

圆周率测试代码
"""
文件:pi.py
说明:用MicroPython计算任意精度圆周率计算
作者:未知
版本:
时间:
修改:邵子扬
      2016.5
      v1.1
http://bbs.micro-python.com/forum.php
"""
import time

def pi(places=10):
# 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
# The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
# The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
extra = 8
one = 10 ** (places+extra)
t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24

while t > 1:
    n, na, d, da = n+na, na+8, d+da, da+32
    t = t * n // d
    c += t
return c // (10 ** extra)

def pi_t(n=10):
    t1=time.ticks_us()
    t=pi(n)
    t2=time.ticks_us()
    print('elapsed: ', time.ticks_diff(t2,t1)/1000000, 's')
    return t
运行结果
[*]STM32F769DISC
>>> t=pi_t(1000)
elapsed:0.161505 s
>>> t=pi_t(2000)
elapsed:0.586691 s
>>> t=pi_t(5000)
elapsed:4.422982 s
>>> t=pi_t(10000)
elapsed:17.58597 s


[*]STM32F746DISC
>>> t=pi.pi_t(1000)
elapsed:0.174935 s
>>> t=pi.pi_t(2000)
elapsed:0.639885 s
>>> t=pi.pi_t(5000)
elapsed:4.934112 s
>>> t=pi.pi_t(10000)
elapsed:17.42959 s

可以看出,STM32F769DISC在计算1000、2000、5000位时,都比STM32F746DISC快一些,而在计算10000位时,时间差不多。

jackten 发表于 2016-12-16 00:14:00

两块都是强大的板子                     

zero99 发表于 2016-12-16 08:22:18

不错的方法

zengyi703-16313 发表于 2016-12-16 08:56:07

谢楼主分享

霹雳之火 发表于 2016-12-16 09:04:22

拜读了:P:P

anobodykey 发表于 2016-12-16 10:01:13

感谢楼主分享

leo121_3006061 发表于 2016-12-16 12:49:52

谢谢分享
页: [1]
查看完整版本: 【F769IDISCOVERY评测】MicroPython测试二