首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用MicroPython在STM32F7DISC上做阶乘计算

用MicroPython在STM32F7DISC上做阶乘计算

一直有网友担心,MicroPython运行是否足够快,性能够不够用。所以我做了一个小测试,用python计算阶乘,看看速度到底会有多快。
我们先编写一小段测试程序,这段代码先计算阶乘,然后计算总的耗时。测试程序如下:
import timedef fact(n):                r=1              t1=time.ticks_us()                        while n>1:                         r=r*n                        n=n-1                    t2=time.ticks_us()                             print('elapsed: ', time.ticks_diff(t1,t2), 'us')                                        return r
运行后,计算不同的数值,得到结果如下:
MicroPython v1.8 on 2016-05-15; F7DISC with STM32F746                           
Type "help()" for more information.
>>> import fact_t
>>> n=fact_t.fact(100)
elapsed:  979 us
>>> n=fact_t.fact(1000)
elapsed:  45384 us
>>> n=fact_t.fact(5000)
elapsed:  1174590 us
>>> n=fact_t.fact(10000)
elapsed:  4386010 us
>>> n=fact_t.fact(20000)
elapsed:  18040829 us
>>> n=fact_t.fact(25000)
elapsed:  33982479 us
>>> n=fact_t.fact(30000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "fact_t.py", line 7, in fact
MemoryError: memory allocation failed, allocating 49620 bytes
计算1oo的阶乘不到1000us,1000的阶乘需要45ms,10000的阶乘需要4.3S,直到计算30000的阶乘才因为内存不足出错。看起来还是可以接受的。
返回列表