文档

优化工具和技术

使用模型顾问优化模型以生成代码

您可以使用模型顾问分析代码生成的模型,并确定模型的各个方面,妨碍了生产部署或限制代码效率。您可以从一组检查中选择要在模型的当前配置上运行。模型顾问分析模型并生成检查结果,为每个区域的改进提供建议。大多数模型顾问诊断不要求模型处于编译状态;那些确实被指出的人。

在运行Model Advisor之前,选择您计划用于代码生成的目标。Model Advisor最有效地使用ERT和基于ERT的系统目标文件。

使用以下示例来研究使用Model Advisor进行代码生成的优化模型:

请注意

示例模型rtwdemo_advisor2rtwdemo_advisor3要求eventsflow.®和固定点设计器™软件。

有关使用Model Advisor的更多信息,请参见运行模型Advisor检查(金宝app模型)。有关检查的更多信息,请参见金宝app仿真软件编码器检查(金宝app仿真软件编码器)。

优化状态流对象生成代码的设计技巧

不能在图形函数中访问机器父数据

此限制可防止长参数列表出现在图形功能生成的代码中。您可以访问与图形功能相同图表中的本地数据。有关更多信息,请参见通过定义图形函数重用逻辑模式(州流)。

是显式关于图形功能的内联选项

在状态溢图中使用图形函数时,请选择内联或者功能对于物业功能内联选项.否则,为图形函数生成的代码可能不会按您希望的方式显示。有关更多信息,请参见指定图形功能属性(州流)。

避免在状态流图中使用多个边缘触发事件

如果使用多个触发器,则生成多个代码语句以处理上升或下降沿检测。如果需要多个触发器,请使用函数调用事件。有关更多信息,请参见通过发送输入事件来激活状态流图(州流)。

将图表的输入信号结合到单个总线对象中

当您使用总线对象时,您减少了生成函数的参数列表中的参数数量。这条原则也适用于图表的输出信号。有关更多信息,请参见定义Stateflow结构(州流)。

使用具有离散示例时间的图表

为不在触发或启用的子系统内部的离散图表生成的代码使用整数计数器来跟踪时间而不是Simulink金宝app®提供时间。这样就可以在开销和内存方面更有效地生成代码,并使这些代码能够用于在循环中的软件(SIL)和在循环中的处理器(PIL)模拟。

额外的优化技术

您可以应用以下技术来优化代码生成模型:

  • 对于嵌入式编码器®用户,如果您的应用程序仅使用整数算术,请清除金宝app支持浮点数参数软件环境部分的接口窗格,以便生成的代码不包含浮点数数据或操作。清除此参数后,如果在代码生成期间遇到非整数数据或表达式,将引发错误。错误消息将报告违规的块和参数。

  • 禁用配置参数>代码生成>接口>高级参数>MAT-file日志范围。取消选择此参数消除了初始化,更新和清理日志记录变量的额外代码和内存使用情况。此外,生成的代码是否支持MAT文件记录调用金宝appMalloc.,这对您的申请可能是不可取的。

  • 使用Upgrade Advisor升级旧模型(由以前的版本或当前版本保存)以使用当前特性。有关详细信息,请参见模型升级(金宝app模型)。

  • 在构建之前,为编译器设置优化标志(例如,- 02海湾合作委员会为了微软®Visual C ++®编译器)。

  • 通过为S函数写入TLC文件,将C / C ++ S-函数直接内联C / C ++ S函数。有关更多信息,请参见利用s -函数目标加速仿真、重用代码或保护知识产权(金宝appSimulink Coder)看内联C MEX s -函数(金宝app仿真软件编码器)。

  • 使用其他的S金宝appimulink数据类型如果可能。可用数据类型是布尔,有符号和无符号8-,16-和32位整数,以及32-和64-浮点数(a是64位的浮点数)。有关更多信息,请参见关于Simulink中的数据类型金宝app(金宝app模型)。有关逐块摘要,请单击showblockdatatypetable.或在命令窗口中键入命令。

  • 对于在生成的代码中的可调块参数中,可以在生成的代码中存储在内存中,可以使用信号数据类型匹配参数数据类型,以消除不必要的键盘和C移位。在可能的情况下,在小整数数据类型中存储参数值。看生成代码中的参数数据类型

  • 删除查找表数据中的重复值。

  • 使用Merge块尽可能地合并信号的输出。当您需要使用状态流图控制函数调用子系统的执行时,此块特别有用。下面的模型展示了如何使用Merge块的示例。

    当连接到合并块的多个信号有一个非汽车存储类,所有非汽车连接到该块的信号必须相同标记有相同的存储类.当合并块直接连接到另一个时,这些规则适用于连接到组中任何合并块的信号。

相关话题