文档

控制内联

限制内联时:

  • 由于过多的函数内联,超过了生成的代码大小限制。例如,假设你包含这样的语句,coder.inline(总是),在某个函数内。然后在代码中的许多不同位置调用该函数。生成的代码大小会增加,因为每次调用函数都是内联的。但是,调用站点必须不同。例如,如果要内联的函数在循环中被多次调用,则内联不会导致大量代码。

  • RAM或堆栈空间有限。

你可以控制内联或完全禁用内联。若要在命令行中禁用内联,请使用- o禁用:内联选项codegen命令。此选项将禁用所有函数的内联。

控制内联函数的大小

您可以使用MATLAB®编码器™应用程序或命令行界面来控制可以内联的函数的最大大小。函数大小是根据抽象的指令数量来衡量的,而不是实际的MATLAB指令或目标处理器中的指令。试验此参数以获得所需的内联行为。

  • 使用该应用程序,在项目设置对话框中,在所有设置选项卡,设置字段的值,内联阈值,到您想要的最大尺寸。

  • 在命令行中,创建一个codegen配置对象。设置属性的值,InlineThreshold,到您想要的最大尺寸。

    CFG = code .config(“自由”);cfg。InlineThreshold = 100;

    使用此配置对象生成代码。

内联后控制函数的大小

您可以使用MATLAB编码器App或命令行界面来控制函数内联后的最大大小。函数大小是根据抽象的指令数量来衡量的,而不是实际的MATLAB指令或目标处理器中的指令。试验此参数以获得所需的内联行为。

  • 使用该应用程序,在项目设置对话框中,在所有设置选项卡,设置该字段的值内联阈值最大值到你想要的最大尺寸。

  • 在命令行中,创建一个codegen配置对象。设置属性的值,InlineThresholdMax,到您想要的最大尺寸。

    CFG = code .config(“自由”);cfg。InlineThresholdMax = 100;

    使用此配置对象生成代码。

控制内联函数的堆栈大小限制

在堆栈空间上指定限制将限制允许的内联数量。对于行外函数,当函数返回时,释放函数本地变量的堆栈空间。但是,对于内联函数,即使在函数执行之后,堆栈空间仍然被局部变量占用。财产的价值InlineStackLimit以字节为单位。基于来自目标硬件设置的信息,该软件估计堆栈变量的数量InlineStackLimit可以容纳。这个估计排除了可能的C编译器优化,例如将变量放入寄存器。

您可以使用MATLAB编码器应用程序或命令行界面来控制内联函数的堆栈大小限制。

  • 使用该应用程序,在项目设置对话框中,在所有设置选项卡,设置该字段的值内联堆栈限制到你想要的最大尺寸。

  • 在命令行中,创建一个codegen配置对象。设置属性的值,InlineThresholdMax,到您想要的最大尺寸。

    CFG = code .config(“自由”);cfg。InlineStackLimit = 2000;

    使用此配置对象生成代码。

另请参阅

|

相关的话题

这个话题有用吗?