现代编译器如何优化该代码

时间:2020-07-24 07:30:15

标签: c++ compiler-optimization

现代的编译器将如何优化此代码:

int fn (int a, int b)
{
    int sum = 0;
    for(int i=4*a; i>0; i--)
    {
        sum += b*i*i;
    }
    return sum;
}

1 个答案:

答案 0 :(得分:2)

这个问题没有简单的答案,因为有许多编译器,并且许多标志可以修改使用的编译和优化,并且取决于目标体系结构,可以使用不同的优化。

您最好的尝试是去compiler explorer并检查具有不同标志的不同编译器生成的程序集。如果要比较输出,则需要了解汇编。如您所见,对于相同的代码和相同的优化级别,最新版的gcc和clang产生了截然不同的版本。