Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: optimize completion loops #4053

Closed
wants to merge 1 commit into from
Closed

Conversation

yaacovCR
Copy link
Contributor

@yaacovCR yaacovCR commented Apr 7, 2024

by hoisting streamUsage checks out of the loop, requires introducing two versions of the looping functions

depends on #4052

@yaacovCR yaacovCR requested review from robrichard and a team April 7, 2024 10:11
Copy link

netlify bot commented Apr 7, 2024

Deploy Preview for compassionate-pike-271cb3 ready!

Name Link
🔨 Latest commit 9ba1510
🔍 Latest deploy log https://app.netlify.com/sites/compassionate-pike-271cb3/deploys/663c382587b6b70008b12df2
😎 Deploy Preview https://deploy-preview-4053--compassionate-pike-271cb3.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link

github-actions bot commented Apr 7, 2024

Hi @yaacovCR, I'm @github-actions bot happy to help you with this PR 👋

Supported commands

Please post this commands in separate comments and only one per comment:

  • @github-actions run-benchmark - Run benchmark comparing base and merge commits for this PR
  • @github-actions publish-pr-on-npm - Build package from this PR and publish it on NPM

@yaacovCR
Copy link
Contributor Author

yaacovCR commented Apr 7, 2024

image

@yaacovCR yaacovCR added the PR: polish 💅 PR doesn't change public API or any observed behaviour label Apr 7, 2024
@yaacovCR yaacovCR force-pushed the optimize-loop branch 3 times, most recently from 63e8957 to 50b3fef Compare April 8, 2024 09:51
yaacovCR added a commit that referenced this pull request Apr 18, 2024
following graphql/graphql-spec#1077

now part of the following PR stack, with the laters PRs extracted from
this one

#4026: incremental: introduce GraphQLWrappedResult to avoid filtering
#4050: perf: allow skipping of field plan generation
#4051: perf: introduce completePromisedListItemValue
#4052: refactor: introduce completeIterableValue
#4053: perf: optimize completion loops
#4046: perf: use undefined for empty
@yaacovCR yaacovCR force-pushed the optimize-loop branch 2 times, most recently from 1873373 to 49d1882 Compare April 24, 2024 16:36
introducing separate looping functions for when streamUsage is defined
@yaacovCR
Copy link
Contributor Author

After offline discussion with @robrichard i am closing this one for now as not worth the extra slight performance bump

by our very synthetic benchmarks, in the very long synchronous list case we’re already faster than the first 17 alpha release and in the asynchronous case we’re still slower either way secondary to incremental delivery, so the small difference from this PR doesn’t really change our performance story overall

in the short term, but not immediate future we can think about #4043 as the real path away from the performance penalty involved with incremental delivery

although the current plan is not to proceed with that immediately as during the pre-and presumably immediate post release. After incremental delivery, there is significant value in having our reference and limitation be more aligned with the specification changes.

#4043 add an optimization that diverges somewhat from the specification, and so we may adopt it within the reference implementation, but the thought is at least not to do so immediately

@yaacovCR yaacovCR closed this May 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR: polish 💅 PR doesn't change public API or any observed behaviour
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants