Home  >  Article  >  Backend Development  >  PHP foreach, while performance comparison_PHP tutorial

PHP foreach, while performance comparison_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:43:26875browse

foreach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array. Generally speaking, it is believed that while should be faster than foreach (because foreach first copies the array when it starts executing, and while ), but the result is just the opposite.
The array "reading" operation is performed in the loop, so foreach is faster than while:

Copy code The code is as follows:

foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key ];
}

The array "writing" operation is performed in the loop, so while is faster than foreach:
Copy code The code is as follows:

foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}

Summary: It is generally believed that foreach involves value copying and will be slower than while, but in fact, if you only perform array reading operations in a loop, then foreach is very
fast. This is because the copy mechanism used by PHP is "reference counting, copy-on-write". That is to say, even if a variable is copied in PHP, the initial form is actually still in the form of a reference. Only when the variable Real copying will only occur when the content changes. The reason for doing this is to save memory consumption and also improve the efficiency of
copying. From this point of view, the efficient read operation of foreach is not difficult to understand. In addition, since foreach is not suitable for processing array write operations, we can draw a conclusion. In most cases, the code for array write operations in the form of foreach ($array as $key => $value) is Should be replaced by while (list($key) =
each($array)). The speed difference produced by these techniques may not be obvious in small projects, but in large projects like frameworks, where a single request often involves hundreds, thousands, or tens of millions of array loop operations, the difference will be obvious. enlarge.


http://www.bkjia.com/PHPjc/320784.html

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/320784.htmlTechArticleforeach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array, Under general logic, while should be faster than foreach (because fore...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn