如何将编译的扩展为函数或循环

how to get the compiled extended to a function or loop

本文关键字:函数 循环 扩展 编译      更新时间:2023-10-16

我有一个带有循环的函数,我将在 c++ 代码中扩展循环的开发。我也有一个递归函数,我想得到同样的东西。

我需要的一个例子:

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

应该导致我需要的结果

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

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

如果您使用 GCC 编译代码,则可以使用-funroll-loop选项来解循环此循环。

文件说,

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

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

  • - 全循环
    展开所有循环,即使进入循环时它们的迭代次数不确定。这通常会使程序运行得更慢。-funroll-all-loops 意味着与 -funroll-loops 相同的选项,

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

以下是关于在视觉C++中展开循环的讨论。