主要内容

比较性能

当仿真执行时间超过所需的时间代码生成、加速器和快速加速器模拟模式给速度比正常模式改进。加速器和快速加速器模式通常比正常模式表现得更好当模拟执行时间几分钟或者更多。然而,与大量Stateflow模型®MATLAB函数块可能只显示一个小的速度比正常模式还因为这些块模拟通过代码生成以正常模式。

包括可调参数模型中还可以增加仿真时间。

该图显示了正常模式的相对性能,加速模式,快速加速器模式模拟为一个假设的模型一般条款。

性能目标必须重建

实线,标记所有目标过时了图中显示,当目标代码必须重建性能。对于这个假设的模型,时间尺度的分钟。然而,时间尺度可以更长更复杂的模型。

编译一个模型在正常模式一般需要较少的时间比建造加速器或快速加速器可执行目标。对小型模拟终止时间,正常模式导致更快的整体模拟相比,加速器和快速加速模式。

的交叉点加速器模式或快速加速器模式导致更快的整体模拟取决于模型的复杂性和内容。例如,模型,包含大量的代码块使用解释不可能跑得更快的加速模式比在正常模式,除非仿真停止时间是非常大的。有关更多信息,请参见为加速模式选择模块。同样,大量Stateflow图表和模型MATLAB函数块可能不会显示速度比正常模式,除非仿真停止时间。你可以加快Stateflow或模拟模型MATLAB函数通过代码生成模块。

大量的图代表一个模型或Stateflow图表MATLAB函数块。曲线标记正常的会有一个较小的初始运行时间比显示如果模型不包含这些块。

性能目标是最新的

虚线标记所有目标,图中显示时间确定加速器目标或快速加速器可执行文件是最新的显著小于所需的时间来生成代码,用实线表示,标记所有目标过时了。您可以利用这个特点当您希望测试各种设计权衡。

例如,您可以生成加速器模式目标一次,用它来模拟模型和一系列的增益设置。这个方法特别有效的加速器或快速加速器模式,因为这种类型的改变不会导致生成的目标代码。目标代码生成模型第一次运行时,但在随后的运行,软件只花必要的时间来验证目标是最新的。这个过程生成代码要快得多,所以后续运行可以显著快于最初的运行。

因为检查的目标比代码生成、快的交叉点时小目标是最新的比必须生成代码。后续运行你的模型可以模拟速度在加速器或快速加速器模式相比正常模式,即使是小的终止时间。

分析性能的模拟模式

看到的效果使用加速器或快速加速器模式模拟的模型,你可以使用不同的仿真运行等效模拟模式。模拟模型的方式返回为一个单一的结果金宝appSimulink.SimulationOutput对象,包括仿真元数据。这样,您就可以检查时间为每个模拟仿真中捕获信息的元数据来分析每个模拟模式的性能。

这个示例使用金宝appSimulink.SimulationInput对象配置模型参数值用于三个模型的模拟sldemo_fuelsys。关于模型的更多信息,请参阅一个容错燃料控制系统模型

模型=“sldemo_fuelsys”;

配置基线仿真,创建一个金宝appSimulink.SimulationInput对象。

思敏= Simu金宝applink.SimulationInput(模型);

SimulationInput在模拟中使用对象存储参数值。应用对象的参数值的模拟和恢复的仿真模型保持不变。

设置停止时间10000年。设置模拟模式正常的

思敏= setModelParameter(思敏,“StopTime”,“10000”);思敏= setModelParameter(思敏,“SimulationMode”,“正常”);

捕捉基线时间信息,模拟模型。

simOut = sim(思);

作为一个模拟返回结果金宝appSimulink.SimulationOutput对象包含所有记录数据和仿真元数据。元数据存储为金宝appSimulink.SimulationMetadata模拟对象,其中包含的信息,包括结构,TimingInfo,包含时间信息。

normalMode = simOut.SimulationMetadata.TimingInfo;

从计时信息,提取初始化时间、执行时间、总运行时间的模拟。

normalInit = normalMode.InitializationElapsedWallTime;normalExec = normalMode.ExecutionElapsedWallTime;normalTotal = normalMode.TotalElapsedWallTime;

再次使用快速加速器模式模拟模型。你第一次模拟模型在快速加速器模式下,快速加速器的目标建立在初始化阶段。

思敏= setModelParameter(思敏,“SimulationMode”,“快速”);simOut = sim(思);
# # #建筑快速加速器目标模型:sldemo_fuelsys # # #成功地建立了快速加速器目标模型:sldemo_fuelsys模型快速加速器目标建立:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = sldemo_fuelsys代码生成和编译。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米38.279秒

访问第一个快速加速器模拟的计时信息。然后,提取初始化时间、执行时间和总时间的模拟。

rapidAccel = simOut.SimulationMetadata.TimingInfo;rapidBuildInit = rapidAccel.InitializationElapsedWallTime;rapidBuildExec = rapidAccel.ExecutionElapsedWallTime;rapidBuildTotal = rapidAccel.TotalElapsedWallTime;

模拟再次看到的好处迅速加速器模式模拟,建立快速加速器的目标。

simOut = sim(思);
构建总结0 1模型的建立(1模型已经更新)构建持续时间:0 h 0米2.684秒

访问的时间信息快速加速器模拟,没有建设目标。然后,提取初始化时间、执行时间、总运行时间模拟。

rapidAccelNoRebuild = simOut.SimulationMetadata.TimingInfo;rapidInit = rapidAccelNoRebuild.InitializationElapsedWallTime;rapidExec = rapidAccelNoRebuild.ExecutionElapsedWallTime;rapidTotal = rapidAccelNoRebuild.TotalElapsedWallTime;

建立一个表比较时间为每个模拟。

InitializationTime = [normalInit; rapidBuildInit rapidInit];ExecutionTime = [normalExec; rapidBuildExec rapidExec];TotalSimulationTime = [normalTotal; rapidBuildTotal rapidTotal];simNames = [“正常模式”;“快速加速器”;“快速加速器不重建”];timingTable =表(TotalSimulationTime InitializationTime,ExecutionTime RowNames = simNames);

在第一个快速加速器模拟,初始化时间的增加,因为快速加速器目标建立在初始化阶段。对于这个模型和仿真时间,使用快速加速器模式减少了执行时间,第一个快速加速器模拟仍然是速度比使用普通模式。

timingTable
timingTable =3×3表TotalSimulationTime InitializationTime ExecutionTime ___________________ _____________ _________________正常模式快速加速器108.91 12.411 96.437 68.44 40.962 26.152快速加速器没有重建17.403 3.387 13.886

另请参阅

|

相关的话题