在PHP中FOR FOR FOR FORACH的性能
首先,我理解90%的应用程序中性能差异完全不相关,但我只需要知道哪个是更快的构造。那......
目前在网上提供的信息令人困惑。很多人说foreach很糟糕,但从技术上讲它应该更快,因为它假设使用迭代器简化了数组遍历的编写。迭代器,再次假设更快,但在PHP中也显然死得很慢(或者这不是PHP的东西?)。我在谈论数组函数:next()prev()reset()等等,如果它们是偶数函数而不是那些看起来像函数的PHP语言特性之一。
为了缩小这个范围:我在以超过1的步长遍历数组时没有兴趣(也没有负步骤,即反向迭代)。我也对从任意点到任意点的遍历不感兴趣,只有0到长度。我也没有看到定期操作超过1000个键的数组,但我确实看到一个数组在应用程序的逻辑中被遍历了多次!另外,对于操作,主要是字符串操作和回声。
以下是一些参考站点:
http://www.phpbench.com/
http://www.php.lt/benchmark/phpbench.php
我到处听到的内容:
foreach
很慢,因此for
/ while
更快
PHP foreach
复制它迭代的数组; 为了使它更快你需要使用引用
像这样的代码:比a更快$key = array_keys($aHash); $size = sizeOf($key);
for ($i=0; $i < $size; $i++)foreach
这是我的问题。我写了这个测试脚本:http://pastebin.com/1ZgK07US,无论我运行脚本多少次,我得到这样的东西:
foreach 1.1438131332397foreach (using reference) 1.2919359207153for 1.4262869358063foreach (hash table) 1.5696921348572for (hash table) 2.4778981208801
简而言之:
foreach
比foreach
参考更快
foreach
比...更快 for
foreach
for
比哈希表更快
谁能解释一下?
难道我做错了什么?
PHP foreach引用的东西真的有所作为吗?我的意思是,如果你通过引用传递它为什么不复制它?
foreach语句的等效迭代器代码是什么; 我在网上看到了一些,但每次我测试它们的时机都是关闭的; 我还测试了一些简单的迭代器结构,但似乎从来没有得到过不错的结果 - PHP中的数组迭代器是不是很糟糕?
是否有更快的方法/方法/构造来迭代除FOR / FOREACH(和WHILE)之外的数组?
PHP版本5.3.0
吃鸡游戏
www说