内存篇之程序内存消耗评价指标

    嵌入式软件除CPU占用率或者说运行速度外,内存方面还有三大量化评价标准,即ROM size, Peak memory occupation和 max stack depth,虽然不属于什么官方标准,但这三点的确综合反映了程序内存占用方面的整体指标。

    rom size既不是指exe文件大小,也不是lib文件大小,而是目标文件中有效二进制段大小。exe和lib文件中都有一些辅助段,如文件头/加载信息/符 表等,这些段在最终进驻系统RAM的过程中一般会被剔除。因此统计模块的ROM size大小要用二进制工具(如gcc中的ar或objdump等toolchain)分析,累加“代码段”+“数据段”等有效的内存占用段,得到最终结果。

ROM size与编译器及其编译选项有一定相关性,同样的代码由不同的编译器编译,最终获得的纯粹二进制代码大小会有一定差别。如C优化篇提到空间换时间的循环展开就是增大ROM size换取速度的提高。

    peak memory occupation是指模块内不断malloc 与free的过程中,动态堆内存消耗的最高点,这个指标代表了模块对内存的需求。注意这是一个动态过程,并不是将代码中所有malloc的内存大小相加的值,可对照理解内存泄漏中的隐式泄漏。

  内存篇之程序内存消耗评价指标

 PC移植到嵌入式系统时要特别注意这个指标,往往要消除一些函数内部局部大数组来降低栈深度,满足嵌入式平台的要求。可参见栈溢出。

这几个评价标准在不同应用中各自有不同侧重点,要根据硬件平台特性综合考量。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年2月5日
下一篇 2014年2月7日

相关推荐