JSOND
JSOND — это ещё один «дешёвый» способ увеличить производительность вашего проекта на ПХП, наряду с igbinary. Исходный код есть на PECL, для всех систем существуют пакеты. Насколько я знаю, есть планы по замене стандартного расширения JSON в ПХП7 на JSOND.
Для интереса погонял стандартный тест пакета на одной из наших машин (мы там вчера перешли на ПХП 5.5 наконец-то, стоит последняя версия), вот результаты (меньше — лучше):
STR: {"i": 23, "array": [1, null, false, true, ["aha", "baba", 23, {"test": 23}]]}
JSON: time for 100000 iterations: 1.096384
JSOND: time for 100000 iterations: 0.353658
STR: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
JSON: time for 100000 iterations: 0.700904
JSOND: time for 100000 iterations: 0.202519
STR: {"a": 23.2234232}
JSON: time for 100000 iterations: 0.398129
JSOND: time for 100000 iterations: 0.083977
STR: сериализуется очень длинная строка
JSON: time for 100000 iterations: 0.392990
JSOND: time for 100000 iterations: 0.341663
STR: сериализуется переменная $_SERVER
JSON: time for 100000 iterations: 4.983888
JSOND: time for 100000 iterations: 2.321528
Что приятно, АПИ полностью совместимо, так что проблем нет никаких — в вызовах надо просто добавить одну букву. Есть так же несложный способ самостоятельной замены стандартного JSON на этот модуль в интерпретаторе.
Если обижу, сразу извиняюсь, так как далек от php.
А за счет чего увеличена производительность?
Может, стоит попробовать тест с генерацией более-менее случайных(но однотиповых и одной структуры, читайте, равное время на генерацию) данных, будет честнее?
Комментарий для Читатель rss:
А чем вы меня обидите? Код не мой. Не знаю за счёт чего, видимо за счёт более эффективно написаного кода. Разве это редкость?
Зачем? Вы думаете внутри есть какой-то кеш? Авторы вряд ли писали его просто для того, чтобы обмануть сообщество.
Интересно получается. Исходя из практических тестов получается (и это вроде неоднократно описывалось), что для сравнительно больших константных структур выгоднее использовать json сериализацию. Такой подход обгоняет по скорости родную для пхп сериализацию и, что гораздо важнее, быстрее чем нативный пхп код. А теперь получается, что с этим расширением вообще все станет шустро и быстро.
Комментарий для Вадим:
Встроенную сериализацию лучше заменить на igbinary, если это возможно. Будет и быстро, и компактно.
На самом деле все эти сериализации, да и просто любой код на php настолько быстрые, что даже такие ускорения не замечаются на фоне тяжелых сетевых вызовов к базе, мемкешу и прочей ерунде :(
Комментарий для silent:
На самом деле, это не так. У нас на проекте три машины в 24 процессора, на которых крутятся php-fpm (и ничего больше нет, всё остальное барахло на других машина), выжирают эти процессоры подчистую в часы пик.
Комментарий для Евгения Степанищева:
У нас гораздо крупнее проект и на графиках ничего не поменялось, увы
Комментарий для silent:
Как вы определили, что ваш проект гораздо крупнее?
Комментарий для silent:
Сейчас у нас в проекте задействовано 26 машин.
Комментарий для Евгения Степанищева:
Avito.ru :)
Комментарий для silent:
Я что-то не верю, что сложность проекта avito.ru хоть как-то близка к сложности документооборота. Или я заблуждаюсь? Да и наша 51 тысяча пользователей в крупнейшей инсталляции, которые топчутся по документообороту постоянно, не переставая, вполне могут дать сравнимую нагрузку с вашим 15 миллионами, которые иногда заходят проверить анкету или объявления.
Комментарий для Евгения Степанищева:
Ты недооцениваешь нас, но в любом случае извини, если задел, я не хотел обидеть.
Мериться письками глупо, я просто поделился своими результатами.
Комментарий для silent:
Нет, я правда не знаю, такие вещи всегда интересны, если можно что-то рассказать, я бы почитал :)