Commit 6e52ed0
committed
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 |1 parent 505d347 commit 6e52ed0
File tree
5 files changed
+355
-328
lines changed- src/graphql/language
- tests/language
5 files changed
+355
-328
lines changed
0 commit comments