Size: a a a

GraphQL — русскоговорящее сообщество

2019 June 26

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
1) в этой либе я вообще не увидел джита
2) что за строковое тело функции? кодогенерация чтоль?
3) делается вызываемая функция? эвеал чтоли из строки тела функции? какой функции?
4) почему результат эвала кладётся в кеш?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
чот короче фигня какая-то
источник

AK

Anton Kuzmin in GraphQL — русскоговорящее сообщество
1. Кодогенерация
2. New Function(bodyFunction)
3. Полученная функция кладётся в мапу по ключу тела query
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
1. кодогенерация - это не jit
2. это эвал, который даже не джитися внутри v8
3. обычная мемоизация
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
так в чём вопрос-то?
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
хотя мб что-то поемнялось и new Function уже может компилиться
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
но eval точно нет
источник

AK

Anton Kuzmin in GraphQL — русскоговорящее сообщество
Вопрос в том, сталкивался ли кто с этим) либа работает - я вижу ускорение в 2.5 раза в кластере. Но в прод как то опасно с этим ехать)
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
судя по коду - она делает тоже самое, что и препейред статментс
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
или как там это называется у фейсбука
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
короче, преподготовленные запросы
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
но они не заранее просчитываются, а в рантайме
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Ну т.е. с таким же успехом можно было самому это всё написать.
Всё что нужно - это проанализировать запрос и сложить его план в кеш.
источник

AK

Anton Kuzmin in GraphQL — русскоговорящее сообщество
Вот человек и написал
источник

AK

Anton Kuzmin in GraphQL — русскоговорящее сообщество
Могу скрин профилировщика выслать - там видно что план выполнения очень сильно отличается от референсной graphql-js
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
да я не спорю
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
парсер у gql написан через одно место, плюс семантический анализ
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
так что кеширование этой стадии с пропуском вполне себе может ускорить всё это
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Я так же поступаю с бекендовой частью. Схема после прогрева и резолва типов тупо складывается в кеш и всё.
источник