如何评估一个功能库的资源消耗(代码,内存和CPU)

Overview

提供评估一个功能/库的资源消耗的方法,并给出示例演示。

应用示例

-配置

  1. app_config.h 中开启宏 RTOS_STACK_CHECK_ENABLE

-示例演示

  1. 参考 添加自己的封装库示例说明 引入lib_demo静态库来进行测试

  2. 在lib_demo工程中定义:

    • 一个全局的初始化数组(test_data_array);

    • 一个全局未初始化数组(test_bss_array);

    • 一个全局const数组(test_const_array);

    • 在cache_ram上申请一个数组(test_cache_array);

    • 使用 malloc()申请一段堆空间;

    • 创建一个线程(test_task)。

  3. 最后使用串口打印查看链接库前后的代码、内存占用和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%);