Quorum
Play
Reference

Runtimes and frameworks

The Stack an App Server runs: its language, runtime, and framework, and how each one trades speed for safety.

Each App Server runs one Stack. The language sets how fast the team writes code and what it costs to hire. The runtime sets how the server handles many requests at once. The framework adds speed of work, and costs CPU and memory on each request.

Languages#

LanguageVelocitySalaryHire timeBuild
PHP×1.2×0.85×10.5 min
Ruby×1.1×1.1×1.51 min
Node.js×1.15×1×13 min
Python×1.15×1.05×11 min
Go×0.95×1.15×1.41.5 min
Java×0.9×1.05×1.16 min
C#×1×1×1.14 min
Elixir×1×1.2×2.52 min
Rust×0.6×1.25×212 min
Zig×0.7×1.25×36 min
Haskell×1.15×1.4×2.58 min

Runtimes#

RuntimeConcurrencySpeedMemoryGC pause
Apache mod_phpOne process per request×0.1560 MB—
PHP-FPMOne process per request×0.1540 MB—
PumaA thread pool×0.25180 MB—
Node.jsOne event loop×0.780 MB—
Node.js clusterOne event loop×0.780 MB—
GunicornOne process per request×0.2120 MB—
Go net/httpGreen threads×130 MB1 ms
TomcatA thread pool×1.1500 MB30 ms
KestrelAsync tasks on a thread pool×1.1150 MB15 ms
BEAMGreen threads×0.45100 MB—
TokioAsync tasks on a thread pool×1.410 MB—
Zig threaded serverA thread pool×1.324 MB—
Haskell (GHC + Warp)Green threads×0.8580 MB12 ms

Frameworks#

FrameworkLanguageOverheadVelocityORM
No frameworkAny1 ms×0.8No
LaravelPHP1.8 ms×1.45Yes
RailsRuby1.5 ms×1.5Yes
ExpressNode.js1.1 ms×1.2No
DjangoPython1.4 ms×1.4Yes
SymfonyPHP1.5 ms×1.25No
SinatraRuby1.1 ms×1.1No
FlaskPython1.1 ms×1.1No
GinGo1.05 ms×1.1No
Spring BootJava1.3 ms×1.1No
ASP.NET CoreC#1.05 ms×1.15No
PhoenixElixir1.1 ms×1.3No
AxumRust1 ms×1.15No
Actix WebRust0.95 ms×1.1No
Game version 16