小编p c*_*ark的帖子

在特殊情况下展开循环循环

因此,我正在尝试优化一些代码。我有一个可变大小的循环功能。但是,为了提高效率,我想将具有1、2和3大小的循环的案例设为完全展开的特殊案例。到目前为止,我的方法是将循环大小声明为const参数,然后定义包装函数,这些包装函数调用主函数,将其递归为const值的文字。我已经包含了一段代码片段,说明了我的想法。

inline void someFunction (const int a)
{
    for (int i=0; i<a; i++)
    {
        // do something with i.
    }
}

void specialCase()
{
    someFunction (3);
}

void generalCase(int a)
{
    someFunction (a);
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是期望我的编译器(GCC)在specialCase内部展开for循环是否合理?我的意思是显然我可以复制-将someFunction的内容粘贴到specialCase中,并用3替换a,但是为了清楚起见,我宁愿只在代码中处理someFunction的一个定义。

c++ gcc loop-unrolling

5
推荐指数
1
解决办法
316
查看次数

标签 统计

c++ ×1

gcc ×1

loop-unrolling ×1