micropython和python区别-MicroPython入坑记(三)板子上的Python到底有多快?

前几篇都是直接在命令上操作,然而执行py文件才是王道,其实类似nodemcu的lua固件,MicroPython也提供了一个简单的文件系统用来存代码。并自动在开机时执行:

boot.py

main,py

两个文件

windows用户的话,推荐一个软件:uPyLoader界面如下

760932-20180331112247035-1243767633.png

可以看到,左边是本地的文件,右边是ESP8266的文件,两边可以互相传输,也可以删除上边的文件,其他功能自行探索,这个软件自带了一个编辑器,不过很弱。

还是推荐用vim或者vscode来写代码,然后用这个软件把代码传进去。

测试代码么,先来个循环:

importtimeimportmicropythondefloop1():

t1=t2=0for i in range(5):

t1=time.ticks_us()for i in range(100):passt2=time.ticks_us()print(t2-t1)

time.sleep(2)

loop1()

默认工作在80MHZ下,结果是:

=== with open("test_loop.py") as f:

=== exec(f.read(), globals())

===

4715

4695

4742

4698

4697

>>>

脚本确实不快,100次循环足足用了4.5ms,即使把速度调成160MHZ,也就2.5ms左右也就一次循环25us左右,而ESP32下速度就很赞了:

paste mode; Ctrl-C to cancel, Ctrl-D to finish

=== with open("test_loop.py") as f:

=== exec(f.read(), globals())

===

346

262

274

267

278

>>>

10多倍的提速2us-3us循环一次,甚至可以写dht11那样的时序驱动了。esp8266就没办法了吗?当然有!

MicroPython官方文档上专门有篇代码提速的文章,其中提到了可以用装饰器micropython.native micropython.viper来给代码打鸡血(编译成机器码)

import time

import micropython

@micropython.native

def loop1():

t1=t2=0

for i in range(5):

t1=time.ticks_us()

for i in range(100):

pass

t2=time.ticks_us()

print(t2-t1)

time.sleep(2)

loop1()

加了个@micropython.native装饰器,速度立马鸡血:

paste mode; Ctrl-C to cancel, Ctrl-D to finish

=== with open("test_loop.py") as f:

=== exec(f.read(), globals())

===

326

320

320

320

320

>>>

赶上esp32了有木有?那……esp32用这个得多快?不好意思,esp32这功能还没弄好,哈哈

另一个装饰器的例子:

import time

import micropython

@micropython.viper

def loop1():

t1=0

t2=0

for i in range(5):

t1=int(time.ticks_us())

for i in range(100):

pass

t2=int(time.ticks_us())

print(t2-t1)

time.sleep(2)

loop1()

结果:

paste mode; Ctrl-C to cancel, Ctrl-D to finish

=== with open("test_loop.py") as f:

=== exec(f.read(), globals())

===

51

51

50

51

51

>>>

这就更碉堡了,又提升了6倍,都快接近100倍了,虽然需要改一点点代码才能过,继续期待esp32的这功能吧

另外还有个插入汇编的功能,就不试了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值