PHP Benchmarks

Изучение производительности PHP-скриптов

Настройки отображения темы Показывать по сообщений с сортировкой .
Выводить , отправленные .
Одна страница
Распечатать
4X_Pro
Создатель форума
Всего сообщений: 745
Зарегистрирован: 9 дек 2015, 19:20
Рейтинг пользователя: 142

0
26 ноября 2018, 18:06#1
    Как известно, я помешан на производительности и периодически тестирую разные аспекты языков программирования с этой точки зрения. Результаты буду выкладывать в эту тему. Если есть идеи, что еще можно померить, пишите.

    4X_Pro
    Создатель форума
    Всего сообщений: 745
    Зарегистрирован: 9 дек 2015, 19:20
    Рейтинг пользователя: 142

    0
    26 ноября 2018, 19:24. Редактировалось 1 раз, последний — 26 ноября 2018, 19:25#2
      Сегодня решил проверить, остается ли верным утверждение, что for быстрее foreach, в PHP 7 (впервые с этим утверждением я столкнулся во времена PHP4 на сайте PHPClub). Как выяснилось, разница несущественна и находится в пределах погрешности измерений. Более того, в разных измерениях получались разные результаты: иногда быстрее оказывался for, иногда — foreach.

      Вот результаты, полученные на моем компьютере:
      1 испытание:
      For exec time: 13.21497797966
      Foreach exec time: 13.658958911896

      2 испытание:
      For exec time: 13.949849128723
      Foreach exec time: 13.773871898651

      3 испытание:
      For exec time: 13.587599039078
      Foreach exec time: 13.758492946625

      4 испытание:
      For exec time: 13.502116918564
      Foreach exec time: 13.538818120956

      5 испытание:
      For exec time: 13.450010061264
      Foreach exec time: 13.487359046936

      6 испытание:
      For exec time: 13.711478948593
      Foreach exec time: 13.646157026291

      Условия измерения:
      Процессор: Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz, cpu family : 6, model : 58, stepping : 9, cache size : 4096 KB
      Оперативная память — 6 Гб, swap отсутствует.
      Версия PHP:
      PHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS )
      Copyright © 1997-2017 The PHP Group
      Zend Engine v3.0.0, Copyright © 1998-2017 Zend Technologies
         with Zend OPcache v7.0.32-0ubuntu0.16.04.1, Copyright © 1999-2017, by Zend Technologies

      Исходный код скрипта для измерения — см. в приложенном файле.

      Еще в процессе измерения заметил периодические «всплески» времени выполнения до 15 секунд и даже более. Сначала я их списывал на то, что процессор нагревается и начинает пропускать такты. Но даже когда я принял меры (перед каждым измерением выдерживал компьютер в режиме ожидания и убеждался, что он охладился до 48 градусов — его нормальной рабочей температуры), эти всплески никуда не исчезали. Более-менее стабильные результаты стали появляться только после того, когда я отключил сеть.
      Прикрепленные файлы:

      4X_Pro
      Создатель форума
      Всего сообщений: 745
      Зарегистрирован: 9 дек 2015, 19:20
      Рейтинг пользователя: 142

      0
      26 ноября 2018, 19:42. Редактировалось 2 раза, последний — 26 ноября 2018, 19:44#3
        Еще один вопрос, которым я часто задавался — что лучше: работать с массивами или объектами.
        Сделал скрипт, который создает массив из 10 тысяч либо массивов-хешей, либо объектов, содержащих по 50 строковых полей в каждом, и измерил время создания всего перечисленного и объем пикового использования памяти. Результаты:

        Массивы:
        Memory used: 63955960 bytes, time: 0.32594585418701 seconds.
        Memory used: 63955960 bytes, time: 0.3428430557251 seconds.
        Memory used: 63955960 bytes, time: 0.28496503829956 seconds.
        Memory used: 63955960 bytes, time: 0.33560585975647 seconds.
        Memory used: 63955960 bytes, time: 0.33985209465027 seconds.

        Объекты:
        Memory used: 64478816 bytes, time: 0.3552839756012 seconds.
        Memory used: 64478816 bytes, time: 0.35315895080566 seconds.
        Memory used: 64478816 bytes, time: 0.36479520797729 seconds.
        Memory used: 64478816 bytes, time: 0.34801006317139 seconds.
        Memory used: 64478816 bytes, time: 0.34800601005554 seconds.

        Таким образом, достаточно четко видно, что массивы и более экономны по памяти, и работа с ними, хоть и незначительно, всего на несколько процентов, но происходит быстрее. Поэтому для простого хранения данных (например, извлеченных из базы или предназначенных для шаблонизатора), когда возможности ООП не нужны, использование массивов более предпочтительно.

        Условия измерения — те же самые, что и в предыдущем сообщении, скрипты прилагаются.
        Прикрепленные файлы:

        4X_Pro
        Создатель форума
        Всего сообщений: 745
        Зарегистрирован: 9 дек 2015, 19:20
        Рейтинг пользователя: 142

        0
        26 ноября 2018, 20:03#4
          Еще одно мое старое исследование: XML или JSON — скорость десерализации данных из JSON и XML. Из него видно, что JSON выгоднее по скорости, XML — по памяти. Возможно, со временем проведу измерение и для сериализации.

          Одна страница
          Распечатать

          У вас нет прав для отправки сообщений в эту тему.

          Задать вопрос

          Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
          Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.