仿真模式的性能
当仿真执行时间超过代码生成需要的时间时,Accelerator 和 Rapid Accelerator 模式对速度的提升要超过 Normal 模式。因此,当仿真执行时间为几分钟或更长时,Accelerator 和 Rapid Accelerator 模式的执行性能一般要高于 Normal 模式。但是,包含大量 Stateflow® 或 MATLAB Function 模块的模型在速度提升方面可能只是略高于 Normal 模式,因为这些模块在 Normal 模式下也通过代码生成进行仿真。
在模型中包含可调参数也会增加仿真时间。
下图显示了一个假设模型一般情况下在 Normal、Accelerator 和 Rapid Accelerator 模式下的仿真性能。
必须重新生成目标时的性能
图中的实线表示必须重新生成目标代码时(“all targets out of date”)的性能。对于这个假设的模型,时间大约为几分钟,但对于复杂的模型可能会更长。
如图中所示,在 Normal 模式下编译模型需要的时间少于生成 Accelerator 目标或 Rapid Accelerator 可执行文件所需要的时间。从图中可以明显看出,对于较小的仿真停止时间,Normal 模式下的整体仿真时间比 Accelerator 模式或 Rapid Accelerator 模式都要快。
Accelerator 模式或 Rapid Accelerator 模式出现更快执行时间的交叉点取决于模型的复杂度和内容。例如,如果模型中包含大量使用解释代码的模块(请参阅为 Accelerator 模式选择模块),则在 Accelerator 模式下运行未必比在 Normal 模式下快很多,除非仿真停止时间非常大。同样,如果模型中包含大量 Stateflow Chart 模块或 MATLAB Function 模块,速度提升也未必比在 Normal 模式下高很多,除非仿真停止时间很长。您可以通过代码生成加快包含 Stateflow 图模块或 MATLAB Function 模块的模型的运行速度。
为了说明这一点,上图所示的模型包含大量 Stateflow Chart 模块或 MATLAB Function 模块。如果模型中不包含这些模块,标记为“Normal”的曲线的初始已用时间应该比图中显示的更小。目标为最新版本时的性能
如图中的虚线(“all targets up to date”)所示,Simulink® 软件确定 Accelerator 目标或 Rapid Accelerator 可执行文件是否最新所需的时间远远少于生成代码(“all targets out of date”)所需的时间。当您要对各种设计的优缺点进行测试时,您可以充分利用这一特点。
例如,您可以为 Accelerator 模式生成一次目标代码,然后基于这些代码,使用一系列增益设置对您的模型进行仿真。这是使用 Accelerator 或 Rapid Accelerator 模式的特别有效的方式,因为这种更改不会导致重新生成目标代码。这意味着模型只在第一次运行时生成目标代码,后续运行时,Simulink 代码只需花时间验证目标是否最新。此过程远比生成代码更快,因此后续运行可能比第一次运行快得多。
因为检查目标要比生成代码更快,所以当目标已经是最新版本时,交叉点要比必须生成代码时更小。这意味着对于模型后续运行的仿真,Accelerator 或 Rapid Accelerator 模式要比 Normal 模式更快,即使停止时间较短也是如此。