Skip to content

Commit c523396

Browse files
committed
add benchmark
1 parent b0add3b commit c523396

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { execute } from 'graphql/execution/execute.js';
2+
import { parse } from 'graphql/language/parser.js';
3+
import { buildSchema } from 'graphql/utilities/buildASTSchema.js';
4+
5+
const schema = buildSchema('type Query { field(echo: String!): [String] }');
6+
7+
const integers = Array.from({ length: 100 }, (_, i) => i + 1);
8+
9+
const document = parse(
10+
`
11+
query WithManyFragmentArguments(${integers
12+
.map((i) => `$echo${i}: String`)
13+
.join(', ')}) {
14+
${integers.map((i) => `echo${i}: field(echo: $echo${i})`).join('\n')}
15+
${integers.map((i) => `...EchoFragment${i}(echo: $echo${i})`).join('\n')}
16+
}
17+
18+
${integers
19+
.map(
20+
(i) =>
21+
`fragment EchoFragment${i}($echo: String) on Query { echoFragment${i}: field(echo: $echo) }`,
22+
)
23+
.join('\n')}
24+
`,
25+
{ experimentalFragmentArguments: true },
26+
);
27+
28+
const variableValues = Object.create(null);
29+
for (const i of integers) {
30+
variableValues[`echo${i}`] = `Echo ${i}`;
31+
}
32+
33+
function field(_, args) {
34+
return args.echo;
35+
}
36+
37+
export const benchmark = {
38+
name: 'Execute Operation with Fragment Arguments',
39+
count: 10,
40+
async measure() {
41+
await execute({
42+
schema,
43+
document,
44+
rootValue: { field },
45+
variableValues,
46+
});
47+
},
48+
};

0 commit comments

Comments
 (0)