-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c10d18d
commit 90f6125
Showing
34 changed files
with
6,352 additions
and
900 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -121,15 +121,15 @@ jobs: | |
rps: ${{ steps.extract_rps.outputs.rps }} | ||
p95: ${{ steps.extract_p95.outputs.p95 }} | ||
read: | ||
runs-on: ubuntu-latest | ||
needs: [benchmark] | ||
steps: | ||
- uses: cloudposse/github-action-matrix-outputs-read@v1 | ||
id: read | ||
with: | ||
matrix-step-name: benchmark | ||
outputs: | ||
result: "${{ steps.read.outputs.result }}" | ||
runs-on: ubuntu-latest | ||
needs: [benchmark] | ||
steps: | ||
- uses: cloudposse/github-action-matrix-outputs-read@v1 | ||
id: read | ||
with: | ||
matrix-step-name: benchmark | ||
outputs: | ||
result: "${{ steps.read.outputs.result }}" | ||
analyze: | ||
if: github.event.head_commit.message != 'Update performance results in README.md' | ||
needs: read | ||
|
@@ -396,4 +396,4 @@ jobs: | |
with: | ||
branch: main | ||
commit_author: Author <[email protected]> | ||
commit_message: "[ci skip] update performance results in README.md" | ||
commit_message: "[ci skip] update performance results in README.md" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
File renamed without changes.
File renamed without changes.
Oops, something went wrong.
90f6125
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GraphQL Federation Benchmarks
Explore and compare the performance of the fastest GraphQL federation routers through our comprehensive benchmarks.
Benchmark Results
Small Payload - 362 bytes
5,017 RPS
0.0233 sec
7,395 RPS
0.0094 sec
4,954 RPS
0.0148 sec
2,585 RPS
0.0382 sec
2,184 RPS
0.0396 sec
16,148 RPS
0.0103 sec
7,621 RPS
0.0107 sec
4,656 RPS
0.0271 sec
Medium Payload - 12,598 bytes
4,694 RPS
0.0226 sec
4,949 RPS
0.0142 sec
3,988 RPS
0.0172 sec
1,362 RPS
0.0752 sec
1,644 RPS
0.05 sec
12,792 RPS
0.0077 sec
5,146 RPS
0.0176 sec
2,483 RPS
0.0477 sec
Big Payload - 112,838 bytes
2,094 RPS
0.0392 sec
1,818 RPS
0.0373 sec
1,851 RPS
0.0477 sec
682 RPS
0.1447 sec
1,242 RPS
0.0563 sec
7,772 RPS
0.0112 sec
2,124 RPS
0.0409 sec
1,105 RPS
0.0948 sec
RPS Plots
Latency 95% Plots
Architecture
Components
hey
: We usehey
cli benchmarking tool to cause synthetic load to benchmark the different routerimplementations
. We benchmark for '10 secondsusing
200 connections`. We constructed three different request payload configurations: big, medium, small. Each configuration queries a response of payload size of 112,838 bytes, 12598 bytes, and 362 bytes respectively.Implementations
: We use a collection of different federation implementations, and for each of them, we also have different configuration setups located in the configurations folder. We benchmark each implementation with varying configurations for every data configuration setup (big, medium, small).Mock
: This component provides data to theimplementations
. It mocks a GraphQL subgraph and an equivalent Rest API. This component is written in Rust and serves static data. We do that to eliminate any overheads caused by processing the request in a real GraphQL subgraph.Specifications
Specifications of the machine used for benchmarking:
Quick Start
Clone the repository
Ensure you have the latest version of Docker
Run the following command:
docker build -t tailcallhq/federation-benchmark . docker run tailcallhq/federation-benchmark:latest ./benchmark_all.sh
Wait for benchmarks to complete.
Resources