PHP的循环合并Loop fusion和循环展开loop unwinding
2011-01-07 阅读 33
循环合并Loop fusion和循环展开loop unwinding是最优化部分计算机程序的一种技术。合理的利用这两种技术可以完成对程序的优化,以提高程序的速度和效率。
先来看看loop fusion在php中。两次循环,分别初始化两个数组:
for($i= 0;$i<30;++$i){
$a[$i]++;
}
for($i = 0;$i<30;++$i){
$b[$i]++;
}
```
进行循环合并后的代码:
for($i = 0l $i<30; ++$i){
$a[$i]++;
$b[$i]++;
}
```
再来看看循环展开,可以减少循环的次数:
for($i=0;$i<101;++$i){
echo $i;
}
```
展开后的代码:
for($i=0;$i<101;$i+=4){
echo $i;
echo $i+1;
echo $i+2;
echo $i+3;
}
```
展开其实有更多的要求,比如具体循环的次数、循环内部的操作的可预测性等等。而且,展开后并非一定会提高程序的运行效率。所以在php中,我们常见的还是以循环合并Loop fusion为主。
摘了一段话,关于loop unwinding:
循环展开(Loop unwinding),也叫做 loop unrolling ,是最优化部分计算机程序的一种技术。这个想法是通过减少常用指令的数量来缩短时间,这些计算机必须在一个循环中执行,和因而提高了缓存击中率和减少了分支。为了完成这个,在这个循环多个迭代中调用的指令被合并成一单个迭打。这样将加速这个程序如果这个循环的日常指令明显地削弱了性能。
php loop fusion unwinding 循环 合并 展开
更新于 2023年03月28日