为了
- 酥油当代码生成器展开一个为了
-loop,而不是制作一个为了
- 在生成的代码中,它产生每个迭代的循环主体的副本。对于小型,紧密的环,展开可以提高性能。然而,对于大循环,展开可以显着增加代码生成时间并生成低效代码。
编码器
代码生成器使用启发式来确定何时展开为了
-环形。强制循环展开,使用编码器
。这只会影响为了
紧接在后面的循环编码器
。例如:
功能z = call_myloop()%#codegen.z = myloop(5);结尾功能b = myloop(n)b =零(1,n);Coder.unroll();为了i = 1:n b(i)= i + n;结尾结尾
以下是for-loop的生成代码:
z [0] = 6.0;z [1] = 7.0;z [2] = 8.0;z [3] = 9.0;z [4] = 10.0;
控制何时为了
-loop展开,使用编码器
旗帜
争论。例如,仅当迭代的数量小于10时才会展开循环。
功能z = call_myloop()%#codegen.z = myloop(5);结尾功能b = myLoop(n)unroll_flag = n <10;b =零(1,n);编码器.UNROLL(unroll_flag);为了i = 1:n b(i)= i + n;结尾结尾
展开A.为了
-loop,代码生成器必须能够确定界限为了
-环形。例如,代码生成失败,因为以下代码是因为值N.
在代码生成时间不知道。
功能b = myloop(n)b =零(1,n);Coder.unroll();为了i = 1:n b(i)= i + n;结尾结尾