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 на этот модуль в интерпретаторе.
8 октября 2014 07:51

Читатель rss (инкогнито)
8 октября 2014, 09:57

Если обижу, сразу извиняюсь, так как далек от php.
А за счет чего увеличена производительность?
Может, стоит попробовать тест с генерацией более-менее случайных(но однотиповых и одной структуры, читайте, равное время на генерацию) данных, будет честнее?

Евгений Степанищев (bolknote.ru)
8 октября 2014, 10:04, ответ предназначен Читателю rss

А чем вы меня обидите? Код не мой. Не знаю за счёт чего, видимо за счёт более эффективно написаного кода. Разве это редкость?
Может, стоит попробовать тест с генерацией более-менее случайных(но однотиповых и одной структуры, читайте, равное время на генерацию) данных, будет честнее?
Зачем? Вы думаете внутри есть какой-то кеш? Авторы вряд ли писали его просто для того, чтобы обмануть сообщество.

Вадим (инкогнито)
9 октября 2014, 00:22

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

Евгений Степанищев (bolknote.ru)
9 октября 2014, 07:08, ответ предназначен Вадиму

Встроенную сериализацию лучше заменить на igbinary, если это возможно. Будет и быстро, и компактно.

silent (инкогнито)
15 октября 2014, 09:18

На самом деле все эти сериализации, да и просто любой код на php настолько быстрые, что даже такие ускорения не замечаются на фоне тяжелых сетевых вызовов к базе, мемкешу и прочей ерунде :(

Евгений Степанищев (bolknote.ru)
15 октября 2014, 20:26, ответ предназначен silent

На самом деле, это не так. У нас на проекте три машины в 24 процессора, на которых крутятся php-fpm (и ничего больше нет, всё остальное барахло на других машина), выжирают эти процессоры подчистую в часы пик.

silent (инкогнито)
16 октября 2014, 06:25, ответ предназначен Евгений Степанищев (bolknote.ru):

У нас гораздо крупнее проект и на графиках ничего не поменялось, увы

Евгений Степанищев (bolknote.ru)
17 октября 2014, 11:14, ответ предназначен silent

Как вы определили, что ваш проект гораздо крупнее?

Евгений Степанищев (bolknote.ru)
17 октября 2014, 11:15, ответ предназначен silent

Сейчас у нас в проекте задействовано 26 машин.

silent (инкогнито)
17 октября 2014, 20:10, ответ предназначен Евгений Степанищев (bolknote.ru):

Avito.ru :)

Евгений Степанищев (bolknote.ru)
17 октября 2014, 21:46, ответ предназначен silent

Я что-то не верю, что сложность проекта avito.ru хоть как-то близка к сложности документооборота. Или я заблуждаюсь? Да и наша 51 тысяча пользователей в крупнейшей инсталляции, которые топчутся по документообороту постоянно, не переставая, вполне могут дать сравнимую нагрузку с вашим 15 миллионами, которые иногда заходят проверить анкету или объявления.

silent (инкогнито)
17 октября 2014, 22:22, ответ предназначен Евгений Степанищев (bolknote.ru):

Ты недооцениваешь нас, но в любом случае извини, если задел, я не хотел обидеть.
Мериться письками глупо, я просто поделился своими результатами.

Евгений Степанищев (bolknote.ru)
18 октября 2014, 08:37, ответ предназначен silent

Нет, я правда не знаю, такие вещи всегда интересны, если можно что-то рассказать, я бы почитал :)

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)