因此,我正在尝试优化一些代码。我有一个可变大小的循环功能。但是,为了提高效率,我想将具有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的一个定义。