Follow

Внезапно выяснилось, что 70% времени загрузки GTA5 занимает парсинг JSON для внутриигрового магазина: nee.lv/2021/02/28/How-I-cut-GT

Оптимизация за гранью фантастики, конечно. Интересно, у них там код ревью вообще не бывает?

@skobkin @rayslava

> после завершения разбора JSON игра проверяет уникальность каждого из 63 тысяч его элементов, сравнивая со всеми остальными, что даёт в сумме даёт почти два миллиарда операций сравнения.

У меня нет слов.

@zloygik @rayslava
Бинарный поиск - он для слабаков.

@[email protected] @[email protected] @[email protected] там даже бинарный поиск не нужен. после сортировки одинаковые элементы оказываются рядом. можно тупо сравнивать два соседних (классика sort|uniq)

@vovanium @zloygik @rayslava
Зависит от ситуации, но в том числе.
Но это всё ещё не для норм пацанов.

@vovanium @zloygik @skobkin @rayslava зачем вообще чето сравнивать и сортировать если можно гарантировать уникальность на этапе создания :/
И почему вообще эти данные хранятся в жсоне а не в каком-нибудь протобуффере?

@lonelyowl @vovanium @zloygik @rayslava
Этап создания - он на сервере. На сервере другие макаки сидят, у них что-нибудь типа JavaScript и они НИЧЕГО ГАРАНТИРОВАТЬ НЕ МОГУТ.

@skobkin @vovanium @zloygik @rayslava дак жс это фронтец (ну, за исключением ноды, но ее вроде не так часто юзают) :/
Ну и в любом случае не вижу проблемы, даже жс не позволяет дублировать ключи обжекта, он его просто перезапишет если такой уже есть.

@lonelyowl @vovanium @zloygik @rayslava

А почему ты думаешь, что там ключи обжекта? 😄
Там просто массив объектов.

@[email protected] @[email protected] @[email protected] @[email protected] «Проверяй входные данные» — первый закон программиста.

@vovanium @zloygik @skobkin @rayslava мне больше нравится "сделай невалидные данные непредставимыми"

@[email protected] @[email protected] @[email protected] @[email protected]
«А давайте просто пронумеруем все возможные входные данные и будем передавать число?»
(Бурные овации в зале)

@rayslava А мы ещё на "долгую" прогрузку менюшки в Siege жалуемся...

@skobkin да у сиджа просто магазин маленький, небось!

Sign in to participate in the conversation
Mastodon

lor.sh is yet another mastodon instance.