Add QP and graph building performance baselines - #1220
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces several new query planning benchmarks along with their corresponding GraphQL schemas and operations as fixtures. The review feedback suggests refactoring the highly duplicated benchmark loop bodies into a helper function to improve readability and maintainability, which aligns with the repository's style guide on avoiding duplicated logic.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| c.bench_function("query_plan_abstract_many_subgraphs", |b| { | ||
| let supergraph_sdl = | ||
| std::fs::read_to_string("./fixture/abstract-many-subgraphs/supergraph.graphql") | ||
| .expect("Unable to read input file"); | ||
| let parsed_schema = parse_schema(&supergraph_sdl); | ||
| let supergraph_state = SupergraphState::new(&parsed_schema); | ||
| let graph = | ||
| Graph::graph_from_supergraph_state(&supergraph_state).expect("failed to create graph"); | ||
|
|
||
| let parsed_document = get_operation("./fixture/abstract-many-subgraphs/operation.graphql"); | ||
| let operation = get_executable_operation( | ||
| &parsed_document, | ||
| &supergraph_state, | ||
| Some("AbstractManySubgraphsBench"), | ||
| ); | ||
| let override_context = PlannerOverrideContext::default(); | ||
|
|
||
| b.iter(|| { | ||
| let bb_graph = black_box(&graph); | ||
| let bb_operation = black_box(&operation); | ||
| let bb_kind = black_box(OperationKind::Query); | ||
| let bb_supergraph_state = black_box(&supergraph_state); | ||
| let bb_override_context = black_box(&override_context); | ||
|
|
||
| let best_paths_per_leaf = walk_operation( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| bb_operation, | ||
| &cancellation_token, | ||
| ) | ||
| .expect("walk_operation failed during benchmark"); | ||
| let query_tree = | ||
| find_best_combination(bb_graph, best_paths_per_leaf, &cancellation_token).unwrap(); | ||
| let fetch_graph = build_fetch_graph_from_query_tree( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| query_tree, | ||
| bb_kind, | ||
| &QueryPlannerOptions::default(), | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| let query_plan = build_query_plan_from_fetch_graph( | ||
| fetch_graph, | ||
| bb_supergraph_state, | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| black_box(query_plan); | ||
| }) | ||
| }); | ||
|
|
||
| c.bench_function("query_plan_heavy_query", |b| { | ||
| let supergraph_sdl = std::fs::read_to_string("./fixture/heavy-query/supergraph.graphql") | ||
| .expect("Unable to read input file"); | ||
| let parsed_schema = parse_schema(&supergraph_sdl); | ||
| let supergraph_state = SupergraphState::new(&parsed_schema); | ||
| let graph = | ||
| Graph::graph_from_supergraph_state(&supergraph_state).expect("failed to create graph"); | ||
|
|
||
| let parsed_document = get_operation("./fixture/heavy-query/operation.graphql"); | ||
| let operation = | ||
| get_executable_operation(&parsed_document, &supergraph_state, Some("TvpVod")); | ||
| let override_context = PlannerOverrideContext::default(); | ||
|
|
||
| b.iter(|| { | ||
| let bb_graph = black_box(&graph); | ||
| let bb_operation = black_box(&operation); | ||
| let bb_kind = black_box(OperationKind::Query); | ||
| let bb_supergraph_state = black_box(&supergraph_state); | ||
| let bb_override_context = black_box(&override_context); | ||
|
|
||
| let best_paths_per_leaf = walk_operation( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| bb_operation, | ||
| &cancellation_token, | ||
| ) | ||
| .expect("walk_operation failed during benchmark"); | ||
| let query_tree = | ||
| find_best_combination(bb_graph, best_paths_per_leaf, &cancellation_token).unwrap(); | ||
| let fetch_graph = build_fetch_graph_from_query_tree( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| query_tree, | ||
| bb_kind, | ||
| &QueryPlannerOptions::default(), | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| let query_plan = build_query_plan_from_fetch_graph( | ||
| fetch_graph, | ||
| bb_supergraph_state, | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| black_box(query_plan); | ||
| }) | ||
| }); | ||
|
|
||
| c.bench_function("query_plan_bfg_1", |b| { | ||
| let supergraph_sdl = std::fs::read_to_string("./fixture/bfg/supergraph.graphql") | ||
| .expect("Unable to read input file"); | ||
| let parsed_schema = parse_schema(&supergraph_sdl); | ||
| let supergraph_state = SupergraphState::new(&parsed_schema); | ||
| let graph = | ||
| Graph::graph_from_supergraph_state(&supergraph_state).expect("failed to create graph"); | ||
|
|
||
| let parsed_document = get_operation("./fixture/bfg/operation-1.graphql"); | ||
| let operation = | ||
| get_executable_operation(&parsed_document, &supergraph_state, Some("Query1")); | ||
| let override_context = PlannerOverrideContext::default(); | ||
|
|
||
| b.iter(|| { | ||
| let bb_graph = black_box(&graph); | ||
| let bb_operation = black_box(&operation); | ||
| let bb_kind = black_box(OperationKind::Query); | ||
| let bb_supergraph_state = black_box(&supergraph_state); | ||
| let bb_override_context = black_box(&override_context); | ||
|
|
||
| let best_paths_per_leaf = walk_operation( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| bb_operation, | ||
| &cancellation_token, | ||
| ) | ||
| .expect("walk_operation failed during benchmark"); | ||
| let query_tree = | ||
| find_best_combination(bb_graph, best_paths_per_leaf, &cancellation_token).unwrap(); | ||
| let fetch_graph = build_fetch_graph_from_query_tree( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| query_tree, | ||
| bb_kind, | ||
| &QueryPlannerOptions::default(), | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| let query_plan = build_query_plan_from_fetch_graph( | ||
| fetch_graph, | ||
| bb_supergraph_state, | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| black_box(query_plan); | ||
| }) | ||
| }); | ||
|
|
||
| c.bench_function("query_plan_bfg_2", |b| { | ||
| let supergraph_sdl = std::fs::read_to_string("./fixture/bfg/supergraph.graphql") | ||
| .expect("Unable to read input file"); | ||
| let parsed_schema = parse_schema(&supergraph_sdl); | ||
| let supergraph_state = SupergraphState::new(&parsed_schema); | ||
| let graph = | ||
| Graph::graph_from_supergraph_state(&supergraph_state).expect("failed to create graph"); | ||
|
|
||
| let parsed_document = get_operation("./fixture/bfg/operation-2.graphql"); | ||
| let operation = | ||
| get_executable_operation(&parsed_document, &supergraph_state, Some("Query2")); | ||
| let override_context = PlannerOverrideContext::default(); | ||
|
|
||
| b.iter(|| { | ||
| let bb_graph = black_box(&graph); | ||
| let bb_operation = black_box(&operation); | ||
| let bb_kind = black_box(OperationKind::Query); | ||
| let bb_supergraph_state = black_box(&supergraph_state); | ||
| let bb_override_context = black_box(&override_context); | ||
|
|
||
| let best_paths_per_leaf = walk_operation( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| bb_operation, | ||
| &cancellation_token, | ||
| ) | ||
| .expect("walk_operation failed during benchmark"); | ||
| let query_tree = | ||
| find_best_combination(bb_graph, best_paths_per_leaf, &cancellation_token).unwrap(); | ||
| let fetch_graph = build_fetch_graph_from_query_tree( | ||
| bb_graph, | ||
| bb_supergraph_state, | ||
| bb_override_context, | ||
| query_tree, | ||
| bb_kind, | ||
| &QueryPlannerOptions::default(), | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| let query_plan = build_query_plan_from_fetch_graph( | ||
| fetch_graph, | ||
| bb_supergraph_state, | ||
| &cancellation_token, | ||
| ) | ||
| .unwrap(); | ||
| black_box(query_plan); | ||
| }) | ||
| }); |
There was a problem hiding this comment.
The newly added benchmark functions contain highly duplicated benchmark loop bodies. We can refactor the duplicated logic into a nested helper function run_query_plan_bench that handles the benchmark iteration. This improves readability and maintainability of the benchmark suite. Note that using .unwrap() is permissible here since this is benchmark/test code with controlled input data.
fn run_query_plan_bench(
b: &mut criterion::Bencher,
graph: &Graph,
supergraph_state: &SupergraphState,
operation: &OperationDefinition,
override_context: &PlannerOverrideContext,
cancellation_token: &CancellationToken,
) {
b.iter(|| {
let bb_graph = black_box(graph);
let bb_operation = black_box(operation);
let bb_kind = black_box(OperationKind::Query);
let bb_supergraph_state = black_box(supergraph_state);
let bb_override_context = black_box(override_context);
let best_paths_per_leaf = walk_operation(
bb_graph,
bb_supergraph_state,
bb_override_context,
bb_operation,
cancellation_token,
)
.unwrap();
let query_tree =
find_best_combination(bb_graph, best_paths_per_leaf, cancellation_token)
.unwrap();
let fetch_graph = build_fetch_graph_from_query_tree(
bb_graph,
bb_supergraph_state,
bb_override_context,
query_tree,
bb_kind,
&QueryPlannerOptions::default(),
cancellation_token,
)
.unwrap();
let query_plan = build_query_plan_from_fetch_graph(
fetch_graph,
bb_supergraph_state,
cancellation_token,
)
.unwrap();
black_box(query_plan);
})
}
c.bench_function("query_plan_abstract_many_subgraphs", |b| {
let supergraph_sdl =
std::fs::read_to_string("./fixture/abstract-many-subgraphs/supergraph.graphql")
.unwrap();
let parsed_schema = parse_schema(&supergraph_sdl);
let supergraph_state = SupergraphState::new(&parsed_schema);
let graph =
Graph::graph_from_supergraph_state(&supergraph_state).unwrap();
let parsed_document = get_operation("./fixture/abstract-many-subgraphs/operation.graphql");
let operation = get_executable_operation(
&parsed_document,
&supergraph_state,
Some("AbstractManySubgraphsBench"),
);
let override_context = PlannerOverrideContext::default();
run_query_plan_bench(
b,
&graph,
&supergraph_state,
&operation,
&override_context,
&cancellation_token,
);
});
c.bench_function("query_plan_heavy_query", |b| {
let supergraph_sdl = std::fs::read_to_string("./fixture/heavy-query/supergraph.graphql")
.unwrap();
let parsed_schema = parse_schema(&supergraph_sdl);
let supergraph_state = SupergraphState::new(&parsed_schema);
let graph =
Graph::graph_from_supergraph_state(&supergraph_state).unwrap();
let parsed_document = get_operation("./fixture/heavy-query/operation.graphql");
let operation =
get_executable_operation(&parsed_document, &supergraph_state, Some("TvpVod"));
let override_context = PlannerOverrideContext::default();
run_query_plan_bench(
b,
&graph,
&supergraph_state,
&operation,
&override_context,
&cancellation_token,
);
});
c.bench_function("query_plan_bfg_1", |b| {
let supergraph_sdl = std::fs::read_to_string("./fixture/bfg/supergraph.graphql")
.unwrap();
let parsed_schema = parse_schema(&supergraph_sdl);
let supergraph_state = SupergraphState::new(&parsed_schema);
let graph =
Graph::graph_from_supergraph_state(&supergraph_state).unwrap();
let parsed_document = get_operation("./fixture/bfg/operation-1.graphql");
let operation =
get_executable_operation(&parsed_document, &supergraph_state, Some("Query1"));
let override_context = PlannerOverrideContext::default();
run_query_plan_bench(
b,
&graph,
&supergraph_state,
&operation,
&override_context,
&cancellation_token,
);
});
c.bench_function("query_plan_bfg_2", |b| {
let supergraph_sdl = std::fs::read_to_string("./fixture/bfg/supergraph.graphql")
.unwrap();
let parsed_schema = parse_schema(&supergraph_sdl);
let supergraph_state = SupergraphState::new(&parsed_schema);
let graph =
Graph::graph_from_supergraph_state(&supergraph_state).unwrap();
let parsed_document = get_operation("./fixture/bfg/operation-2.graphql");
let operation =
get_executable_operation(&parsed_document, &supergraph_state, Some("Query2"));
let override_context = PlannerOverrideContext::default();
run_query_plan_bench(
b,
&graph,
&supergraph_state,
&operation,
&override_context,
&cancellation_token,
);
});References
- Rule E: Large monolithic functions or duplicated logic should be split into focused helpers. (link)
- In tests, using unwrap() is permissible if the test data is controlled, as the developer can ensure that the operation will not panic.
|
🐋 This PR was built and pushed to the following Docker images: Image Names: Platforms: Image Tags: Docker metadata{
"buildx.build.provenance/linux/amd64": {
"builder": {
"id": "https://github.com/graphql-hive/router/actions/runs/28443185592/attempts/1"
},
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/docker/dockerfile@1.22",
"digest": {
"sha256": "4a43a54dd1fedceb30ba47e76cfcf2b47304f4161c0caeac2db1c61804ea3c91"
}
},
{
"uri": "pkg:docker/gcr.io/distroless/cc-debian12@latest?platform=linux%2Famd64",
"digest": {
"sha256": "d703b626ba455c4e6c6fbe5f36e6f427c85d51445598d564652a2f334179f96e"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "router.Dockerfile"
},
"parameters": {
"frontend": "gateway.v0",
"args": {
"cmdline": "docker/dockerfile:1.22",
"label:org.opencontainers.image.created": "2026-06-30T12:31:54.769Z",
"label:org.opencontainers.image.description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"label:org.opencontainers.image.licenses": "MIT",
"label:org.opencontainers.image.revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"label:org.opencontainers.image.source": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.title": "router",
"label:org.opencontainers.image.url": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.vendor": "theguild",
"label:org.opencontainers.image.version": "pr-1220",
"source": "docker/dockerfile:1.22"
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
],
"root": {
"configSource": {
"path": "router.Dockerfile"
},
"request": {
"args": {
"label:org.opencontainers.image.created": "2026-06-30T12:31:54.769Z",
"label:org.opencontainers.image.description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"label:org.opencontainers.image.licenses": "MIT",
"label:org.opencontainers.image.revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"label:org.opencontainers.image.source": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.title": "router",
"label:org.opencontainers.image.url": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.vendor": "theguild",
"label:org.opencontainers.image.version": "pr-1220",
"vcs:localdir:context": ".",
"vcs:localdir:dockerfile": "docker",
"vcs:revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"vcs:source": "https://github.com/graphql-hive/router"
}
}
},
"compatibilityVersion": 20
},
"environment": {
"github_actor": "kamilkisiela",
"github_actor_id": "8167190",
"github_event_name": "pull_request",
"github_event_payload": {
"action": "opened",
"enterprise": {
"avatar_url": "https://avatars.githubusercontent.com/b/187753?v=4",
"created_at": "2024-07-02T08:52:28Z",
"description": "",
"html_url": "https://github.com/enterprises/the-guild",
"id": 187753,
"name": "The Guild",
"node_id": "E_kgDOAALdaQ",
"slug": "the-guild",
"updated_at": "2026-06-11T22:23:13Z",
"website_url": "https://the-guild.dev/"
},
"number": 1220,
"organization": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"description": "Schema registry, analytics and gateway for GraphQL federation and other GraphQL APIs.",
"events_url": "https://api.github.com/orgs/graphql-hive/events",
"hooks_url": "https://api.github.com/orgs/graphql-hive/hooks",
"id": 182742256,
"issues_url": "https://api.github.com/orgs/graphql-hive/issues",
"login": "graphql-hive",
"members_url": "https://api.github.com/orgs/graphql-hive/members{/member}",
"node_id": "O_kgDOCuRs8A",
"public_members_url": "https://api.github.com/orgs/graphql-hive/public_members{/member}",
"repos_url": "https://api.github.com/orgs/graphql-hive/repos",
"url": "https://api.github.com/orgs/graphql-hive"
},
"pull_request": {
"_links": {
"comments": {
"href": "https://api.github.com/repos/graphql-hive/router/issues/1220/comments"
},
"commits": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220/commits"
},
"html": {
"href": "https://github.com/graphql-hive/router/pull/1220"
},
"issue": {
"href": "https://api.github.com/repos/graphql-hive/router/issues/1220"
},
"review_comment": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/comments{/number}"
},
"review_comments": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220/comments"
},
"self": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220"
},
"statuses": {
"href": "https://api.github.com/repos/graphql-hive/router/statuses/fcdcae94ee5691c1097ccb42c6d375083ea1c963"
}
},
"active_lock_reason": null,
"additions": 544020,
"assignee": null,
"assignees": [],
"author_association": "CONTRIBUTOR",
"auto_merge": null,
"base": {
"label": "graphql-hive:main",
"ref": "main",
"repo": {
"allow_auto_merge": false,
"allow_forking": true,
"allow_merge_commit": false,
"allow_rebase_merge": false,
"allow_squash_merge": true,
"allow_update_branch": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"default_branch": "main",
"delete_branch_on_merge": true,
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE",
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"squash_merge_commit_message": "PR_BODY",
"squash_merge_commit_title": "PR_TITLE",
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"use_squash_pr_title_as_default": true,
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sha": "803fa73b1b8fe990e1c508aad19cf88e0fe1209e",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
}
},
"body": "Some benchmarks here will either take 16 minutes or never end, but it's the PR number 1 that I will use as the umbrella for step-by-step fixes and improvements.\r\n\r\nThings that take 15-20-30 minutes will take 10ms at the end (on my machine though).",
"changed_files": 8,
"closed_at": null,
"comments": 0,
"comments_url": "https://api.github.com/repos/graphql-hive/router/issues/1220/comments",
"commits": 1,
"commits_url": "https://api.github.com/repos/graphql-hive/router/pulls/1220/commits",
"created_at": "2026-06-30T12:09:23Z",
"deletions": 0,
"diff_url": "https://github.com/graphql-hive/router/pull/1220.diff",
"draft": true,
"head": {
"label": "graphql-hive:kamil-heavy-qp-benchmarks",
"ref": "kamil-heavy-qp-benchmarks",
"repo": {
"allow_auto_merge": false,
"allow_forking": true,
"allow_merge_commit": false,
"allow_rebase_merge": false,
"allow_squash_merge": true,
"allow_update_branch": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"default_branch": "main",
"delete_branch_on_merge": true,
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE",
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"squash_merge_commit_message": "PR_BODY",
"squash_merge_commit_title": "PR_TITLE",
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"use_squash_pr_title_as_default": true,
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sha": "fcdcae94ee5691c1097ccb42c6d375083ea1c963",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
}
},
"html_url": "https://github.com/graphql-hive/router/pull/1220",
"id": 3963010943,
"issue_url": "https://api.github.com/repos/graphql-hive/router/issues/1220",
"labels": [],
"locked": false,
"maintainer_can_modify": false,
"merge_commit_sha": null,
"mergeable": null,
"mergeable_state": "unknown",
"merged": false,
"merged_at": null,
"merged_by": null,
"milestone": null,
"node_id": "PR_kwDONSTNFM7sNr9_",
"number": 1220,
"patch_url": "https://github.com/graphql-hive/router/pull/1220.patch",
"rebaseable": null,
"requested_reviewers": [],
"requested_teams": [],
"review_comment_url": "https://api.github.com/repos/graphql-hive/router/pulls/comments{/number}",
"review_comments": 0,
"review_comments_url": "https://api.github.com/repos/graphql-hive/router/pulls/1220/comments",
"state": "open",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/fcdcae94ee5691c1097ccb42c6d375083ea1c963",
"title": "Add QP and graph building performance baselines",
"updated_at": "2026-06-30T12:09:23Z",
"url": "https://api.github.com/repos/graphql-hive/router/pulls/1220",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/8167190?v=4",
"events_url": "https://api.github.com/users/kamilkisiela/events{/privacy}",
"followers_url": "https://api.github.com/users/kamilkisiela/followers",
"following_url": "https://api.github.com/users/kamilkisiela/following{/other_user}",
"gists_url": "https://api.github.com/users/kamilkisiela/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/kamilkisiela",
"id": 8167190,
"login": "kamilkisiela",
"node_id": "MDQ6VXNlcjgxNjcxOTA=",
"organizations_url": "https://api.github.com/users/kamilkisiela/orgs",
"received_events_url": "https://api.github.com/users/kamilkisiela/received_events",
"repos_url": "https://api.github.com/users/kamilkisiela/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/kamilkisiela/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kamilkisiela/subscriptions",
"type": "User",
"url": "https://api.github.com/users/kamilkisiela",
"user_view_type": "public"
}
},
"repository": {
"allow_forking": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"custom_properties": {
"vanta_production_branch_name": "main"
},
"default_branch": "main",
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sender": {
"avatar_url": "https://avatars.githubusercontent.com/u/8167190?v=4",
"events_url": "https://api.github.com/users/kamilkisiela/events{/privacy}",
"followers_url": "https://api.github.com/users/kamilkisiela/followers",
"following_url": "https://api.github.com/users/kamilkisiela/following{/other_user}",
"gists_url": "https://api.github.com/users/kamilkisiela/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/kamilkisiela",
"id": 8167190,
"login": "kamilkisiela",
"node_id": "MDQ6VXNlcjgxNjcxOTA=",
"organizations_url": "https://api.github.com/users/kamilkisiela/orgs",
"received_events_url": "https://api.github.com/users/kamilkisiela/received_events",
"repos_url": "https://api.github.com/users/kamilkisiela/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/kamilkisiela/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kamilkisiela/subscriptions",
"type": "User",
"url": "https://api.github.com/users/kamilkisiela",
"user_view_type": "public"
}
},
"github_job": "docker",
"github_ref": "refs/pull/1220/merge",
"github_ref_name": "1220/merge",
"github_ref_protected": "false",
"github_ref_type": "branch",
"github_repository": "graphql-hive/router",
"github_repository_id": "891604244",
"github_repository_owner": "graphql-hive",
"github_repository_owner_id": "182742256",
"github_run_attempt": "1",
"github_run_id": "28443185592",
"github_run_number": "4090",
"github_runner_arch": "X64",
"github_runner_environment": "github-hosted",
"github_runner_image_os": "ubuntu24",
"github_runner_image_version": "20260622.220.1",
"github_runner_name": "GitHub Actions 1000889994",
"github_runner_os": "Linux",
"github_runner_tracking_id": "github_ea515e07-836c-434d-9962-53e04431ef59",
"github_server_url": "https://github.com",
"github_triggering_actor": "kamilkisiela",
"github_workflow": "build-router",
"github_workflow_ref": "graphql-hive/router/.github/workflows/build-router.yaml@refs/pull/1220/merge",
"github_workflow_sha": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"platform": "linux/amd64"
}
}
},
"buildx.build.provenance/linux/arm64": {
"builder": {
"id": "https://github.com/graphql-hive/router/actions/runs/28443185592/attempts/1"
},
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/docker/dockerfile@1.22",
"digest": {
"sha256": "4a43a54dd1fedceb30ba47e76cfcf2b47304f4161c0caeac2db1c61804ea3c91"
}
},
{
"uri": "pkg:docker/gcr.io/distroless/cc-debian12@latest?platform=linux%2Farm64",
"digest": {
"sha256": "d703b626ba455c4e6c6fbe5f36e6f427c85d51445598d564652a2f334179f96e"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "router.Dockerfile"
},
"parameters": {
"frontend": "gateway.v0",
"args": {
"cmdline": "docker/dockerfile:1.22",
"label:org.opencontainers.image.created": "2026-06-30T12:31:54.769Z",
"label:org.opencontainers.image.description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"label:org.opencontainers.image.licenses": "MIT",
"label:org.opencontainers.image.revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"label:org.opencontainers.image.source": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.title": "router",
"label:org.opencontainers.image.url": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.vendor": "theguild",
"label:org.opencontainers.image.version": "pr-1220",
"source": "docker/dockerfile:1.22"
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
],
"root": {
"configSource": {
"path": "router.Dockerfile"
},
"request": {
"args": {
"label:org.opencontainers.image.created": "2026-06-30T12:31:54.769Z",
"label:org.opencontainers.image.description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"label:org.opencontainers.image.licenses": "MIT",
"label:org.opencontainers.image.revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"label:org.opencontainers.image.source": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.title": "router",
"label:org.opencontainers.image.url": "https://github.com/graphql-hive/router",
"label:org.opencontainers.image.vendor": "theguild",
"label:org.opencontainers.image.version": "pr-1220",
"vcs:localdir:context": ".",
"vcs:localdir:dockerfile": "docker",
"vcs:revision": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"vcs:source": "https://github.com/graphql-hive/router"
}
}
},
"compatibilityVersion": 20
},
"environment": {
"github_actor": "kamilkisiela",
"github_actor_id": "8167190",
"github_event_name": "pull_request",
"github_event_payload": {
"action": "opened",
"enterprise": {
"avatar_url": "https://avatars.githubusercontent.com/b/187753?v=4",
"created_at": "2024-07-02T08:52:28Z",
"description": "",
"html_url": "https://github.com/enterprises/the-guild",
"id": 187753,
"name": "The Guild",
"node_id": "E_kgDOAALdaQ",
"slug": "the-guild",
"updated_at": "2026-06-11T22:23:13Z",
"website_url": "https://the-guild.dev/"
},
"number": 1220,
"organization": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"description": "Schema registry, analytics and gateway for GraphQL federation and other GraphQL APIs.",
"events_url": "https://api.github.com/orgs/graphql-hive/events",
"hooks_url": "https://api.github.com/orgs/graphql-hive/hooks",
"id": 182742256,
"issues_url": "https://api.github.com/orgs/graphql-hive/issues",
"login": "graphql-hive",
"members_url": "https://api.github.com/orgs/graphql-hive/members{/member}",
"node_id": "O_kgDOCuRs8A",
"public_members_url": "https://api.github.com/orgs/graphql-hive/public_members{/member}",
"repos_url": "https://api.github.com/orgs/graphql-hive/repos",
"url": "https://api.github.com/orgs/graphql-hive"
},
"pull_request": {
"_links": {
"comments": {
"href": "https://api.github.com/repos/graphql-hive/router/issues/1220/comments"
},
"commits": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220/commits"
},
"html": {
"href": "https://github.com/graphql-hive/router/pull/1220"
},
"issue": {
"href": "https://api.github.com/repos/graphql-hive/router/issues/1220"
},
"review_comment": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/comments{/number}"
},
"review_comments": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220/comments"
},
"self": {
"href": "https://api.github.com/repos/graphql-hive/router/pulls/1220"
},
"statuses": {
"href": "https://api.github.com/repos/graphql-hive/router/statuses/fcdcae94ee5691c1097ccb42c6d375083ea1c963"
}
},
"active_lock_reason": null,
"additions": 544020,
"assignee": null,
"assignees": [],
"author_association": "CONTRIBUTOR",
"auto_merge": null,
"base": {
"label": "graphql-hive:main",
"ref": "main",
"repo": {
"allow_auto_merge": false,
"allow_forking": true,
"allow_merge_commit": false,
"allow_rebase_merge": false,
"allow_squash_merge": true,
"allow_update_branch": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"default_branch": "main",
"delete_branch_on_merge": true,
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE",
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"squash_merge_commit_message": "PR_BODY",
"squash_merge_commit_title": "PR_TITLE",
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"use_squash_pr_title_as_default": true,
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sha": "803fa73b1b8fe990e1c508aad19cf88e0fe1209e",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
}
},
"body": "Some benchmarks here will either take 16 minutes or never end, but it's the PR number 1 that I will use as the umbrella for step-by-step fixes and improvements.\r\n\r\nThings that take 15-20-30 minutes will take 10ms at the end (on my machine though).",
"changed_files": 8,
"closed_at": null,
"comments": 0,
"comments_url": "https://api.github.com/repos/graphql-hive/router/issues/1220/comments",
"commits": 1,
"commits_url": "https://api.github.com/repos/graphql-hive/router/pulls/1220/commits",
"created_at": "2026-06-30T12:09:23Z",
"deletions": 0,
"diff_url": "https://github.com/graphql-hive/router/pull/1220.diff",
"draft": true,
"head": {
"label": "graphql-hive:kamil-heavy-qp-benchmarks",
"ref": "kamil-heavy-qp-benchmarks",
"repo": {
"allow_auto_merge": false,
"allow_forking": true,
"allow_merge_commit": false,
"allow_rebase_merge": false,
"allow_squash_merge": true,
"allow_update_branch": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"default_branch": "main",
"delete_branch_on_merge": true,
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merge_commit_message": "PR_TITLE",
"merge_commit_title": "MERGE_MESSAGE",
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"squash_merge_commit_message": "PR_BODY",
"squash_merge_commit_title": "PR_TITLE",
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"use_squash_pr_title_as_default": true,
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sha": "fcdcae94ee5691c1097ccb42c6d375083ea1c963",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
}
},
"html_url": "https://github.com/graphql-hive/router/pull/1220",
"id": 3963010943,
"issue_url": "https://api.github.com/repos/graphql-hive/router/issues/1220",
"labels": [],
"locked": false,
"maintainer_can_modify": false,
"merge_commit_sha": null,
"mergeable": null,
"mergeable_state": "unknown",
"merged": false,
"merged_at": null,
"merged_by": null,
"milestone": null,
"node_id": "PR_kwDONSTNFM7sNr9_",
"number": 1220,
"patch_url": "https://github.com/graphql-hive/router/pull/1220.patch",
"rebaseable": null,
"requested_reviewers": [],
"requested_teams": [],
"review_comment_url": "https://api.github.com/repos/graphql-hive/router/pulls/comments{/number}",
"review_comments": 0,
"review_comments_url": "https://api.github.com/repos/graphql-hive/router/pulls/1220/comments",
"state": "open",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/fcdcae94ee5691c1097ccb42c6d375083ea1c963",
"title": "Add QP and graph building performance baselines",
"updated_at": "2026-06-30T12:09:23Z",
"url": "https://api.github.com/repos/graphql-hive/router/pulls/1220",
"user": {
"avatar_url": "https://avatars.githubusercontent.com/u/8167190?v=4",
"events_url": "https://api.github.com/users/kamilkisiela/events{/privacy}",
"followers_url": "https://api.github.com/users/kamilkisiela/followers",
"following_url": "https://api.github.com/users/kamilkisiela/following{/other_user}",
"gists_url": "https://api.github.com/users/kamilkisiela/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/kamilkisiela",
"id": 8167190,
"login": "kamilkisiela",
"node_id": "MDQ6VXNlcjgxNjcxOTA=",
"organizations_url": "https://api.github.com/users/kamilkisiela/orgs",
"received_events_url": "https://api.github.com/users/kamilkisiela/received_events",
"repos_url": "https://api.github.com/users/kamilkisiela/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/kamilkisiela/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kamilkisiela/subscriptions",
"type": "User",
"url": "https://api.github.com/users/kamilkisiela",
"user_view_type": "public"
}
},
"repository": {
"allow_forking": true,
"archive_url": "https://api.github.com/repos/graphql-hive/router/{archive_format}{/ref}",
"archived": false,
"assignees_url": "https://api.github.com/repos/graphql-hive/router/assignees{/user}",
"blobs_url": "https://api.github.com/repos/graphql-hive/router/git/blobs{/sha}",
"branches_url": "https://api.github.com/repos/graphql-hive/router/branches{/branch}",
"clone_url": "https://github.com/graphql-hive/router.git",
"collaborators_url": "https://api.github.com/repos/graphql-hive/router/collaborators{/collaborator}",
"comments_url": "https://api.github.com/repos/graphql-hive/router/comments{/number}",
"commits_url": "https://api.github.com/repos/graphql-hive/router/commits{/sha}",
"compare_url": "https://api.github.com/repos/graphql-hive/router/compare/{base}...{head}",
"contents_url": "https://api.github.com/repos/graphql-hive/router/contents/{+path}",
"contributors_url": "https://api.github.com/repos/graphql-hive/router/contributors",
"created_at": "2024-11-20T16:16:12Z",
"custom_properties": {
"vanta_production_branch_name": "main"
},
"default_branch": "main",
"deployments_url": "https://api.github.com/repos/graphql-hive/router/deployments",
"description": "Open-source (MIT) GraphQL Federation Router. Built with Rust for maximum performance and robustness.",
"disabled": false,
"downloads_url": "https://api.github.com/repos/graphql-hive/router/downloads",
"events_url": "https://api.github.com/repos/graphql-hive/router/events",
"fork": false,
"forks": 15,
"forks_count": 15,
"forks_url": "https://api.github.com/repos/graphql-hive/router/forks",
"full_name": "graphql-hive/router",
"git_commits_url": "https://api.github.com/repos/graphql-hive/router/git/commits{/sha}",
"git_refs_url": "https://api.github.com/repos/graphql-hive/router/git/refs{/sha}",
"git_tags_url": "https://api.github.com/repos/graphql-hive/router/git/tags{/sha}",
"git_url": "git://github.com/graphql-hive/router.git",
"has_discussions": false,
"has_downloads": true,
"has_issues": true,
"has_pages": false,
"has_projects": false,
"has_pull_requests": true,
"has_wiki": false,
"homepage": "https://the-guild.dev/graphql/hive/docs/router",
"hooks_url": "https://api.github.com/repos/graphql-hive/router/hooks",
"html_url": "https://github.com/graphql-hive/router",
"id": 891604244,
"is_template": false,
"issue_comment_url": "https://api.github.com/repos/graphql-hive/router/issues/comments{/number}",
"issue_events_url": "https://api.github.com/repos/graphql-hive/router/issues/events{/number}",
"issues_url": "https://api.github.com/repos/graphql-hive/router/issues{/number}",
"keys_url": "https://api.github.com/repos/graphql-hive/router/keys{/key_id}",
"labels_url": "https://api.github.com/repos/graphql-hive/router/labels{/name}",
"language": "Rust",
"languages_url": "https://api.github.com/repos/graphql-hive/router/languages",
"license": {
"key": "mit",
"name": "MIT License",
"node_id": "MDc6TGljZW5zZTEz",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit"
},
"merges_url": "https://api.github.com/repos/graphql-hive/router/merges",
"milestones_url": "https://api.github.com/repos/graphql-hive/router/milestones{/number}",
"mirror_url": null,
"name": "router",
"node_id": "R_kgDONSTNFA",
"notifications_url": "https://api.github.com/repos/graphql-hive/router/notifications{?since,all,participating}",
"open_issues": 60,
"open_issues_count": 60,
"owner": {
"avatar_url": "https://avatars.githubusercontent.com/u/182742256?v=4",
"events_url": "https://api.github.com/users/graphql-hive/events{/privacy}",
"followers_url": "https://api.github.com/users/graphql-hive/followers",
"following_url": "https://api.github.com/users/graphql-hive/following{/other_user}",
"gists_url": "https://api.github.com/users/graphql-hive/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/graphql-hive",
"id": 182742256,
"login": "graphql-hive",
"node_id": "O_kgDOCuRs8A",
"organizations_url": "https://api.github.com/users/graphql-hive/orgs",
"received_events_url": "https://api.github.com/users/graphql-hive/received_events",
"repos_url": "https://api.github.com/users/graphql-hive/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/graphql-hive/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/graphql-hive/subscriptions",
"type": "Organization",
"url": "https://api.github.com/users/graphql-hive",
"user_view_type": "public"
},
"private": false,
"pull_request_creation_policy": "all",
"pulls_url": "https://api.github.com/repos/graphql-hive/router/pulls{/number}",
"pushed_at": "2026-06-30T12:07:30Z",
"releases_url": "https://api.github.com/repos/graphql-hive/router/releases{/id}",
"size": 8479,
"ssh_url": "git@github.com:graphql-hive/router.git",
"stargazers_count": 91,
"stargazers_url": "https://api.github.com/repos/graphql-hive/router/stargazers",
"statuses_url": "https://api.github.com/repos/graphql-hive/router/statuses/{sha}",
"subscribers_url": "https://api.github.com/repos/graphql-hive/router/subscribers",
"subscription_url": "https://api.github.com/repos/graphql-hive/router/subscription",
"svn_url": "https://github.com/graphql-hive/router",
"tags_url": "https://api.github.com/repos/graphql-hive/router/tags",
"teams_url": "https://api.github.com/repos/graphql-hive/router/teams",
"topics": [
"apollo-federation",
"federation",
"federation-gateway",
"graphql",
"graphql-federation",
"router"
],
"trees_url": "https://api.github.com/repos/graphql-hive/router/git/trees{/sha}",
"updated_at": "2026-06-30T11:26:47Z",
"url": "https://api.github.com/repos/graphql-hive/router",
"visibility": "public",
"watchers": 91,
"watchers_count": 91,
"web_commit_signoff_required": false
},
"sender": {
"avatar_url": "https://avatars.githubusercontent.com/u/8167190?v=4",
"events_url": "https://api.github.com/users/kamilkisiela/events{/privacy}",
"followers_url": "https://api.github.com/users/kamilkisiela/followers",
"following_url": "https://api.github.com/users/kamilkisiela/following{/other_user}",
"gists_url": "https://api.github.com/users/kamilkisiela/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/kamilkisiela",
"id": 8167190,
"login": "kamilkisiela",
"node_id": "MDQ6VXNlcjgxNjcxOTA=",
"organizations_url": "https://api.github.com/users/kamilkisiela/orgs",
"received_events_url": "https://api.github.com/users/kamilkisiela/received_events",
"repos_url": "https://api.github.com/users/kamilkisiela/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/kamilkisiela/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kamilkisiela/subscriptions",
"type": "User",
"url": "https://api.github.com/users/kamilkisiela",
"user_view_type": "public"
}
},
"github_job": "docker",
"github_ref": "refs/pull/1220/merge",
"github_ref_name": "1220/merge",
"github_ref_protected": "false",
"github_ref_type": "branch",
"github_repository": "graphql-hive/router",
"github_repository_id": "891604244",
"github_repository_owner": "graphql-hive",
"github_repository_owner_id": "182742256",
"github_run_attempt": "1",
"github_run_id": "28443185592",
"github_run_number": "4090",
"github_runner_arch": "X64",
"github_runner_environment": "github-hosted",
"github_runner_image_os": "ubuntu24",
"github_runner_image_version": "20260622.220.1",
"github_runner_name": "GitHub Actions 1000889994",
"github_runner_os": "Linux",
"github_runner_tracking_id": "github_ea515e07-836c-434d-9962-53e04431ef59",
"github_server_url": "https://github.com",
"github_triggering_actor": "kamilkisiela",
"github_workflow": "build-router",
"github_workflow_ref": "graphql-hive/router/.github/workflows/build-router.yaml@refs/pull/1220/merge",
"github_workflow_sha": "f0d6600d1655f8c287b8afc613b758e5f85d1880",
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "builder-b7de30df-3009-4462-865e-7165bd8b8e8d/builder-b7de30df-3009-4462-865e-7165bd8b8e8d0/84m7w3v92bj890vhyr0iyhyd9",
"containerimage.descriptor": {
"mediaType": "application/vnd.oci.image.index.v1+json",
"digest": "sha256:31401a43084d79e398367c4c37070614143511f6a05976feb86085af2c242c08",
"size": 1609
},
"containerimage.digest": "sha256:31401a43084d79e398367c4c37070614143511f6a05976feb86085af2c242c08",
"image.name": "ghcr.io/graphql-hive/router:pr-1220,ghcr.io/graphql-hive/router:sha-f0d6600"
} |
Some benchmarks here will either take 16 minutes or never end, but it's the PR number 1 that I will use as the umbrella for step-by-step fixes and improvements.
Things that take 15-20-30 minutes will take 10ms at the end (on my machine though).