其中哪一个对于性能和可读性更好?
foreach(range(0,10000) as $i) {} // 3.847 ms
for($i = 0; $i < 10000; ++$i) {} // 0.663 ms
Edit:做了一个基准测试,最后一个几乎快了 6 倍。
传统的for
循环比foreach
+ range
。第一个仅使用整数比较和递增,而最后一个必须创建一个(可能很大)数组,然后通过移动内部数组光标并检查是否到达末尾来提取每个元素。
如果你执行这个你可以看到简单的for
比foreach
+ range
:
$t0 = microtime(true);
for ($i = 0; $i < 100000; $i++) {
}
echo 'for loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;
$t0 = microtime(true);
foreach (range(0, 100000) as $i) {
}
echo 'foreach + range loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;
最好还是用传统的for
作为一种习惯,您需要迭代给定的次数,但最终在大多数情况下您不会看到很大的性能改进(考虑到上面的示例迭代了 100k 次,如果您减少次数迭代次数,差异较小)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)