perf: lazily perform remote updates to the graph
In many situations we don't need to flush remote updates until access has occurred. This improves performance when the received state would not be readily observed by the consuming application, such as what occurs when applications significantly overfetch the data they need for a given view.
Performance Report for 36c7a4e906e55566b3aa802fc621efbe88c02a79
Scenario - basic-record-materialization: ✅ Performance improved
✅ duration phase estimated improvement -970ms [-985ms to -945ms] OR -40.92% [-41.55% to -39.89%] ☑️ Phase [navigationStart] => [start-data-generation] phase no difference [-2ms to 1ms] ☑️ Phase [start-data-generation] => [start-push-payload] phase no difference [0ms to 4ms] ✅ Phase [start-push-payload] => [start-peek-records] phase estimated improvement -797ms [-803ms to -791ms] OR -64.75% [-65.24% to -64.27%] ✅ Phase [start-peek-records] => [start-record-materialization] phase estimated improvement -1ms [-1ms to 0ms] OR -4.71% [-5.54% to -3.89%] ✅ Phase [start-record-materialization] => [end-record-materialization] phase estimated improvement -23ms [-156ms to -7ms] OR -4.95% [-33.02% to -1.37%] ✅ Phase [end-record-materialization] => [Test End] phase estimated improvement -19ms [-25ms to -13ms] OR -37.18% [-47.72% to -24.54%]
Scenario - relationship-materialization-simple: ⚠️ Performance regressed
⚠️ duration phase estimated regression +17ms [11ms to 23ms] OR +2.1% [1.36% to 2.87%] ☑️ Phase [navigationStart] => [start-find-all] phase no difference [-2ms to 1ms] ✅ Phase [start-find-all] => [start-materialization] phase estimated improvement -154ms [-157ms to -152ms] OR -46.15% [-46.95% to -45.42%] ⚠️ Phase [start-materialization] => [end-materialization] phase estimated regression +174ms [169ms to 180ms] OR +49.37% [48.07% to 50.94%] ✅ Phase [end-materialization] => [Test End] phase estimated improvement -1ms [-2ms to 0ms] OR -3.06% [-8% to -1%]
Scenario - relationship-materialization-complex: ⚠️ Performance regressed
⚠️ duration phase estimated regression +41ms [15ms to 67ms] OR +1.22% [0.44% to 2.02%] ☑️ Phase [navigationStart] => [start-data-generation] phase no difference [-1ms to 2ms] ☑️ Phase [start-data-generation] => [start-push-payload] phase no difference [-1ms to 1ms] ✅ Phase [start-push-payload] => [start-peek-records] phase estimated improvement -418ms [-421ms to -416ms] OR -66.87% [-67.31% to -66.44%] ☑️ Phase [start-peek-records] => [start-record-materialization] phase no difference [0ms to 0ms] ⚠️ Phase [start-record-materialization] => [start-relationship-materialization] phase estimated regression +42ms [39ms to 44ms] OR +19.71% [18.26% to 21%] ⚠️ Phase [start-relationship-materialization] => [end-relationship-materialization] phase estimated regression +418ms [388ms to 446ms] OR +21.12% [19.6% to 22.53%] ☑️ Phase [end-relationship-materialization] => [Test End] phase no difference [-19ms to 1ms]
Scenario - unload: ✅ Performance improved
✅ duration phase estimated improvement -268ms [-272ms to -264ms] OR -34.39% [-34.86% to -33.91%] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-1ms to 2ms] ✅ Phase [start-push-payload] => [start-unload-records] phase estimated improvement -278ms [-280ms to -276ms] OR -67.5% [-68.11% to -66.99%] ⚠️ Phase [start-unload-records] => [end-unload-records] phase estimated regression +8ms [6ms to 11ms] OR +6.17% [4.32% to 7.9%] ☑️ Phase [end-unload-records] => [Test End] phase no difference [0ms to 1ms]
Scenario - unload-all: ✅ Performance improved
✅ duration phase estimated improvement -520ms [-528ms to -512ms] OR -28.69% [-29.14% to -28.22%] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-1ms to 2ms] ✅ Phase [start-push-payload] => [start-materialization] phase estimated improvement -534ms [-539ms to -529ms] OR -66.25% [-66.83% to -65.62%] ⚠️ Phase [start-materialization] => [start-unload-all] phase estimated regression +46ms [42ms to 49ms] OR +16.67% [15.37% to 17.81%] ✅ Phase [start-unload-all] => [end-unload-all] phase estimated improvement -29ms [-34ms to -25ms] OR -7.62% [-8.76% to -6.58%] ☑️ Phase [end-unload-all] => [Test End] phase no difference [0ms to 0ms]
Scenario - destroy: ⚠️ Performance regressed
⚠️ duration phase estimated regression +498ms [491ms to 506ms] OR +64.75% [63.74% to 65.7%] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-1ms to 2ms] ✅ Phase [start-push-payload] => [start-destroy-records] phase estimated improvement -276ms [-278ms to -273ms] OR -67.21% [-67.81% to -66.47%] ⚠️ Phase [start-destroy-records] => [end-destroy-records] phase estimated regression +774ms [767ms to 780ms] OR +624.4% [619.39% to 629.81%] ✅ Phase [end-destroy-records] => [Test End] phase estimated improvement -1ms [-2ms to -1ms] OR -3.5% [-6.1% to -1.75%]
Scenario - add-children: ✅ Performance improved
✅ duration phase estimated improvement -149ms [-153ms to -146ms] OR -25.38% [-25.98% to -24.76%] ☑️ Phase [navigationStart] => [start-push-initial-payload] phase no difference [-2ms to 1ms] ✅ Phase [start-push-initial-payload] => [start-push-update-payload] phase estimated improvement -83ms [-86ms to -81ms] OR -43.6% [-44.84% to -42.43%] ✅ Phase [start-push-update-payload] => [end-push-update-payload] phase estimated improvement -66ms [-68ms to -64ms] OR -43.45% [-44.79% to -42.06%] ☑️ Phase [end-push-update-payload] => [Test End] phase no difference [0ms to 0ms]
Scenario - unused-relationships: ✅ Performance improved
✅ duration phase estimated improvement -276ms [-280ms to -273ms] OR -42.87% [-43.44% to -42.38%] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-1ms to 2ms] ✅ Phase [start-push-payload] => [end-push-payload] phase estimated improvement -274ms [-276ms to -271ms] OR -66.85% [-67.51% to -66.1%] ✅ Phase [end-push-payload] => [Test End] phase estimated improvement -2ms [-5ms to -1ms] OR -5.56% [-14.95% to -2.81%]