Web framework comparison: any two entries, any language
uWebSockets.js is quicker than bun on 12 of the 23 profiles they both run, and behind on 11. On the HTTP/1.1 composite they score 790 and 774.
Pick any two of the 153 entries, in any language - the picker is grouped by language, and the two sides do not have to match. Requests per second is the best of three runs and the delta is the first column against the second; every row is the same profile at the same connection count, on the same machine. What each profile measures.
| Profile | Conns | bun req/sec | uWebSockets.js req/sec | Delta | bun p99 | uWebSockets.js p99 |
|---|---|---|---|---|---|---|
| Baseline | 512 | 1,776,235 | 2,469,186 | -28% | 823us | 537us |
| Baseline | 4,096 | 1,907,836 | 2,515,762 | -24% | 3.78ms | 3.05ms |
| Pipelined | 512 | 89,360 | 17,140,524 | -99% | 35.30ms | 1.15ms |
| Pipelined | 4,096 | 340,169 | 17,252,905 | -98% | 224.60ms | 5.14ms |
| Short-lived | 512 | 1,383,333 | 1,860,291 | -26% | 1.65ms | 1.01ms |
| Short-lived | 4,096 | 1,638,140 | 2,154,292 | -24% | 8.92ms | 7.27ms |
| JSON | 4,096 | 1,118,584 | 1,101,706 | +2% | 10.30ms | 11.10ms |
| JSON Comp | 512 | 431,226 | 329,843 | +31% | 5.13ms | 7.59ms |
| JSON Comp | 4,096 | 464,736 | 348,360 | +33% | 21.20ms | 33.50ms |
| JSON Comp | 16,384 | 468,757 | 348,574 | +34% | 59.50ms | 105.40ms |
| JSON TLS | 4,096 | 1,088,357 | 1,075,479 | +1% | 62.79ms | 65.13ms |
| Upload | 32 | 1,909 | 3,084 | -38% | 98.00ms | 47.60ms |
| Upload | 256 | 1,996 | 3,155 | -37% | 876.30ms | 290.70ms |
| Static | 1,024 | 215,179 | 219,151 | -2% | 42.17ms | 45.94ms |
| Static | 4,096 | 213,004 | 235,182 | -9% | 123.40ms | 80.29ms |
| Static | 6,800 | 208,757 | 232,151 | -10% | 176.51ms | 106.13ms |
| Static TLS | 1,024 | 226,759 | 206,093 | +10% | 39.90ms | 41.86ms |
| Static TLS | 4,096 | 222,599 | 193,575 | +15% | 211.97ms | 118.55ms |
| Static TLS | 6,800 | 220,725 | 190,596 | +16% | 334.45ms | 239.46ms |
| Async DB | 1,024 | 278,613 | 218,008 | +28% | 16.80ms | 24.40ms |
| CRUD | 4,096 | 310,372 | 357,544 | -13% | 24.80ms | 21.20ms |
| API-4 | 256 | 43,980 | 33,935 | +30% | 23.50ms | 30.70ms |
| API-16 | 1,024 | 154,060 | 126,936 | +21% | 30.20ms | 47.70ms |
Common comparisons
bun vs uWebSockets.js · bun vs actix · bun vs aspnet-minimal-ioxide · uWebSockets.js vs actix · uWebSockets.js vs aspnet-minimal-ioxide · actix vs aspnet-minimal-ioxide
Questions
Is bun faster than uWebSockets.js?
uWebSockets.js is quicker than bun on 12 of the 23 profiles they both run, and behind on 11. On the HTTP/1.1 composite they score 790 and 774. Both run on the same machine, in the same round, against the same profiles.
Is bun faster than actix?
bun is quicker than actix on 14 of the 23 profiles they both run, and behind on 9. On the HTTP/1.1 composite they score 790 and 707. Both run on the same machine, in the same round, against the same profiles.
Is bun faster than aspnet-minimal-ioxide?
bun is quicker than aspnet-minimal-ioxide on 10 of the 20 profiles they both run, and behind on 10. On the HTTP/1.1 composite they score 790 and 693. Both run on the same machine, in the same round, against the same profiles.
Is uWebSockets.js faster than actix?
uWebSockets.js is quicker than actix on 17 of the 23 profiles they both run, and behind on 6. On the HTTP/1.1 composite they score 774 and 707. Both run on the same machine, in the same round, against the same profiles.
Which framework is fastest overall?
genhttp-11-ioxide holds the highest HTTP/1.1 composite of the entries it ranks, at 961. The composite is throughput over the whole suite; if a service is one shape of workload, compare that profile on its own in the table above, because the order changes.
Can I compare frameworks written in different languages?
Yes - that is what this page is for. Every entry runs the same profiles on the same machine, so an F# entry and a C# one are measured the same way and the numbers line up. The per-language pages under Comparisons narrow the same table to one language when that is the choice you are making.
Results updated · One language at a time · Every entry, one page each · Open the leaderboard