chartletv0.21.0chartlet.casoon.de

← All examples

Web frameworks compared

Four frameworks on three measures that share no unit: requests per second, memory and cold start on a logarithmic axis. One panel per measure, each with its own value axis, unit and verdict, over the same categories. On a phone the panels stack in one column. Illustrative values.

Web frameworks compared

examples/framework-benchmarks.json
{
  "schemaVersion": 1,
  "type": "multiples",
  "title": "Web frameworks compared",
  "source": "Illustrative values",
  "width": 960,
  "height": 420,
  "showValues": true,
  "columns": 3,
  "categories": [
    "Rust (Axum)",
    "Go (Gin)",
    "Node (Fastify)",
    "Python (FastAPI)"
  ],
  "panes": [
    {
      "title": "Requests per second",
      "note": "higher is better",
      "values": [
        118000,
        96000,
        64000,
        18000
      ],
      "valueAxis": {
        "unit": "req/s",
        "thousandsSeparator": true
      }
    },
    {
      "title": "Memory under load",
      "note": "lower is better",
      "values": [
        24,
        41,
        118,
        96
      ],
      "valueAxis": {
        "unit": "MB"
      }
    },
    {
      "title": "Cold start",
      "note": "lower is better",
      "values": [
        3,
        5,
        45,
        210
      ],
      "valueAxis": {
        "unit": "ms",
        "scale": "log"
      }
    }
  ],
  "mobile": {
    "width": 360,
    "height": 960,
    "columns": 1
  }
}
Web frameworks compared
Web frameworks comparedBar chart in 3 panels over 4 categories, each with its own value axis. Requests per second: Highest 118,000 req/s (Rust (Axum)), Lowest 18,000 req/s (Python (FastAPI)). Memory under load: Highest 118 MB (Node (Fastify)), Lowest 24 MB (Rust (Axum)). Cold start: Highest 210 ms (Python (FastAPI)), Lowest 3 ms (Rust (Axum)). Notes: Requests per second: higher is better; Memory under load: lower is better; Cold start: lower is better.Requests persecondhigher is betterreq/s0100,000Rust (Axum)Rust (Axum) – Requests per second: 118,000118,000Go (Gin)Go (Gin) – Requests per second: 96,00096,000Node (Fastify)Node (Fastify) – Requests per second: 64,00064,000Python (FastAPI)Python (FastAPI) – Requests per second: 18,00018,000Memory under loadlower is betterMB050100150Rust (Axum)Rust (Axum) – Memory under load: 2424Go (Gin)Go (Gin) – Memory under load: 4141Node (Fastify)Node (Fastify) – Memory under load: 118118Python (FastAPI)Python (FastAPI) – Memory under load: 9696Cold startlower is betterms110100Rust (Axum)Rust (Axum) – Cold start: 33Go (Gin)Go (Gin) – Cold start: 55Node (Fastify)Node (Fastify) – Cold start: 4545Python (FastAPI)Python (FastAPI) – Cold start: 210210
Web frameworks comparedBar chart in 3 panels over 4 categories, each with its own value axis. Requests per second: Highest 118,000 req/s (Rust (Axum)), Lowest 18,000 req/s (Python (FastAPI)). Memory under load: Highest 118 MB (Node (Fastify)), Lowest 24 MB (Rust (Axum)). Cold start: Highest 210 ms (Python (FastAPI)), Lowest 3 ms (Rust (Axum)). Notes: Requests per second: higher is better; Memory under load: lower is better; Cold start: lower is better.Requests per secondhigher is betterreq/s0100,000Rust (Axum)Rust (Axum) – Requests per second: 118,000118,000Go (Gin)Go (Gin) – Requests per second: 96,00096,000Node (Fastify)Node (Fastify) – Requests per second: 64,00064,000Python (FastAPI)Python (FastAPI) – Requests per second: 18,00018,000Memory under loadlower is betterMB050100150Rust (Axum)Rust (Axum) – Memory under load: 2424Go (Gin)Go (Gin) – Memory under load: 4141Node (Fastify)Node (Fastify) – Memory under load: 118118Python (FastAPI)Python (FastAPI) – Memory under load: 9696Cold startlower is betterms110100Rust (Axum)Rust (Axum) – Cold start: 33Go (Gin)Go (Gin) – Cold start: 55Node (Fastify)Node (Fastify) – Cold start: 4545Python (FastAPI)Python (FastAPI) – Cold start: 210210

Source: Illustrative values

Show chart data
Data for Web frameworks compared
CategoryRequests per second (req/s)Memory under load (MB)Cold start (ms)
Rust (Axum)118,000243
Go (Gin)96,000415
Node (Fastify)64,00011845
Python (FastAPI)18,00096210
  • Small multiples of bars (phone variant)
  • Compare candidates on unlike measures