在使用大量次的for循环时,往往由于循环次数较多而严重影响程序执行效率,这时,我们可以使用循环合并来解决这个问题。

首先看一个普通的for循环,这个循环用于计算50000000次e的指数。

<?php
for ($i = 0; $i < 50000000; $i++) {
exp(12);
}

我们看一下执行时间:

$ time php for.php
real    0m49.217s
user    0m32.522s
sys     0m0.280s

可以看到,总共需要49s。这时,我们对for循环做一点改动:

<?php
for ($i = 0; $i < 50000000; $i++) {
exp(12);
$i++;
exp(12);
$i++;
exp(12);
$i++;
exp(12);
$i++;
exp(12);
}

这样改动后,exp()函数依然被执行了50000000次,但for只会循环50000000 / 5 = 10000000 次。这时,再来看一下执行时间:

$ time php for.php
real    0m28.755s
user    0m23.953s
sys     0m0.204s

可以看到,现在只需要28s,效率提高了大约42%,还是比较明显的。