Генерация схемы GraphQL

Я создаю схему graphQL, используя аннотации Java. Благодаря библиотеке graphql-spqr. Я вызываю код для

GraphQLSchemaGenerator schemaGenerator = new GraphQLSchemaGenerator()
            .withResolverBuilders(new AnnotatedResolverBuilder())
            .withValueMapperFactory(new JacksonValueMapperFactory())
            .withOperationsFromSingleton(<annotatedClassObject>);
GraphQLSchema schema = schemaGenerator.generate();

Приведенный выше код выполняется для каждого вызова API graphQL. Я знаю, что в библиотеке Java GraphQL задокументирована строка ниже.

/** Building this object is very cheap and can be done on each 
  * execution * if necessary.  Building the schema is often not
  * as cheap, especially if its parsed from graphql IDL schema 
  * format via {@link graphql.schema.idl.SchemaParser}.
 */

Можно ли как-то собрать данные о том, сколько времени занимает каждый вызов для создания этой схемы?


person Manav Bhanot    schedule 17.04.2018    source источник


Ответы (1)


Я автор graphql-spqr. Что я могу вам сказать, так это то, что вы определенно не должны не вызывать это для каждого запроса. То, на что ссылается документация graphql-java, — это объект GraphQL, который действительно дешев в создании, но схема — нет. SPQR сканирует всю вашу иерархию классов при создании схемы, и в общем случае это довольно дорого.

Каков именно ваш вариант использования? Зачем вам создавать новый экземпляр схемы при каждом вызове? Чего бы вы ни пытались достичь — почти наверняка есть лучший способ.

Что касается измерения времени, вы можете использовать JMH (Java Microbenchmark Harness) .

person kaqqao    schedule 22.04.2018