如何评估一个功能库的资源消耗(代码,内存和CPU)
Overview
提供评估一个功能/库的资源消耗的方法,并给出示例演示。
应用示例
-配置
在
app_config.h
中开启宏RTOS_STACK_CHECK_ENABLE
-示例演示
参考 添加自己的封装库示例说明 引入lib_demo静态库来进行测试
在lib_demo工程中定义:
一个全局的初始化数组(test_data_array);
一个全局未初始化数组(test_bss_array);
一个全局const数组(test_const_array);
在cache_ram上申请一个数组(test_cache_array);
使用 malloc()申请一段堆空间;
创建一个线程(test_task)。
最后使用串口打印查看链接库前后的代码、内存占用和CPU使用情况。
链接之后
若要查看链接之前的资源消耗,需要先进行以下操作:1、在主工程的属性中将链接库的.a文件去掉;2、在调用链接库函数处将所调用的库函数编成空函数;比如:
最后打印去掉链接库时的资源消耗:
由此可得该链接库的资源消耗:
ram_data 段前后大小相差:4096字节(刚好是sizeof(test_data_array));
ram_bss 段前后大小相差:4096字节(刚好是sizeof(test_bss_array));
const+code 段前后大小相差:4544字节;
cache_ram 段前后大小相差:4096字节(刚好是sizeof(test_cache_array));
由于本节示例工程未开启使用sdram,因此sdram 段前后大小不变;
引入test_task线程的CPU占用率为42%(是指当前系统时钟单核的cpu占用率,双核最大占用率是200%);