讨论:广度优先执行作为深度优先遍历的替代方案
作者: Cellule创建于 2026年3月14日更新于 2026年5月20日
Shopify 最近发布了 Shopify 迈向更快的广度优先 GraphQL 执行,其中详细介绍了比较深度优先和广度优先执行策略的基准测试,用于高卡数量列表查询。该文章特别提到了 graphql-js 作为确立了深度优先模式的规范实现。他们的发现非常重要:对于大型列表查询(例如 250 个产品 × 250 个变体),广度优先执行在其生产环境 Ruby 堆栈中可实现高达 15 倍的执行速度,且内存使用量减少了 90%。核心的启示是,深度优先遍历会将每个字段的开销(解析器设置、仪表盘、承诺分配)乘以列表项的数量,而广度优先执行则在给定深度级别上对每个字段进行 一次 解析,而不进行跨项字段批处理。
内容来源: graphql/graphql-js