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

Carry over to reality #190

Open
marcesengel opened this issue Jun 17, 2023 · 1 comment
Open

Carry over to reality #190

marcesengel opened this issue Jun 17, 2023 · 1 comment
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@marcesengel
Copy link

marcesengel commented Jun 17, 2023

Hi!

First of all thanks a lot for these benchmarks 🤗

When running my own with very small payloads - like say{ "data": { "user": { "name": "John Cena" } } } - I can see a 7.5x difference between graphql-js and async-graphql, which checks out pretty well with the benchmarks provided here.

However when I go ahead and create larger payloads (attached below) by creating new objects/structs like one would in a real world scenario (where they'd come from an ORM or whatever), the difference melts down to about 3.5x - which is still considerable, but largely different to the 7.5x (small) or even your 10x (your benchmark, even smaller) payloads. Do you think it might make sense to make the example payload larger to be more like what you'd see in production (at least partially, for lists), or am I overlooking something? Could it be that with bigger payloads more connections must be kept alive and streaming takes longer, so the advantages of faster execution are diminished? Something isn't quite clicking for me.

Traffic is about 86 MBps (for the bigger payload) which is under the 4 Gbps or 500 MBps network out the Linode Dedicated 4GB can do by quite a margin, so network shouldn't be the bottleneck. Bombardier is run on a separate Linode Shared 16GB so that shouldn't bottleneck either. Tests where run using both internet and VLAN.

Edit: In my benchmarks, the small response was 144 Bytes and the large one 11.3 KB, so ~80x difference.

Larger Payload

{
    "data": {
        "todos": [
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            },
            {
                "title": "Lorem ipsum dolor sit amet",
                "description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "watchers": [
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    },
                    {
                        "name": "John Cena"
                    }
                ]
            }
        ]
    }
}

@jgillich
Copy link
Member

The hello world was a starting point, I wouldn't mind moving to a payload that aligns better with the real world. The hard part is figuring out what that's supposed to look like. Perhaps it should also incorporate more GQL features like fragments and variables.

@jgillich jgillich added enhancement New feature or request help wanted Extra attention is needed labels Jun 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants