先决条件–编译器设计|代码优化
降低频率是环路优化过程中的一种类型,它与机器无关。在降低频率中,对循环内的代码进行了优化,以提高程序的运行时间。频率降低用于减少循环中的代码量。可以在不影响程序语义的情况下将其移动到循环主体之外的语句或表达式,将其移动到循环之外。降低频率也称为代码运动。
降低频率的目标:
降低频率的目标是:
- 减少表达的评价频率。
- 将循环不变语句带出循环。
以下是降低频率的示例:
程序1:
// This program does not uses frequency reduction.
#include
using namespace std;
int main()
{
int a = 2, b = 3, c, i = 0;
while (i < 5) {
// c is calculated 5 times
c = pow(a, b) + pow(b, a);
// print the value of c 5 times
cout << c << endl;
i++;
}
return 0;
}
程式2:
// This program uses frequency reduction.
#include
using namespace std;
int main()
{
int a = 2, b = 3, c, i = 0;
// c is calculated outside the loop
c = pow(a, b) + pow(b, a);
while (i < 5) {
// print the value of c 5 times
cout << c << endl;
i++;
}
return 0;
}
输出:
17
17
17
17
17
解释:
程序2比程序1更有效,因为在程序1中,每次执行while循环时都会计算c的值。因此,c的值仅在循环外部计算一次,并且减少了循环中的代码量。