MicroPython核心:优化

MicroPython使用多种优化方法来节省RAM,同时确保程序的高效执行,本文会讨论其中的一些优化。

提示:

MicroPython 字符串驻留(string interning)映射和字典(Maps and Dictionaries) 详细介绍了对字符串和字典的其他优化。

冻结字节码

MicroPython从文件系统加载Python代码时,首先将文件解析为临时的内存表示形式,然后生成字节码供执行,这两个过程都存储在堆(RAM)中。这会导致大量内存被占用。MicroPython交叉编译器可用于生成一个.mpy 文件,其中包含Python模块的预编译字节码,虽然该文件仍将被加载到RAM中,但避免了解析阶段的额外开销。

作为进一步优化.mby文件中的预编译字节码可以 "冻结 "到固件映像文件中,作为主固件编译过程的一部分,这意味着字节码将从 ROM 中执行。这将大大节省内存,并减少堆碎片。

更多信息,可参阅 MicroPython的Manifest文件介绍

变量

MicroPython 对局部变量和全局变量的处理方式不同。全局变量存储在堆上的全局字典中(注意,每个模块都有自己独立的字典,因此是独立的命名空间)。而局部变量则存储在 Python 的值栈中,它可能存在于C堆栈中,也可能存在于堆中。通过 Python栈中的偏移量可以直接访问它们,这比在字典中进行全局查找更有效。

因为标识符存储在RAM中,所以全局变量名的长度也会影响RAM的使用量,标识符越短

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值