feat: kotlinx serialization for GraphQLServerRequest -- cherry pick (#1937) #1944
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Switch from
jackson
tokotlinx.serialization
for serialization/deserialization ofGraphQLServerRequest
types.After running benchmarks we where able to identify that deserializing
GraphQLServerRequest
withkotlinx.serialization
is quite faster than doing it withjackson
, the reason ? possibly because jackson relies on reflections to identify deserialization process.On the other hand, serialization/deserialization of
GraphQLServerReponse
type is still faster if done withjackson
, possibly because of howkotlinx.serialization
library was designed and the poor support for serializingAny
type:Kotlin/kotlinx.serialization#296, which causes a lot of memory comsumption.
As part of this PR also including the benchmarks. For that, i created a separate set of types that are marked with both
jackson
andkotlinx.serialization
annotations.Benchmarks results:
Executed on a MacBookPro 2.6 GHz 6-Core Intel Core i7.
GraphQLBatchRequest
4 batched operations, each operation is aprox: 30kb
GraphQLRequest
GraphQLBatchResponse
GraphQLResponse
📝 Description
🔗 Related Issues