Main Content

评估生成的代码的性能

了解生成的代码和 RAM/ROM 数据的特性如何影响 RAM/ROM 指标。

有关本系列中示例模型和其他示例的信息,请参阅 为 C 代码生成准备控制算法模型

代码评估

您可以基于以下两个主要指标来评估生成的代码:执行速度内存使用情况。在某些情况下,改进某个指标意味着牺牲另一个指标。例如,您可以通过消耗更多内存来获得更快的执行速度。

内存可进一步分类为 ROM(只读内存)和 RAM(随机存取内存)。

  • 从 RAM 访问数据比从 ROM 访问数据更快。

  • 可执行文件和数据必须存储在 ROM 中,因为 RAM 不会在电源重启后保留数据。

此示例评估内存要求,并将内存使用情况分为函数部分和数据部分。该示例不评估执行速度。

编译器信息

此评估使用 Freescale™ CodeWarrior® 编译器。

  • 编译器:Freescale™ CodeWarrior®

  • 版本:5.5.1.1430

  • 目标处理器:Power PC 565

查看代码指标

在 Simulink 环境之外编译集成的代码测试生成的代码 中所述,生成的代码可能需要使用工具函数。工具函数会一次性消耗固定的内存成本。由于存在这种固定开销,此示例中的数据显示以下方面的内存使用情况:

  • 算法:从 Simulink® 模块图生成的 C 代码加上数据定义函数

  • 实用工具:作为 Simulink® Coder™ 库源的一部分的函数

  • 完整:算法和实用工具的总和

编译选项配置

此示例中的三次评估使用相同的编译配置。Freescale™ CodeWarrior® 配置为使用最少的内存并应用所有适用的优化。

配置 1:使用双精度数据类型的可重用函数

  • Source filesPCG_Eval_File_1.zip

  • Data Type:全部为双精度

  • Included Data:工程包含编译所需的所有数据(包括声明为 extern 的数据:pos_rqstfbk_1fbk_2

  • Main Function:来自 在 Simulink 环境之外编译集成的代码example_main 的修改版本

  • Function Call Method:适用于 PI 控制器的可重用函数

Memory Usage

            Function    Data
Algorithms  1172 bytes  549 bytes
Utilities   592 bytes   40 bytes
Full        1764 bytes  589 bytes

配置 2:使用单精度数据类型的可重用函数

在此配置中,模型数据使用单精度浮点数据类型而不是双精度。

模型配置

  • Source filesPCG_Eval_File_2.zip

  • Data Type:全部为单精度

  • Included Data:工程包含编译所需的所有数据(包括声明为 extern 的数据:pos_rqstfbk_1fbk_2

  • Main Function:来自 在 Simulink 环境之外编译集成的代码example_main 的修改版本

  • Function Call Method:适用于 PI 控制器的可重用函数

Memory Usage

            Function    Data
Algorithms  800 bytes   308 bytes
Utilities   592 bytes   40 bytes
Full        1392 bytes  348 bytes

此配置的数据内存使用量仅为第一种配置的 56%:308 字节,而第一种配置使用了 549 字节。另外,此配置的函数内存使用量为第一种配置的 68%:800 字节,而第一种配置使用了 1172 字节。对于此系统,使用单精度而非双精度不会影响控制算法的精度,因此可以使用此配置来实现更高效的代码。

配置 3:使用单精度数据类型的不可重用函数

  • Source files:PCG_Eval_File_3.zip

  • Data Type:全部为单精度

  • Included Data:工程包含编译所需的所有数据(包括声明为 extern 的数据:pos_rqstfbk_1fbk_2

  • Main Function:来自 在 Simulink 环境之外编译集成的代码example_main 的修改版本

  • Function Call Method:函数接口为 void void,因此通过全局变量进行数据交换

Memory Usage

            Function    Data
Algorithms  948 bytes   348 bytes
Utilities   592 bytes   40 bytes
Full        1540 bytes  388 bytes

此配置比前一个配置消耗更多的数据内存和函数内存。

相关主题