控制内联
限制内联时:
由于过多的函数内联,超过了生成的代码大小限制。例如,假设你包含这样的语句,
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;
使用此配置对象生成代码。