MCPcopy
hub / github.com/parse-community/parse-server / benchmarkQueryWithIncludeNested

Function benchmarkQueryWithIncludeNested

benchmark/performance.js:556–633  ·  view source on GitHub ↗

* Benchmark: Query with Include (Nested Pointers with Parallel Leaf Nodes) * Tests the PR's optimization for parallel fetching at each nested level. * Pattern: p1.p2.p3, p1.p2.p4, p1.p2.p5 * After fetching p2, we know the objectIds and can fetch p3, p4, p5 in parallel.

(name)

Source from the content-addressed store, hash-verified

554 * After fetching p2, we know the objectIds and can fetch p3, p4, p5 in parallel.
555 */
556async function benchmarkQueryWithIncludeNested(name) {
557 const Level3AClass = Parse.Object.extend('Level3A');
558 const Level3BClass = Parse.Object.extend('Level3B');
559 const Level3CClass = Parse.Object.extend('Level3C');
560 const Level2Class = Parse.Object.extend('Level2');
561 const Level1Class = Parse.Object.extend('Level1');
562 const RootClass = Parse.Object.extend('Root');
563
564 // Create Level3 objects (leaf nodes)
565 const level3AObjects = [];
566 for (let i = 0; i < 10; i++) {
567 const obj = new Level3AClass();
568 obj.set('name', `level3A-${i}`);
569 level3AObjects.push(obj);
570 }
571 await Parse.Object.saveAll(level3AObjects);
572
573 const level3BObjects = [];
574 for (let i = 0; i < 10; i++) {
575 const obj = new Level3BClass();
576 obj.set('name', `level3B-${i}`);
577 level3BObjects.push(obj);
578 }
579 await Parse.Object.saveAll(level3BObjects);
580
581 const level3CObjects = [];
582 for (let i = 0; i < 10; i++) {
583 const obj = new Level3CClass();
584 obj.set('name', `level3C-${i}`);
585 level3CObjects.push(obj);
586 }
587 await Parse.Object.saveAll(level3CObjects);
588
589 // Create Level2 objects pointing to multiple Level3 objects
590 const level2Objects = [];
591 for (let i = 0; i < 10; i++) {
592 const obj = new Level2Class();
593 obj.set('name', `level2-${i}`);
594 obj.set('level3A', level3AObjects[i % level3AObjects.length]);
595 obj.set('level3B', level3BObjects[i % level3BObjects.length]);
596 obj.set('level3C', level3CObjects[i % level3CObjects.length]);
597 level2Objects.push(obj);
598 }
599 await Parse.Object.saveAll(level2Objects);
600
601 // Create Level1 objects pointing to Level2
602 const level1Objects = [];
603 for (let i = 0; i < 10; i++) {
604 const obj = new Level1Class();
605 obj.set('name', `level1-${i}`);
606 obj.set('level2', level2Objects[i % level2Objects.length]);
607 level1Objects.push(obj);
608 }
609 await Parse.Object.saveAll(level1Objects);
610
611 // Create Root objects pointing to Level1
612 const rootObjects = [];
613 for (let i = 0; i < 10; i++) {

Callers

nothing calls this directly

Calls 2

measureOperationFunction · 0.85
findMethod · 0.65

Tested by

no test coverage detected