Fast Site Engine

Высокопроизводительная CMS для сайтов.

Сделать сайт

Карта сайта
Переходим на Линукс
Политика конфиденциальности
Сделать сайт на основе Fast Site Engine

Установка
Документация
Список изменений
Лицензионное соглашение

Скачать
О движкеПроизводительностьБезопасностьТехнические требованияSEOКонтакты

for vs while

Как обещал ранее в тесте PHP функций с массивом, в этот раз посмотрим какой цикл быстрее for vs while.

Тесты PHP проводились на двух конфигурациях

Компьютер:
  Apache/2.4.34 PHP 7.2.10
  Linux version 4.15.0-45-generic (Kubuntu 18.04.2 LTS (Bionic Beaver) x86_64)
  12 x AMD Ryzen 5 1600X @ 3.70GHz
Сервер:
  Apache/2.4.38 PHP 7.2.15
  Linux version 2.6.32-042stab127.2 (Red Hat 4.4.6-4) (CENTOS 6.10 x86_64)
  4 x Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz

Функции тестирования, 90 000 000 вызовов

define('LOOP',10000000);
1.
for($i=0; $i<LOOP; $i++){
  if($i==1000001){}
}
2.
for($i=LOOP; $i>0; $i--){
  if($i==1000001){}
}
3.
$i=0;
while($i<LOOP){
  if($i==1000001){}
  $i++;
}
4.
$i=LOOP;
while($i>0){
  if($i==1000001){}
  $i--;
}

Результаты в порядке возрастания

Компьютер:
функциявремябыстрее на
2for($i=LOOP; $i>0; $i--)0.8956570.000000 с.0 %
4while($i>0)0.901333+0.005676 с.+0.63 %
1for($i=0; $i<LOOP; $i++)1.104547+0.208890 с.+18.91 %
3while($i<LOOP)1.113707+0.218050 с.+19.58 %
Сервер:
функциявремябыстрее на
3while($i<LOOP)0.9710640.000000 с.0 %
1for($i=0; $i<LOOP; $i++)0.975606+0.004542 с.+0.47 %
4while($i>0)1.019433+0.048369 с.+4.74 %
2for($i=LOOP; $i>0; $i--)1.047586+0.076522 с.+7.3 %

Забавные результаты, пока AMD не отжала серверный рынок, равняться будем на показания сервера, таким образом в порядке возрастания - либо while либо for. Учитывая результаты предыдущего тестирования победителем назначаю for($i=0; $i<LOOP; $i++).



© Все права защищены 2004 - 2024