注:这些优化源于编译器优化,有可能改善程序性能,但是不一定符合工程原则。
1. 通过消除循环内部的分支,可以提高循环内部的流水,从而提高性能。如下图所示,左边是优化前的结构图,右边是优化后的结构图。
例子:
优化前:
n = getchar(); // A
while( --n ) // B1
{
a += arr[n]; // B2
}
return a; // C
优化后:
n = getchar();
goto L1; // A
L2:
a += arr[n]; // B2
L1: if( --n )
goto L2; // B1
return a; // C