如何使用循环转换优化 C 代码? [关闭]
Posted
技术标签:
【中文标题】如何使用循环转换优化 C 代码? [关闭]【英文标题】:How do I optimize C code using loop transformation? [closed] 【发布时间】:2016-08-17 22:39:20 【问题描述】:循环融合,是不是意味着上面的代码会变成
for(j=1; j<=4,j++)
a[j]=3;
a[j]=a[j]*2*h;
b[j]=6;
b[j]=b[j]+3*k*k;
【问题讨论】:
【参考方案1】:除了使用两个单独的循环之外,原始代码还包含许多冗余语句。一种可能的改进是:
int tmp = 6 * h;
for (j = 1; j <= 4; j++)
a[j] = tmp;
b[j] = 6 + 3 * j * j;
主要优化:
一个循环而不是两个 删除了在下一条语句中被覆盖的赋值 计算一个不依赖于循环外循环索引的值您应该知道,这些优化中的大多数无论如何都将由编译器完成。
【讨论】:
很好的答案,弗兰克,但他应该自己做功课,所以他学会了。最好投票结束这些问题。 @PaulOgilvie:你错了。 meta.stackexchange.com/q/147100/155739 @PaulOgilvie:我在回答这个问题之前确实犹豫了,正是因为这个原因。但是,我希望他能从答案中学到一些东西。他仍然需要计算操作的数量,并且通过这样做,必须考虑两种实现的差异。 @FrankPuffer 谢谢...这真的不是一个家庭作业问题,我对 c++ 一无所知,所以我对代码感到困惑。我只是想了解循环转换的工作原理以及它如何帮助减少开销,因为我正在研究嵌入式系统以上是关于如何使用循环转换优化 C 代码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章