软件性能、能耗与大小的优化策略
1. 软件性能优化
1.1 基本循环优化
循环是优化的重要目标,因为包含循环的程序通常会花费大量时间执行这些循环。优化循环有三种重要技术:代码移动、归纳变量消除和强度削弱。
- 代码移动 :将不必要的代码移出循环。如果一个计算的结果不依赖于循环体中执行的操作,就可以安全地将其移出循环。例如:
for (i = 0; i < N*M; i++) {
z[i] = a[i] + b[i];
}
在这个循环中,循环边界计算在每次循环测试时都会执行,尽管结果从未改变。可以将其移到循环之前,避免 $N \times M - 1$ 次不必要的执行。
- 归纳变量消除 :归纳变量是其值从循环迭代变量的值派生而来的变量。编译器通常会引入归纳变量来帮助实现循环。例如,对于嵌套循环:
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
z[i][j]
编译器使用归纳变量来帮助访问数组。可以重写为使用归纳变量和指针的形式:
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
zbinduct
*(zptr
超级会员免费看
订阅专栏 解锁全文
1267

被折叠的 条评论
为什么被折叠?



