{
  "tier": "ci",
  "tier_shape": [
    50000,
    20000,
    0.05
  ],
  "var_heavy_shape": [
    2000,
    36601
  ],
  "generated": "2026-10-15T14:55:32Z",
  "ref": "0.7.1",
  "platform": "Linux x86_64",
  "python": "3.12.3",
  "memory_limit_bytes": 12884901888,
  "page_cache_dropped": true,
  "repeats": 3,
  "versions": {
    "adata-cli": "0.7.1",
    "anndata": "0.13.4",
    "scanpy": "1.12.4"
  },
  "results": [
    {
      "case": "startup",
      "contender": "adata-cli",
      "wall_s": 1.304,
      "maxrss_bytes": 76058624,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        1.304,
        1.993,
        3.112
      ]
    },
    {
      "case": "startup",
      "contender": "anndata",
      "wall_s": 3.645,
      "maxrss_bytes": 133435392,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        11.372,
        6.693,
        3.645
      ]
    },
    {
      "case": "startup",
      "contender": "scanpy",
      "wall_s": 5.806,
      "maxrss_bytes": 260366336,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        20.19,
        5.806,
        9.668
      ]
    },
    {
      "case": "concat-inner",
      "contender": "adata-cli",
      "wall_s": 15.374,
      "maxrss_bytes": 172351488,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 583279667,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConcatenating \u001b[0m\u001b[1;36m2\u001b[0m\u001b[36m stores: \u001b[0m\u001b[1;36m100000\u001b[0m\u001b[36m obs x \u001b[0m\u001b[1;36m20000\u001b[0m\u001b[36m var \u001b[0m\u001b[1;36m(\u001b[0m\u001b[36minner join\u001b[0m\u001b[1;36m)\u001b[0m\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m0\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m0.\u001b[0mh5ad\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m1\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m1.\u001b[0mh5ad\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mconcat-inner.h5ad\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m100000\u001b[0m obs x \u001b[1;36m20000\u001b[0m \nvar\u001b[1m)\u001b[0m",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        17.8,
        15.563,
        15.374
      ]
    },
    {
      "case": "concat-inner",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 8.347,
      "maxrss_bytes": 449851392,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 831906064,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        9.246,
        9.913,
        8.347
      ]
    },
    {
      "case": "concat-inner",
      "contender": "anndata (in memory)",
      "wall_s": 10.195,
      "maxrss_bytes": 1838096384,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294281,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        10.195,
        15.943,
        10.635
      ]
    },
    {
      "case": "concat-inner",
      "contender": "scanpy",
      "status": "n/a",
      "note": "scanpy has no concat of its own; it re-exports anndata's"
    },
    {
      "case": "concat-merge-same",
      "contender": "adata-cli",
      "wall_s": 1.83,
      "maxrss_bytes": 193454080,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 45655831,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConcatenating \u001b[0m\u001b[1;36m2\u001b[0m\u001b[36m stores: \u001b[0m\u001b[1;36m4000\u001b[0m\u001b[36m obs x \u001b[0m\u001b[1;36m36601\u001b[0m\u001b[36m var \u001b[0m\u001b[1;36m(\u001b[0m\u001b[36minner join\u001b[0m\u001b[1;36m)\u001b[0m\n  \u001b[2mvar-heavy-\u001b[0m\u001b[1;2;36m0\u001b[0m: \u001b[1;36m2000\u001b[0m obs from var-heavy-\u001b[1;36m0.\u001b[0mh5ad\n  \u001b[2mvar-heavy-\u001b[0m\u001b[1;2;36m1\u001b[0m: \u001b[1;36m2000\u001b[0m obs from var-heavy-\u001b[1;36m1.\u001b[0mh5ad\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mconcat-merge-same.h5ad\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m4000\u001b[0m obs x \u001b[1;36m36601\u001b[0m\nvar\u001b[1m)\u001b[0m",
      "input_bytes": 47225963,
      "runs": 3,
      "wall_s_all": [
        2.627,
        1.83,
        2.567
      ]
    },
    {
      "case": "concat-merge-same",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 3.826,
      "maxrss_bytes": 246247424,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 63205915,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 47225963,
      "runs": 3,
      "wall_s_all": [
        5.955,
        3.826,
        5.676
      ]
    },
    {
      "case": "concat-merge-same",
      "contender": "anndata (in memory)",
      "wall_s": 3.9,
      "maxrss_bytes": 288980992,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 44610596,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 47225963,
      "runs": 3,
      "wall_s_all": [
        5.221,
        3.9,
        4.131
      ]
    },
    {
      "case": "subset-query",
      "contender": "adata-cli",
      "wall_s": 5.303,
      "maxrss_bytes": 193437696,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 147085650,
      "output_files": 1,
      "stderr_tail": "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting obs\u001b[0m       \n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting var\u001b[0m       \n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting X\u001b[0m         \n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting obsm:X_pca\u001b[0m\n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting uns\u001b[0m       \n\u001b[?25h",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        5.695,
        5.303,
        8.429
      ]
    },
    {
      "case": "subset-query",
      "contender": "anndata (backed)",
      "wall_s": 6.979,
      "maxrss_bytes": 674856960,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 146642970,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        6.979,
        10.447,
        9.803
      ]
    },
    {
      "case": "subset-query",
      "contender": "anndata (in memory)",
      "wall_s": 7.773,
      "maxrss_bytes": 985149440,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 146642970,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        7.773,
        12.179,
        11.145
      ]
    },
    {
      "case": "subset-query",
      "contender": "scanpy (filter_cells)",
      "wall_s": 11.881,
      "maxrss_bytes": 1561722880,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291163286,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        15.244,
        11.881,
        19.323
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "adata-cli",
      "wall_s": 10.213,
      "maxrss_bytes": 121942016,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 151559564,
      "output_files": 4717,
      "stderr_tail": "\u001b[?25h\n\u001b[1A\u001b[2K\u001b[?25l\u001b[32m\u280b\u001b[0m \u001b[36mCopying varm...\u001b[0m\n\u001b[?25h\n\u001b[1A\u001b[2K\u001b[?25l\u001b[32m\u280b\u001b[0m \u001b[36mCopying varp...\u001b[0m\n\u001b[?25h\n\u001b[1A\u001b[2K\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mh5ad-to-zarr.zarr\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        10.213,
        11.485,
        10.543
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "anndata (in memory)",
      "wall_s": 7.97,
      "maxrss_bytes": 775454720,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 136819009,
      "output_files": 55,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        9.191,
        7.97,
        9.773
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "scanpy",
      "status": "n/a",
      "note": "no streaming converter; scanpy defers to anndata"
    },
    {
      "case": "inspect",
      "contender": "adata-cli",
      "wall_s": 1.205,
      "maxrss_bytes": 69713920,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        1.205,
        1.425,
        2.041
      ]
    },
    {
      "case": "inspect",
      "contender": "anndata (read_elem on obs)",
      "wall_s": 3.717,
      "maxrss_bytes": 160694272,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        4.284,
        3.717,
        6.018
      ]
    },
    {
      "case": "inspect",
      "contender": "anndata (full load)",
      "wall_s": 4.679,
      "maxrss_bytes": 584019968,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        6.838,
        4.679,
        9.781
      ]
    },
    {
      "case": "export-obs",
      "contender": "adata-cli",
      "wall_s": 1.658,
      "maxrss_bytes": 83152896,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 1848117,
      "output_files": 1,
      "stderr_tail": "\u001b[?25l\u001b[32m\u280b\u001b[0m \u001b[35mExporting rows 20000-30000 of 50000...\u001b[0m\n\u001b[2K\u001b[32m\u280b\u001b[0m \u001b[35mExporting rows 40000-50000 of 50000...\u001b[0m\n\u001b[?25h\n\u001b[1A\u001b[2K",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        1.658,
        3.525,
        1.91
      ]
    },
    {
      "case": "export-obs",
      "contender": "anndata (read_elem on obs)",
      "wall_s": 3.951,
      "maxrss_bytes": 161116160,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 1798110,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        3.951,
        6.078,
        5.879
      ]
    },
    {
      "case": "export-obs",
      "contender": "anndata (full load)",
      "wall_s": 9.18,
      "maxrss_bytes": 584351744,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 1798110,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        9.18,
        16.17,
        12.369
      ]
    },
    {
      "case": "split-by-sample",
      "contender": "adata-cli",
      "wall_s": 7.635,
      "maxrss_bytes": 197267456,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 302599420,
      "output_files": 9,
      "stderr_tail": "\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting X\u001b[0m         \n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting obsm:X_pca\u001b[0m\n\u001b[32m\u2713\u001b[0m \u001b[32mSubsetting uns\u001b[0m       \n\u001b[?25h\u001b[2mManifest written to \u001b[0m\n\u001b[2;35m/home/runner/work/_temp/bench/out/split-by-sample-out/\u001b[0m\u001b[2;95mci-0_manifest.csv\u001b[0m\n\u001b[32mWrote\u001b[0m \u001b[1;36m8\u001b[0m stores to \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95msplit-by-sample-out\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        7.635,
        8.078,
        9.696
      ]
    },
    {
      "case": "split-by-sample",
      "contender": "anndata (hand-written loop)",
      "wall_s": 6.315,
      "maxrss_bytes": 684625920,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 301681470,
      "output_files": 8,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        6.315,
        9.991,
        9.548
      ]
    },
    {
      "case": "ls",
      "contender": "adata-cli",
      "wall_s": 0.86,
      "maxrss_bytes": 68939776,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        2.627,
        1.021,
        0.86
      ]
    },
    {
      "case": "ls",
      "contender": "h5py (visit)",
      "wall_s": 1.811,
      "maxrss_bytes": 136544256,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        1.811,
        1.983,
        5.02
      ]
    },
    {
      "case": "ls",
      "contender": "h5ls -r",
      "wall_s": 0.0,
      "maxrss_bytes": 0,
      "exit_code": 127,
      "status": "n/a",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "h5ls is not installed",
      "input_bytes": 291155202,
      "runs": 1,
      "wall_s_all": [
        0.0
      ]
    },
    {
      "case": "create",
      "contender": "adata-cli",
      "wall_s": 1.325,
      "maxrss_bytes": 82485248,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 3395320,
      "output_files": 1,
      "stderr_tail": "\u001b[32mCreated\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mcreate.h5ad\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m50000\u001b[0m obs x \u001b[1;36m20000\u001b[0m var, \nempty\u001b[1m)\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        2.033,
        1.325,
        2.881
      ]
    },
    {
      "case": "create",
      "contender": "anndata",
      "wall_s": 8.444,
      "maxrss_bytes": 226131968,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 49249074,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        8.444,
        8.746,
        11.058
      ]
    },
    {
      "case": "export-array",
      "contender": "adata-cli",
      "wall_s": 1.327,
      "maxrss_bytes": 81297408,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 10000128,
      "output_files": 1,
      "stderr_tail": "\u001b[?25l\u001b[32m\u280b\u001b[0m \u001b[35mExporting obsm/X_pca: 48000-50000 of 50000...\u001b[0m\n\u001b[?25h\n\u001b[1A\u001b[2K\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mexport-array.npy\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        1.327,
        1.832,
        1.539
      ]
    },
    {
      "case": "export-array",
      "contender": "anndata (read_elem)",
      "wall_s": 4.055,
      "maxrss_bytes": 154771456,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 10000128,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        5.677,
        4.055,
        6.853
      ]
    },
    {
      "case": "export-array",
      "contender": "anndata (full load)",
      "wall_s": 5.897,
      "maxrss_bytes": 584392704,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 10000128,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        9.196,
        8.049,
        5.897
      ]
    },
    {
      "case": "export-sparse",
      "contender": "adata-cli",
      "wall_s": 35.182,
      "maxrss_bytes": 74555392,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 761315638,
      "output_files": 1,
      "stderr_tail": "\u001b[2K\u001b[32m\u283c\u001b[0m \u001b[35mExporting X: 49001-50000 of 50000...\u001b[0m\n\u001b[2K\u001b[32m\u2834\u001b[0m \u001b[35mExporting X: 49001-50000 of 50000...\u001b[0m\n\u001b[2K\u001b[32m\u2826\u001b[0m \u001b[35mExporting X: 49001-50000 of 50000...\u001b[0m\n\u001b[2K\u001b[32m\u2826\u001b[0m \u001b[35mExporting X: 49001-50000 of 50000...\u001b[0m\n\u001b[?25h\n\u001b[1A\u001b[2K\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mexport-sparse.mtx\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        36.802,
        35.182,
        35.589
      ]
    },
    {
      "case": "export-sparse",
      "contender": "anndata (sparse_dataset)",
      "wall_s": 12.003,
      "maxrss_bytes": 968491008,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 661616487,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        14.196,
        12.003,
        12.942
      ]
    },
    {
      "case": "export-sparse",
      "contender": "anndata (full load)",
      "wall_s": 14.567,
      "maxrss_bytes": 773369856,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 661616487,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        19.405,
        14.567,
        20.607
      ]
    },
    {
      "case": "import-dataframe",
      "contender": "adata-cli",
      "wall_s": 2.274,
      "maxrss_bytes": 112304128,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 295979474,
      "output_files": 1,
      "stderr_tail": "\u001b[2mCopied \u001b[0m\u001b[2;35m/home/runner/work/_temp/bench/fixtures/\u001b[0m\u001b[2;95mci-0.h5ad\u001b[0m\u001b[2m \u2192 \u001b[0m\n\u001b[2;35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[2;95mimport-dataframe.h5ad\u001b[0m\n\u001b[32mImported\u001b[0m \u001b[1;36m50000\u001b[0m rows x \u001b[1;36m5\u001b[0m columns into \u001b[32m'obs'\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m categorical\u001b[1m)\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        7.187,
        2.781,
        2.274
      ]
    },
    {
      "case": "import-dataframe",
      "contender": "anndata",
      "wall_s": 6.91,
      "maxrss_bytes": 597012480,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291188133,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        8.456,
        6.91,
        12.971
      ]
    },
    {
      "case": "concat-outer",
      "contender": "adata-cli",
      "wall_s": 16.366,
      "maxrss_bytes": 175300608,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 583279667,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConcatenating \u001b[0m\u001b[1;36m2\u001b[0m\u001b[36m stores: \u001b[0m\u001b[1;36m100000\u001b[0m\u001b[36m obs x \u001b[0m\u001b[1;36m20000\u001b[0m\u001b[36m var \u001b[0m\u001b[1;36m(\u001b[0m\u001b[36mouter join\u001b[0m\u001b[1;36m)\u001b[0m\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m0\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m0.\u001b[0mh5ad\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m1\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m1.\u001b[0mh5ad\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mconcat-outer.h5ad\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m100000\u001b[0m obs x \u001b[1;36m20000\u001b[0m \nvar\u001b[1m)\u001b[0m",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        18.245,
        16.366,
        23.358
      ]
    },
    {
      "case": "concat-outer",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 11.996,
      "maxrss_bytes": 448872448,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 831906064,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        20.947,
        18.4,
        11.996
      ]
    },
    {
      "case": "concat-outer",
      "contender": "anndata (in memory)",
      "wall_s": 16.636,
      "maxrss_bytes": 1838211072,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294286,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        17.73,
        18.413,
        16.636
      ]
    },
    {
      "case": "recast-narrow",
      "contender": "adata-cli",
      "wall_s": 5.995,
      "maxrss_bytes": 117657600,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 415394542,
      "output_files": 1,
      "stderr_tail": "\u001b[2mX: float64 -> float32: every value round-trips\u001b[0m\n\u001b[36mConverting \u001b[0m\u001b[1;36m1\u001b[0m\u001b[36m matrix/matrices:\u001b[0m X\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mrecast-narrow.h5ad\u001b[0m",
      "input_bytes": 815612314,
      "runs": 3,
      "wall_s_all": [
        5.995,
        6.853,
        9.085
      ]
    },
    {
      "case": "recast-narrow",
      "contender": "anndata (in memory)",
      "wall_s": 14.614,
      "maxrss_bytes": 1784422400,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 417296752,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 815612314,
      "runs": 3,
      "wall_s_all": [
        15.544,
        17.105,
        14.614
      ]
    },
    {
      "case": "recast-narrow",
      "contender": "scanpy",
      "status": "n/a",
      "note": "no dtype rewrite; scanpy defers to anndata"
    },
    {
      "case": "recast-narrow-lzf",
      "contender": "adata-cli",
      "wall_s": 10.848,
      "maxrss_bytes": 125452288,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291143661,
      "output_files": 1,
      "stderr_tail": "\u001b[2mX: float64 -> float32: every value round-trips\u001b[0m\n\u001b[36mConverting \u001b[0m\u001b[1;36m1\u001b[0m\u001b[36m matrix/matrices:\u001b[0m X\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mrecast-narrow-lzf.h5ad\u001b[0m",
      "input_bytes": 302534506,
      "runs": 3,
      "wall_s_all": [
        12.665,
        10.848,
        12.288
      ]
    },
    {
      "case": "recast-narrow-lzf",
      "contender": "anndata (in memory)",
      "wall_s": 9.396,
      "maxrss_bytes": 1784786944,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291157795,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 302534506,
      "runs": 3,
      "wall_s_all": [
        9.888,
        11.418,
        9.396
      ]
    },
    {
      "case": "convert-layout",
      "contender": "adata-cli (streaming)",
      "wall_s": 19.18,
      "maxrss_bytes": 357801984,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 296958040,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConverting \u001b[0m\u001b[1;36m1\u001b[0m\u001b[36m matrix/matrices:\u001b[0m X\n\u001b[2mTransposing \u001b[0m\u001b[1;2;36m50\u001b[0m\u001b[2m,\u001b[0m\u001b[1;2;36m000\u001b[0m\u001b[2m,\u001b[0m\u001b[1;2;36m000\u001b[0m\u001b[2m nonzeros through \u001b[0m\u001b[1;2;36m48\u001b[0m\u001b[2m buckets\u001b[0m\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mconvert-layout.h5ad\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        20.12,
        19.18,
        19.517
      ]
    },
    {
      "case": "convert-layout",
      "contender": "adata-cli (--in-memory)",
      "wall_s": 10.507,
      "maxrss_bytes": 2289430528,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 296958393,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConverting \u001b[0m\u001b[1;36m1\u001b[0m\u001b[36m matrix/matrices:\u001b[0m X\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mconvert-layout.h5ad\u001b[0m",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        10.835,
        10.965,
        10.507
      ]
    },
    {
      "case": "convert-layout",
      "contender": "anndata (in memory)",
      "wall_s": 7.691,
      "maxrss_bytes": 984432640,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 296971995,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 291155202,
      "runs": 3,
      "wall_s_all": [
        11.858,
        7.691,
        11.196
      ]
    },
    {
      "case": "rss-vs-size",
      "contender": "adata-cli",
      "wall_s": 16.118,
      "maxrss_bytes": 174309376,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 583279667,
      "output_files": 1,
      "stderr_tail": "\u001b[36mConcatenating \u001b[0m\u001b[1;36m2\u001b[0m\u001b[36m stores: \u001b[0m\u001b[1;36m100000\u001b[0m\u001b[36m obs x \u001b[0m\u001b[1;36m20000\u001b[0m\u001b[36m var \u001b[0m\u001b[1;36m(\u001b[0m\u001b[36minner join\u001b[0m\u001b[1;36m)\u001b[0m\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m0\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m0.\u001b[0mh5ad\n  \u001b[2mci-\u001b[0m\u001b[1;2;36m1\u001b[0m: \u001b[1;36m50000\u001b[0m obs from ci-\u001b[1;36m1.\u001b[0mh5ad\n\u001b[32mWrote\u001b[0m \u001b[35m/home/runner/work/_temp/bench/out/\u001b[0m\u001b[95mrss-vs-size.h5ad\u001b[0m \u001b[1m(\u001b[0m\u001b[1;36m100000\u001b[0m obs x \u001b[1;36m20000\u001b[0m \nvar\u001b[1m)\u001b[0m",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        16.118,
        22.217,
        21.905
      ]
    },
    {
      "case": "rss-vs-size",
      "contender": "anndata (in memory)",
      "wall_s": 12.816,
      "maxrss_bytes": 1838641152,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294281,
      "output_files": 1,
      "stderr_tail": "",
      "input_bytes": 582301973,
      "runs": 3,
      "wall_s_all": [
        13.851,
        12.816,
        18.672
      ]
    }
  ]
}
