在嵌入式系统中优化
在嵌入式系统中优化
小型嵌入式应用程序中使用的微控制器比标准PC拥有的资源要少很多,时钟频率低100倍甚至1000倍,RAM内存数量甚至少1百万倍,因此在此类系统上应该避免使用大型图形框架、解释器等等
解释性语言在嵌入式系统上会产生极大浪费,因此首选C/C++, 关键驱动程序可能需要汇编语言
通过以下原则,C++只需要比C多一点点的资源
- 大数组应该在函数中声明,便于函数返回时释放,或者是将相同的数组重用
- 避免所有的new / delete 或 malloc / free的动态内存分配,因为管理内存堆的开销很大,特别是垃圾收集器,可能会以不可预测的间隔消耗时间,干扰实际应用
- STL使用new和delete来动态内存,且常常过多的使用动态内存分配,因此我们可以通过静态数组模拟,比如栈、队列等
- 字符串
string
的常用实现都使用动态内存分配,应该避免使用而使用老式的C风格字符数组(不会检查溢出,应该保证数组足够大or必要时进行溢出检查) - 虚函数比非虚函数占用更多资源,应该避免
- 小微处理器中没有本地浮点执行单元,所以应该避免使用任何浮点表达式(可以通过将浮点乘一个100,or 1000当成整数处理)
- 在不会溢出的情况下使用小整数类型
另外,小微处理器可能
- 没有分支预测,因此不需要考虑分支预测惩罚
- 没有缓存,因此不需要组织数据来优化缓存
- 没有无序执行,因此不需要打破依赖链。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!