展开为
循环
当代码生成器展开为
-循环,而不是生成为
-loop在生成的代码中,它为每次迭代生成循环体的副本。对于小而紧的循环,展开可以提高性能。然而,对于大型循环,展开会显著增加代码生成时间并生成低效的代码。
代码生成器使用启发式来确定何时展开为
循环。若要强制展开循环,使用coder.unroll
.例如:
函数Z = call_myloop()% # codegenZ = myloop(5);结束函数B = myloop(n) B = 0 (1,n);coder.unroll ();为I = 1:n b(I)= I +n;结束结束
下面是for循环生成的代码:
Z [0] = 6.0;Z [1] = 7.0;Z [2] = 8.0;Z [3] = 9.0;Z [4] = 10.0;
来控制为
-loop是展开的,使用coder.unroll
国旗
论点。例如,只在迭代次数小于10时展开循环。
函数Z = call_myloop()% # codegenZ = myloop(5);结束函数B = myloop(n) unroll_flag = n < 10;B = 0 (1,n);coder.unroll (unroll_flag);为I = 1:n b(I)= I +n;结束结束
展开为
-循环时,代码生成器必须能够确定为
循环。例如,以下代码的代码生成失败,因为的值n
在代码生成时不知道。
函数B = myloop(n) B = 0 (1,n);coder.unroll ();为I = 1:n b(I)= I +n;结束结束
另请参阅
相关的话题
这个话题有帮助吗?