graphql-python
graphql-core
BlogDocsChangelog

7: Convert AST nodes to frozen dataclasses (70% faster decode, 40% faster parsing)

#256Merged
Comparing
corydolphin:convert-ast-to-dataclasses
(
c04825e
) with
main
(
020ec1f
)
CodSpeed Performance Gauge
-23%
Improvements
5
Regressions
1
Untouched
12

Benchmarks

Failed

test_validate_introspection_query
tests/benchmarks/test_validate_gql.py
Regression
CodSpeed Performance Gauge
-23%
15 ms19.6 ms

Improved

test_pickle_large_query_decode
tests/benchmarks/test_serialization.py
CodSpeed Performance Gauge
×5
207.9 ms41.6 ms
test_pickle_large_query_roundtrip
tests/benchmarks/test_serialization.py
CodSpeed Performance Gauge
×3.3
317.9 ms97.1 ms
test_pickle_large_query_encode
tests/benchmarks/test_serialization.py
CodSpeed Performance Gauge
+98%
110.6 ms55.9 ms
test_parse_large_query
tests/benchmarks/test_serialization.py
CodSpeed Performance Gauge
+76%
419.7 ms238.1 ms
test_parse_kitchen_sink
tests/benchmarks/test_parser.py
CodSpeed Performance Gauge
+59%
6.8 ms4.3 ms

Passed

test_build_schema_from_introspection
tests/benchmarks/test_build_client_schema.py
CodSpeed Performance Gauge
+2%
115.9 ms113.9 ms
test_execute_basic_sync
tests/benchmarks/test_execution_sync.py
CodSpeed Performance Gauge
+2%
2.6 ms2.5 ms
test_execute_basic_async
tests/benchmarks/test_execution_async.py
CodSpeed Performance Gauge
+1%
2.7 ms2.7 ms
test_recreate_a_graphql_schema
tests/benchmarks/test_graphql_schema.py
CodSpeed Performance Gauge
+1%
12.8 ms12.7 ms
test_execute_async_iterable_list_field
tests/benchmarks/test_async_iterable.py
CodSpeed Performance Gauge
0%
13.4 ms13.4 ms
test_visit_all_ast_nodes_in_parallel
tests/benchmarks/test_visit.py
CodSpeed Performance Gauge
0%
1.6 s1.6 s
test_visit_all_ast_nodes
tests/benchmarks/test_visit.py
CodSpeed Performance Gauge
0%
201.5 ms201.6 ms
test_validate_sdl_document
tests/benchmarks/test_validate_sdl.py
CodSpeed Performance Gauge
0%
426.7 ms427.8 ms
test_validate_invalid_query
tests/benchmarks/test_validate_invalid_gql.py
CodSpeed Performance Gauge
0%
99.7 ms100 ms
test_execute_introspection_query
tests/benchmarks/test_introspection_from_schema.py
CodSpeed Performance Gauge
-1%
914.8 ms919.7 ms
test_build_schema_from_ast
tests/benchmarks/test_build_ast_schema.py
CodSpeed Performance Gauge
-1%
104.7 ms106 ms
test_many_repeated_fields
tests/benchmarks/test_repeated_fields.py
CodSpeed Performance Gauge
-5%
265.5 ms280.1 ms

Commits

Click on a commit to change the comparison range
Base
main
020ec1f
-23.61%
Convert AST nodes to frozen dataclasses (70% faster decode, 40% faster parsing) Refactor all of the GraphQL AST Nodes to use Python dataclasses to provide better type safety, immutability guarantees, and cleaner code while maintaining backwards compatibility with existing APIs. Benchmark comparison (837f604 base vs dataclasses): | Benchmark | Base | Dataclass | Change | |---------------------------------|--------|------------|-----------------| | test_parse_large_query | 33,108 | 18,689 | 44% faster | | test_parse_kitchen_sink | 577 | 361 | 37% faster | | test_pickle_large_query_decode | 18,520 | 5,549 | 70% faster (3x) | | test_pickle_large_query_encode | 9,038 | 4,117 | 54% faster (2x) | | test_pickle_large_query_round | 28,048 | 10,206 | 64% faster (3x) | | test_many_repeated_fields | 15,918 | 14,909 | 6% faster | | test_execute_basic_sync | 310 | 292 | 6% faster | | test_execute_basic_async | 354 | 338 | 5% faster |
6e52ed0
4 days ago
by corydolphin
+0.18%
Merge branch 'main' into convert-ast-to-dataclasses
c04825e
2 days ago
by Cito
© 2026 CodSpeed Technology
Home Terms Privacy Docs