作为在嵌入式设备开发中被枚举性能坑过的老开发,当年因为枚举设计不合理导致智能门锁卡顿,后来总结出这套优化方案。现在分享给大家,让枚举性能不再拖项目后腿。
一、枚举内存布局的「断舍离」法则
1. 无参枚举:内存节省的「主力军」
无参枚举每个实例仅占1字节,就像工具箱里的标签:
enum DeviceState { | Idle | Working | Error } // 仅1字节
- 编译器自动分配索引(Idle=0,Working=1,Error=2)
-
- 1000个设备状态仅需1KB内存,比类实例节省90%空间
2. 有参枚举:按需「量体裁衣」
有参枚举内存取决于最大参数类型,遵循「就大原则」:
enum SensorData {
| Temp(Float) // 4字节
| Humidity(UInt8) // 1字节 → 实际占4字节(对齐)
}
```
**优化技巧**:
- 用`UInt8`替代`UInt32`存储状态码
- - 拆分为无参+有参构造器减少冗余:
- ```cj
- enum Cmd { | On | Off | SetLevel(UInt8) }
- ```
## 二、模式匹配的「效率密码」
### 1. 匹配顺序:高频优先的「快速通道」
把常用状态放前面,就像把常用工具放工具箱顶层:
```cj
enum NetworkEvent {
| DataReceived | Ti

最低0.47元/天 解锁文章
2030

被折叠的 条评论
为什么被折叠?



