Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

比较性能

仿真模式的性能

当仿真执行时间超过代码生成需要的时间时,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 模式更快,即使停止时间较短也是如此。

测量性能

您可以使用 tictocsim 命令将 Accelerator 或 Rapid Accelerator 模式的执行时间与 Normal 模式进行比较。

  1. 打开您的模型。

  2. Simulation 选项卡的 Simulate 部分,从下拉菜单中选择 “Normal”。

  3. 在命令提示符下使用 tictocsim 命令,测量模型在 Normal 模式下进行仿真需要的时间:

    tic,[t,x,y]=sim('myModel',10000);toc

    tictoc 一起使用可以记录和返回已用时间并显示如下消息:

    Elapsed time is 17.789364 seconds.

  4. Simulation 选项卡的 Simulate 部分,从下拉菜单中选择 “Accelerator” 或 “Rapid Accelerator”。通过点击 Run 为模型编译可执行文件。只要模型没有发生结构性改变,加速模式就会在后续的仿真中使用此可执行文件。Code Regeneration in Accelerated Models中讨论了可能导致模型重新构建的情况。

  5. 在命令提示符下重新运行编译的模型:

    tic,[t,x,y]=sim('myModel',10000);toc

  6. 显示的已用时间展示了加速模型的运行时间。例如:

    Elapsed time is 12.419914 seconds.
    

两个已用时间的差(在此示例中为 5.369450 秒)显示了通过加速模型获得的速度提升。

相关示例

详细信息