为了测试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
复制代码
运行结果>>> 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
>>> 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位时,时间差不多。
|