{
  "title": "pygeoapi CSV local HTTP exercise",
  "measuredAt": "2026-09-23T20:01:39.965897+00:00",
  "dataset": {
    "synthetic": true,
    "features": 10000,
    "sha256": "40148bf1ce1ec76d34e488b16e23f84ba2f500ec07dcb25be72b3a9f51882ef4"
  },
  "environment": {
    "os": "Darwin",
    "osRelease": "25.6.0",
    "architecture": "arm64",
    "python": "3.13.12",
    "pygeoapi": "0.24.0",
    "flask": "3.1.3",
    "werkzeug": "3.1.8",
    "server": "Werkzeug local HTTP server; client and server on same machine",
    "cpuLogicalCount": 18
  },
  "method": {
    "timer": "perf_counter_ns around complete HTTP request and body read",
    "order": "sequential workloads in array order",
    "percentile": "nearest-rank p95; median p50",
    "cache": "OS/provider caches not flushed; 5 warmup requests per workload",
    "network": "loopback HTTP, no TLS",
    "compression": "none requested"
  },
  "limitations": [
    "Single run on one local machine with other development processes active.",
    "CSV provider only; no PostGIS, GeoServer, ArcGIS, reverse proxy, identity provider or cloud network in this measurement.",
    "No concurrent users, sustained-load test, cold-cache test, uptime test or production capacity estimate.",
    "Regular-grid synthetic points and correlated attributes are not representative of all municipal workloads.",
    "These are observations of request cost, not a performance advantage or migration saving claim."
  ],
  "checks": [
    {
      "check": "/collections?f=json returns JSON 200",
      "passed": true
    },
    {
      "check": "/conformance?f=json returns JSON 200",
      "passed": true
    },
    {
      "check": "/openapi?f=json returns JSON 200",
      "passed": true
    },
    {
      "check": "First page: 10 returned, 10000 matched, stable first ID",
      "passed": true
    },
    {
      "check": "Offset page starts at asset-00011",
      "passed": true
    },
    {
      "check": "Bounding box: 441 matched, 100 returned",
      "passed": true
    },
    {
      "check": "Property filter: D01 matches 1000",
      "passed": true
    },
    {
      "check": "Last feature lookup",
      "passed": true
    },
    {
      "check": "Missing feature returns 404",
      "passed": true
    },
    {
      "check": "Invalid limit returns 400",
      "passed": true
    },
    {
      "check": "Configured maximum bounds returned features at 100",
      "passed": true
    }
  ],
  "workloads": [
    {
      "name": "page-10",
      "path": "/collections/assets/items?f=json&limit=10",
      "warmupRequests": 5,
      "measuredRequests": 30,
      "concurrency": 1,
      "successes": 30,
      "errors": 0,
      "p50Ms": 37.5498,
      "p95Ms": 58.6453,
      "minMs": 36.4395,
      "maxMs": 58.7138,
      "responseBytes": 3311,
      "samplesMs": [
        37.4422,
        38.4924,
        38.4021,
        38.0503,
        58.6453,
        39.8082,
        38.8125,
        37.114,
        37.6575,
        38.6427,
        39.129,
        58.7138,
        39.1381,
        37.3436,
        37.1038,
        36.7473,
        37.1468,
        36.7918,
        49.6261,
        36.4395,
        37.0564,
        36.5535,
        36.5155,
        38.8455,
        39.861,
        55.6206,
        37.1072,
        37.2111,
        36.661,
        37.1325
      ]
    },
    {
      "name": "page-100",
      "path": "/collections/assets/items?f=json&limit=100",
      "warmupRequests": 5,
      "measuredRequests": 30,
      "concurrency": 1,
      "successes": 30,
      "errors": 0,
      "p50Ms": 37.3169,
      "p95Ms": 53.1691,
      "minMs": 36.0639,
      "maxMs": 54.8081,
      "responseBytes": 23498,
      "samplesMs": [
        36.8035,
        37.9417,
        37.5154,
        37.2689,
        48.7105,
        37.1802,
        37.0631,
        36.58,
        36.9228,
        38.2355,
        39.3241,
        53.1691,
        38.423,
        37.042,
        36.7828,
        37.0231,
        37.5602,
        36.5718,
        54.8081,
        36.6639,
        36.954,
        36.0639,
        36.9501,
        37.5567,
        37.3648,
        50.3044,
        37.1512,
        38.8388,
        37.7338,
        42.4381
      ]
    },
    {
      "name": "bbox-100",
      "path": "/collections/assets/items?f=json&bbox=-75.63,6.17,-75.61,6.19&limit=100",
      "warmupRequests": 5,
      "measuredRequests": 30,
      "concurrency": 1,
      "successes": 30,
      "errors": 0,
      "p50Ms": 109.3693,
      "p95Ms": 126.8029,
      "minMs": 100.8263,
      "maxMs": 174.2702,
      "responseBytes": 23717,
      "samplesMs": [
        105.6849,
        106.1175,
        115.0457,
        113.0086,
        104.2792,
        103.9265,
        110.2783,
        111.7107,
        174.2702,
        122.6952,
        114.8915,
        110.8427,
        120.2858,
        126.8029,
        118.0647,
        108.5663,
        109.2624,
        108.018,
        106.3469,
        105.8957,
        117.479,
        103.7873,
        101.3537,
        100.8263,
        101.4138,
        110.8005,
        109.4762,
        102.9726,
        114.7763,
        101.5175
      ]
    },
    {
      "name": "district-10",
      "path": "/collections/assets/items?f=json&district=D01&limit=10",
      "warmupRequests": 5,
      "measuredRequests": 30,
      "concurrency": 1,
      "successes": 30,
      "errors": 0,
      "p50Ms": 11.4153,
      "p95Ms": 12.2642,
      "minMs": 11.1312,
      "maxMs": 21.9087,
      "responseBytes": 3365,
      "samplesMs": [
        11.4543,
        11.2054,
        11.1422,
        11.421,
        11.3635,
        11.274,
        11.1857,
        11.3575,
        11.1312,
        11.413,
        11.3622,
        11.1355,
        11.2502,
        11.179,
        11.2559,
        11.4348,
        21.9087,
        11.3464,
        11.5485,
        11.5145,
        11.4175,
        11.4835,
        11.592,
        11.4401,
        11.377,
        11.4529,
        12.2642,
        11.8142,
        11.6802,
        11.6125
      ]
    }
  ]
}
