• Блог
  • Операции инкремента

Ещё один эксперимент на скорость. В этот раз в качестве подопытных выступают операторы инкремента и декремента. Интерес возник после прочтения статьи «Инкремент в 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.

    22 августа 2018, 12:06   156     0

    Комментарии ()

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.