1

我有一个带有循环的函数,我可以在 c++ 代码中得到循环的扩展开发。我也有一个我想要得到的递归函数。

我需要的一个例子:

for (i = 0; i <4; i++)
{
      printf ("%d", "example");
}

应该导致我需要

printf ("%d", "example");
printf ("%d", "example");
printf ("%d", "example");
printf ("%d", "example");

这是一个简单的例子。但是对于更复杂的功能,我需要这样做。对于我使用它的价值visual c++。我不知道是否有一个构建选项。

4

2 回答 2

5

如果你使用 GCC 来编译你的代码,那么你可以使用-funroll-loop选项来解开这个循环。

文件说,

  • -funroll-loops
    展开循环,其迭代次数可以在编译时或进入循环时确定。-funroll-loops 意味着 -frerun-cse-after-loop。此选项使代码更大,并且可能会或可能不会使其运行得更快。

还有另一个(类似的)选项:

  • -funroll-all-loops
    展开所有循环,即使在进入循环时它们的迭代次数不确定。这通常会使程序运行得更慢。-funroll-all-loops 意味着与 -funroll-loops 相同的选项,
于 2012-11-14T15:26:30.173 回答
1

Visual C++ 没有用于循环展开的显式选项。但是,如果您打开优化,则优化器循环会根据启发式展开。循环展开是一种权衡 - 它可能会或可能不会导致性能提高。

这是关于Visual C++ 中循环展开的讨论。

于 2012-11-14T15:37:54.850 回答