micropython性能低下_【MicroPython】计算性能测试

【MicroPython】计算性能测试

[复制链接]

一直有网友担心,MicroPython运行是否足够快,性能够不够用。所以我做了一个小测试,用python计算阶乘,看看速度到底会有多快,是否可以达到大家的期望值。

我们先编写一小段测试程序,这段代码先计算阶乘,然后计算总的耗时。测试程序如下:

import time

def 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复制代码

我们先在小钢炮开发板上进行测试,它使用了STM32F401RE,最高主频84MHz,SRAM是64KB。

MicroPython v1.7 on 2016-04-17; CANNON with STM32F401xE

Type "help()" for more information.

>>> import fact_t

>>> n=fact_t.fact(100)

elapsed: 2534 us

>>> n=fact_t.fact(1000)

elapsed: 174353 us

>>> n=fact_t.fact(5000)

elapsed: 4223822 us

>>> n=fact_t.fact(10000)

Traceback (most recent call last):

File "", line 1, in File "fact_t.py", line 7, in fact

MemoryError: memory allocation failed, allocating 6498 bytes

计算速度还不错,计算5000阶乘也只用了4.2秒。在计算10000的阶乘时因为SRAM不足而出错。因为python支持大数计算,所以计算的位数只受SRAM大小的限制。在进行大数计算的时候,数字范围远远超出了一般数据的范围,因此比较容易测试计算性能。

在换用PYBOARD进行测试,PYBOARD使用了STM32F405RG,它的最高主频是168MHz,SRAM达到192KB。运行同样的测试,结果如下:

MicroPython v1.7 on 2016-04-17; PYBv1.0 with STM32F405RG

Type "help()" for more information.

>>> import fact_t

>>> n=fact_t.fact(100)

elapsed: 1417 us

>>> n=fact_t.fact(1000)

elapsed: 108004 us

>>> n=fact_t.fact(5000)

elapsed: 2333655 us

>>> n=fact_t.fact(10000)

elapsed: 9839525 us

>>> n=fact_t.fact(20000)

Traceback (most recent call last):

File "", line 1, in

File "fact_t.py", line 7, in fact

MemoryError: memory allocation failed, allocating 16210 bytes

得益于更高的主频和大SRAM,计算用时缩短了接近一半,计算直到20000时才内存不足。最后在试试性能更好的STM32F746DISC,它使用了STM32F746NGH6,主频达到216MHz,SRAM有320KB。

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 "", line 1, in File "fact_t.py", line 7, in fact

MemoryError: memory allocation failed, allocating 49620 bytes

从上面的测试中,我们可以看出python的运行效率还是不错的,计算速度足以满足普通的应用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值