主要内容

unr为了- 酥油

当代码生成器展开一个为了-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;结尾结尾

也可以看看

相关话题