{
  "schemaVersion": 1,
  "capturedAt": "2026-07-14",
  "case": {
    "name": "rows-1000000x8",
    "rows": 1000000,
    "columns": 8,
    "viewport": {
      "width": 1440,
      "height": 900
    },
    "overscan": 5,
    "iterations": 3,
    "aggregation": "median"
  },
  "systems": {
    "opt-datagrid": {
      "version": "1.4.2",
      "rowHeightPx": 34
    },
    "tanstack-table-v9": {
      "version": "9.0.0-beta.31",
      "virtualVersion": "3.14.6",
      "estimatedRowHeightPx": 33
    }
  },
  "environment": {
    "cpu": "Apple M2 Max",
    "logicalCpuCount": 12,
    "memoryGb": 32,
    "operatingSystem": "macOS / Darwin 25.5.0",
    "bun": "1.3.14",
    "node": "24.3.0",
    "playwright": "1.58.2",
    "browser": "Playwright bundled Chromium"
  },
  "results": [
    {
      "id": "initial-heap",
      "phase": "initial",
      "metric": "retained-js-heap",
      "unit": "MB",
      "optDatagrid": 98.43,
      "tanstackTableV9": 383.53,
      "optAdvantage": "74.3% less"
    },
    {
      "id": "middle-scroll-heap",
      "phase": "middle-scroll",
      "metric": "retained-js-heap",
      "unit": "MB",
      "optDatagrid": 99.18,
      "tanstackTableV9": 384.68,
      "optAdvantage": "74.2% less"
    },
    {
      "id": "end-scroll-heap",
      "phase": "end-scroll",
      "metric": "retained-js-heap",
      "unit": "MB",
      "optDatagrid": 99.23,
      "tanstackTableV9": 384.77,
      "optAdvantage": "74.2% less"
    },
    {
      "id": "visible-row-update",
      "phase": "single-row-update",
      "metric": "update-to-paint",
      "unit": "ms",
      "optDatagrid": 10.6,
      "tanstackTableV9": 359.1,
      "optAdvantage": "33.9x faster"
    },
    {
      "id": "after-update-heap",
      "phase": "single-row-update",
      "metric": "retained-js-heap",
      "unit": "MB",
      "optDatagrid": 103.11,
      "tanstackTableV9": 660.72,
      "optAdvantage": "84.4% less"
    }
  ],
  "endScrollAssertion": {
    "expectedMaxRenderedRowIndex": 999999,
    "optDatagrid": {
      "minRenderedRowIndex": 999971,
      "maxRenderedRowIndex": 999999
    },
    "tanstackTableV9": {
      "minRenderedRowIndex": 999970,
      "maxRenderedRowIndex": 999999
    }
  },
  "methodology": {
    "build": "independent production Vite bundles with source maps",
    "processIsolation": "separate preview servers and Chromium processes",
    "memoryMeasurement": "Chrome DevTools Protocol Performance.getMetrics after HeapProfiler.collectGarbage",
    "domMeasurement": "Chrome DevTools Protocol Memory.getDOMCounters",
    "paintWait": "two requestAnimationFrame callbacks and expected cell text assertion",
    "reports": ["JSON", "CSV", "Markdown"]
  },
  "source": {
    "runner": "benchmarks/datagrid-memory-runner/src/run.ts",
    "isolation": "benchmarks/datagrid-memory-runner/src/isolation.ts",
    "sharedFixture": "benchmarks/datagrid-memory-shared/src/index.ts",
    "optFixture": "benchmarks/datagrid-memory-opt/src/main.tsx",
    "tanstackFixture": "benchmarks/datagrid-memory-tanstack/src/main.tsx"
  },
  "disclaimer": "A dated reference snapshot for this repository and workload, not a universal performance ranking or guarantee. The systems expose different feature sets and DOM structures; TanStack Table v9 was beta at measurement time."
}
