Операции инкремента
Ещё один эксперимент на скорость. В этот раз в качестве подопытных выступают операторы инкремента и декремента. Интерес возник после прочтения статьи «Инкремент в PHP». В ней тесты проводились на PHP5. Я же буду тестировать на PHP7. Для этого я создам тестовый сайт на modhost.pro.
Давайте разберём, что это за операторы. Вот список операторов инкремента:
- Операция унарного инкрементирования —
$var++
. - Операция добавления присваивания —
$var += 1
. - Операция стандартного добавления —
$var = $var + 1
.
Аналогично будет выглядеть и список операторов декремента.
Скрипт
<?php $times = 1000000; #1 $var++ $tstart= microtime(true); $result = 0; for ($i=0; $i<=$times; $i++) { $result++; } echo number_format(microtime(true) - $tstart, 10), ': $var++' ,"<br>"; #2 $var += 1 $tstart= microtime(true); $result = 0; for ($i=0; $i<=$times; $i++) { $result += 1; } echo number_format(microtime(true) - $tstart, 10), ': $var += 1' ,"<br>"; #3 $var = $var + 1 $tstart= microtime(true); $result = 0; for ($i=0; $i<=$times; $i++) { $result = $result + 1; } echo number_format(microtime(true) - $tstart, 10), ': $var = $var + 1' ,"<br>";
Результат
0.0067329407: $var++ // Операция унарного инкрементирования 0.0090949535: $var += 1 // Операция добавления присваивания 0.0090889931: $var = $var + 1 // Операция стандартного добавления
Операция унарного инкрементирования самая быстрая. Хотя в статье нас убеждают, что самая быстрая операция стандартного добавления(третья). Но вот что удивительно, у меня на локалке (PHP7.1, Windows) результат совсем другой.
0.2700159550: $var++ 0.2550139427: $var += 1 0.2900171280: $var = $var + 1
Самой быстрой оказалась операция добавления присваивания, т.е. вторая. Но, думаю, эти «локальные» результаты менее достоверны, чем результаты с модхоста, так как у меня окружение меньше подходит для сайтов из-за Windows. В связи с этим я решил заново протестировать циклы из предыдущей статьи, но уже на modhost.pro.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()