由于我的研究使我相信,for循环是
PHP中最快的迭代结构,以使其更清晰,您认为以下哪些更快?
示例一
for ($i = 0; $i < count($myLargeArray); $i++ ) { echo myLargeArray[$i]; }
示例二
$count = count($myLargeArray); for ($i = 0; $i < $count; $i++ ) { echo myLargeArray[$i]; }
我的逻辑是,在每次迭代中,每次迭代访问myLargeArray的长度比在实例二中访问一个简单的整数值更昂贵.那是对的吗?
第一种方式是慢,因为在循环的每次迭代中都必须调用count()函数. count()方法本身很快,但是在调用该函数的时候还是有一些开销.通过将其移动到循环外,您正在执行所谓的“
loop invariant code motion”或有时“起吊”.
有一个这样的family of optimizations这是有趣的学习.
说了这么多,很少会很重视这一点.在这里的例子中,回显输出的I / O可能是您通过“优化”保存的10倍.如果您在循环中完成任何其他操作,您的优化意味着越来越少.
我讨厌成为一个湿毯子,但对于超过90%的代码,性能是一个非问题.特别是当您谈论Web应用程序时,哪些是90%以上的I / O开始.
不过,当你认为你的代码是责怪的时候,你应该:
>决定您需要优化的用例
>衡量代码性能
找出瓶颈
>确定您可以改进的领域,并决定是否值得您改进它们的时间.
>使您的代码更改
>返回步骤2