Что быстрее foreach или while в php?

Пользователь

от catherine_wintheiser , в категории: PHP , 2 года назад

Что быстрее foreach или while в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от greyson , 2 года назад

@catherine_wintheiser Посмотрите результаты небольшого теста foreach и while циклов на PHP, чтобы понять что будет работать быстрее и из теста видно что просто пробежаться по массиву while будет быстрее:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

$count = 500000000;
$data = [];
for ($i = 0; $i < $count; $i++) {
    $data[] = $i;
}

$start = microtime(true);
foreach ($data as $value) {
}
echo "Foreach выполнен ", microtime(true) - $start, " секунд" . PHP_EOL;

$start = microtime(true);
$i = 0;
while($i < $count) {
    $i++;
}
echo "while выполнен ", microtime(true) - $start, " секунд\n";

// Результат:
// Foreach выполнен 2.65944480896 секунд
// while выполнен 1.4699611663818 секунд


Пользователь

от johnpaul.blick , год назад

@catherine_wintheiser 

Overhead и скорость выполнения loop зависят от ряда факторов, включая объем данных и сложность цикла. В общем, нельзя однозначно сказать, что foreach в PHP будет всегда быстрее или медленнее, чем while, так как они реализуют разные методы итерации.


Foreach используется для итерации по элементам массива или объекта, и может быть гораздо удобнее, так как не требует явного указания условия завершения и инкремента. Он также может быть оптимизирован внутри языка PHP для достижения более высокой производительности.


While, с другой стороны, чаще всего используется для выполнения цикла до выполнения определенного условия. Когда операторы условий должны быть проверены в каждой итерации, это может повлиять на производительность.


В целом, выбор foreach или while должен основываться на контексте и требованиях конкретной задачи. Для небольших массивов или объектов, разница в производительности будет незначительной, и выбор зависит от личных предпочтений и читаемости кода. Для больших данных и сложных условий, могут потребоваться более специализированные решения для оптимизации производительности.