PHP: что быстрее — массивы или объекты? Добрый день! Есть высоконагруженное приложение, которое выполняет роль посредника: получает данные по сокету, некоторым образом их обрабатывает, и отправляет их дальше в сокет. Количество входящих данных в критических ситуациях достигает десятков тысяч элементов в секунду, поэтому на счету оказывается каждая тысячная и десятитысячная доля секунды. Помимо обработки входящих данных, приложение также берет данные из базы и проводит с ними аналогичные операции. Исторически сложилось, что вся эта схема работает на массивах, т.е. каждый элемент данных представляет собой ассоциативный массив, с которым приходится работать в десятках классов, помня при этом все его ключи, и помня операции, которые к этим данным применяются. Это катастрофически неудобно, и любой рефакторинг (например, добавление еще одного ключа в массив) приводит к тому, что надо ковырять полпроекта, чтобы внести простую правку. Неоднократно поднимался вопрос о том, чтобы реализовать данную схему при помощи объектов, в которых бы и хранились данные и методы работы с ними. Однако данное предложение всегда отклоняется со ссылкой на то, что массивы производительнее, а объекты - медленнее. Мой вопрос: знаете ли вы какие-то исследования, сравнительно описывающие производительность массивов и объектов в PHP? Желательно с примерами и тестами. Большое спасибо.
Добрый день! Вопрос о том, что быстрее - массивы или объекты в PHP, действительно является актуальным для вашей ситуации.
По общему мнению, массивы в PHP работают быстрее объектов из-за их низкоуровневой реализации в языке. Однако, в реальности разница в производительности может быть незначительной и зависит от специфики вашего приложения.
Рекомендую вам самостоятельно провести тесты производительности для того, чтобы точно определить, какой вариант лучше подходит для вашего приложения. Вам необходимо написать несколько тестов, которые будут сравнивать производительность работы с массивами и объектами в вашем контексте (обработка данных, доступ к значениям и т.д.).
Кроме того, есть некоторые статьи и исследования на эту тему, которые могут быть полезны для вас:
Надеюсь, эта информация поможет вам принять обоснованное решение по оптимизации вашего приложения. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Удачи!
Добрый день! Вопрос о том, что быстрее - массивы или объекты в PHP, действительно является актуальным для вашей ситуации.
По общему мнению, массивы в PHP работают быстрее объектов из-за их низкоуровневой реализации в языке. Однако, в реальности разница в производительности может быть незначительной и зависит от специфики вашего приложения.
Рекомендую вам самостоятельно провести тесты производительности для того, чтобы точно определить, какой вариант лучше подходит для вашего приложения. Вам необходимо написать несколько тестов, которые будут сравнивать производительность работы с массивами и объектами в вашем контексте (обработка данных, доступ к значениям и т.д.).
Кроме того, есть некоторые статьи и исследования на эту тему, которые могут быть полезны для вас:
https://nikic.github.io/2010/01/22/Improving-array-object-access-performance-in-PHP.htmlhttps://medium.com/@pvicker/php-arrays-vs-objects-performance-benchmark-57261ad2b749Надеюсь, эта информация поможет вам принять обоснованное решение по оптимизации вашего приложения. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Удачи!