在嵌入式系统中优化

在嵌入式系统中优化

小型嵌入式应用程序中使用的微控制器比标准PC拥有的资源要少很多,时钟频率低100倍甚至1000倍,RAM内存数量甚至少1百万倍,因此在此类系统上应该避免使用大型图形框架、解释器等等

解释性语言在嵌入式系统上会产生极大浪费,因此首选C/C++, 关键驱动程序可能需要汇编语言

通过以下原则,C++只需要比C多一点点的资源

  1. 大数组应该在函数中声明,便于函数返回时释放,或者是将相同的数组重用
  2. 避免所有的new / delete 或 malloc / free的动态内存分配,因为管理内存堆的开销很大,特别是垃圾收集器,可能会以不可预测的间隔消耗时间,干扰实际应用
  3. STL使用new和delete来动态内存,且常常过多的使用动态内存分配,因此我们可以通过静态数组模拟,比如栈、队列等
  4. 字符串string的常用实现都使用动态内存分配,应该避免使用而使用老式的C风格字符数组(不会检查溢出,应该保证数组足够大or必要时进行溢出检查)
  5. 虚函数比非虚函数占用更多资源,应该避免
  6. 小微处理器中没有本地浮点执行单元,所以应该避免使用任何浮点表达式(可以通过将浮点乘一个100,or 1000当成整数处理)
  7. 在不会溢出的情况下使用小整数类型

另外,小微处理器可能

  1. 没有分支预测,因此不需要考虑分支预测惩罚
  2. 没有缓存,因此不需要组织数据来优化缓存
  3. 没有无序执行,因此不需要打破依赖链。