代码探查分析器
R2026b描述
使用代码探查分析器分析由生成代码的软件在环 (SIL) 或处理器在环 (PIL) 执行产生的执行时间和栈使用探查:
查看任务和函数的执行时间,可视化在特定仿真时间的函数调用栈,并比较不同运行的执行时间。
查看任务和函数的栈使用,并比较不同运行的值。
如果您使用的是 Embedded Coder®,您也可以:
分析基于 XCP 的外部模式仿真产生的执行时间探查。
为模型层次结构配置代码探查。
识别和分析生成代码中的性能热点。此工作流使用
coder.profile.test.runTests函数。识别和分析生成代码中的关键路径。此工作流使用
coder.profile.test.analyzePath函数。
打开 代码探查分析器 App
如果您从 Simulink® 模型生成代码,请点击 SIL/PIL 选项卡。在结果库中的执行探查结果或栈探查结果下,点击代码探查分析器按钮。
如果您从 MATLAB® 代码生成代码,请在命令行窗口中终止 SIL/PIL 执行。代码生成器在命令行窗口中生成一条消息,其中包含指向执行或栈探查报告的链接。请点击该链接。
或者,对于 Simulink 和 MATLAB 两种工作流,在 SIL/PIL 执行终止后,通过在命令行窗口中输入 coder.profile.show 或 coder.profile.show( 打开代码探查分析器。 profileVariable)
对于 Simulink 工作流, 是工作区变量(profileVariablecoder.profile.ExecutionTime 或 coder.profile.ExecutionStack 对象),您通过工作区变量 (CodeExecutionProfileVariable) 或栈工作区变量 (CodeStackProfileVariable) 配置参数指定该工作区变量。
对于 MATLAB 工作流,通过使用 getCoderExecutionProfile 或 getCoderStackProfile 函数获取 。profileVariable
如果 App 已打开,您可以使用常规选项卡通过选择包含执行时间或栈使用测量值的工作区变量来导入单个仿真结果。
您无法使用常规选项卡导入多个仿真的聚合结果。在这种情况下,请改用命令 coder.profile.show(,其中 profileAggregate)profileAggregate 是 coder.profile.ExecutionTimeSet 或 coder.profile.ExecutionStackSet 对象。
代码探查分析器工作流
您导入的仿真结果的类型确定该 App 显示的选项卡以及您可以执行的工作流。
当您使用 coder.profile.ExecutionTime 对象导入结果时,时间探查选项卡显示如下表所述的选项卡。
| 选项卡 | 用途 |
|---|---|
| 任务执行 | 显示任务的执行时间度量。对于每个任务,检查执行时间(即最小、平均和最大执行时间)以及对应的 CPU 利用率,这使您能够确定总体上任务是否可以在目标硬件上运行而不会出现执行时间问题。 |
| 函数执行 | 显示生成代码函数的执行时间度量,以识别热点并确定需要返工的函数。 |
| 函数调用栈 | 显示特定仿真时间的函数调用栈。如果您发现某个任务花费的时间超过预期,您可以显示它在每个执行实例的函数调用步。此功能可帮助您识别性能瓶颈。 |
| 比较 | 比较两次仿真的执行时间度量,以识别性能下降。 |
| 任务验证 | 执行 CPU 可行性分析,以正式确定任务集是否可以运行而不会出现执行时间问题。分析任务到 CPU 映射的效果。 |
| CPU 使用情况 | 对于每个任务,显示在可用 CPU 上的执行时间。此功能显示任务如何在系统上分配以及帮助您改进负载平衡。 仅在以下条件适用时可用:
|
当您使用 coder.profile.ExecutionTimeSet 对象导入结果时,时间探查选项卡显示如下表所述的选项卡。
| 选项卡 | 用途 |
|---|---|
| 累积结果 | 显示来自不同测试的任务执行时间度量。如果您运行一组测试用例,对于每个任务,您可以识别最长执行时间和平均执行时间。然后,您可以识别产生最严苛执行的测试用例。 |
| 火焰图 | 显示最长任务执行的火焰图。此视图可帮助您了解任务执行实例期间发生的情况,使您能够识别性能瓶颈。 |
| 比较 | 比较两次仿真的执行时间度量,以识别性能下降。 |
| 任务验证 | 执行 CPU 可行性分析,以正式确定任务集是否可以运行而不会出现执行时间问题。分析任务到 CPU 映射的效果。 |
当您使用 coder.profile.ExecutionStack 对象导入结果时,内存探查选项卡显示如下表所述的选项卡。
| 选项卡 | 用途 |
|---|---|
| 栈内存 | 显示任务和函数的栈使用度量。对于每个任务,查看栈内存使用量的最小值、平均值和最大值的摘要。在任务内,查看每个执行的函数需要多少内存。 |
| 函数调用栈 | 显示特定仿真时间的函数调用栈。如果您观察到某个任务的内存分配高于预期,您可以显示它的每个执行实例的函数调用栈。此功能可帮助您识别性能瓶颈。 |
| 比较 | 比较两次仿真的栈使用度量,以识别性能下降。 |
当您使用 coder.profile.ExecutionStackSet 对象导入结果时,内存探查选项卡显示如下表所述的选项卡。
| 选项卡 | 用途 |
|---|---|
| 累积结果 | 显示来自不同测试的任务栈使用度量。如果您运行一组测试用例,对于每个任务,您可以识别栈使用的最大值。然后,您可以识别产生最严苛执行的测试用例。 |
| 比较 | 比较两次仿真的栈使用度量,以识别性能下降。 |
如果您的模型配置为生成性能监控单元 (PMU) 度量,则当您导入结果时,代码探查选项卡显示如下表所述的选项卡。
| 选项卡 | 用途 |
|---|---|
| 函数执行 | 显示生成代码函数的 PMU 度量,以识别热点并确定需要返工的函数。 |
| 比较 | 比较两次仿真的 PMU 度量,以识别性能下降。 |
无论您是否导入数据,您都可以使用代码探查分析器在模型层次结构中配置代码探查。请参阅Configure Execution-Time Profiling in Model Hierarchy Using Code Profile Analyzer和Configure Stack Usage Profiling in Model Hierarchy Using Code Profile Analyzer。
示例
相关示例
版本历史记录
在 R2023a 中推出
