{
  "tier": "ci",
  "tier_shape": [
    50000,
    20000,
    0.05
  ],
  "var_heavy_shape": [
    2000,
    36601
  ],
  "generated": "2026-10-15T12:48:08Z",
  "ref": "0.7.0",
  "platform": "Linux x86_64",
  "python": "3.12.3",
  "memory_limit_bytes": 12884901888,
  "page_cache_dropped": true,
  "repeats": 3,
  "versions": {
    "adata-cli": "0.7.0",
    "anndata": "0.13.4",
    "scanpy": "1.12.4"
  },
  "results": [
    {
      "case": "startup",
      "contender": "adata-cli",
      "wall_s": 0.628,
      "maxrss_bytes": 67907584,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        0.922,
        0.64,
        0.628
      ]
    },
    {
      "case": "startup",
      "contender": "anndata",
      "wall_s": 1.647,
      "maxrss_bytes": 133541888,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        3.951,
        1.647,
        1.726
      ]
    },
    {
      "case": "startup",
      "contender": "scanpy",
      "wall_s": 3.574,
      "maxrss_bytes": 260337664,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        8.604,
        3.574,
        3.715
      ]
    },
    {
      "case": "concat-inner",
      "contender": "adata-cli",
      "wall_s": 9.293,
      "maxrss_bytes": 170344448,
      "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",
      "runs": 3,
      "wall_s_all": [
        9.795,
        9.879,
        9.293
      ]
    },
    {
      "case": "concat-inner",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 5.939,
      "maxrss_bytes": 447262720,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 831906064,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        5.939,
        5.943,
        5.966
      ]
    },
    {
      "case": "concat-inner",
      "contender": "anndata (in memory)",
      "wall_s": 9.091,
      "maxrss_bytes": 1838043136,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294281,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        9.187,
        9.233,
        9.091
      ]
    },
    {
      "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.495,
      "maxrss_bytes": 193060864,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 45655830,
      "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",
      "runs": 3,
      "wall_s_all": [
        1.505,
        1.495,
        1.503
      ]
    },
    {
      "case": "concat-merge-same",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 2.243,
      "maxrss_bytes": 246325248,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 63205915,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        2.281,
        2.284,
        2.243
      ]
    },
    {
      "case": "concat-merge-same",
      "contender": "anndata (in memory)",
      "wall_s": 2.417,
      "maxrss_bytes": 288886784,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 44610596,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        2.424,
        2.441,
        2.417
      ]
    },
    {
      "case": "subset-query",
      "contender": "adata-cli",
      "wall_s": 3.35,
      "maxrss_bytes": 209473536,
      "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",
      "runs": 3,
      "wall_s_all": [
        3.352,
        3.35,
        3.364
      ]
    },
    {
      "case": "subset-query",
      "contender": "anndata (backed)",
      "wall_s": 4.262,
      "maxrss_bytes": 683384832,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 146642970,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        4.284,
        4.313,
        4.262
      ]
    },
    {
      "case": "subset-query",
      "contender": "anndata (in memory)",
      "wall_s": 4.494,
      "maxrss_bytes": 985165824,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 146642970,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        4.494,
        4.52,
        4.499
      ]
    },
    {
      "case": "subset-query",
      "contender": "scanpy (filter_cells)",
      "wall_s": 7.691,
      "maxrss_bytes": 1561530368,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291163286,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        7.691,
        7.757,
        7.733
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "adata-cli",
      "wall_s": 6.143,
      "maxrss_bytes": 154238976,
      "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",
      "runs": 3,
      "wall_s_all": [
        6.231,
        6.248,
        6.143
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "anndata (in memory)",
      "wall_s": 5.695,
      "maxrss_bytes": 778350592,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 136819009,
      "output_files": 55,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        5.716,
        5.722,
        5.695
      ]
    },
    {
      "case": "h5ad-to-zarr",
      "contender": "scanpy",
      "status": "n/a",
      "note": "no streaming converter; scanpy defers to anndata"
    },
    {
      "case": "inspect",
      "contender": "adata-cli",
      "wall_s": 0.608,
      "maxrss_bytes": 69840896,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        0.618,
        0.62,
        0.608
      ]
    },
    {
      "case": "inspect",
      "contender": "anndata (read_elem on obs)",
      "wall_s": 1.759,
      "maxrss_bytes": 160268288,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        1.779,
        1.769,
        1.759
      ]
    },
    {
      "case": "inspect",
      "contender": "anndata (full load)",
      "wall_s": 3.191,
      "maxrss_bytes": 584282112,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        3.191,
        3.21,
        3.196
      ]
    },
    {
      "case": "export-obs",
      "contender": "adata-cli",
      "wall_s": 0.768,
      "maxrss_bytes": 83288064,
      "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",
      "runs": 3,
      "wall_s_all": [
        0.768,
        0.784,
        0.769
      ]
    },
    {
      "case": "export-obs",
      "contender": "anndata (read_elem on obs)",
      "wall_s": 1.78,
      "maxrss_bytes": 161091584,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 1798110,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        1.81,
        1.78,
        1.807
      ]
    },
    {
      "case": "export-obs",
      "contender": "anndata (full load)",
      "wall_s": 3.218,
      "maxrss_bytes": 584359936,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 1798110,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        3.228,
        3.229,
        3.218
      ]
    },
    {
      "case": "split-by-sample",
      "contender": "adata-cli",
      "wall_s": 4.993,
      "maxrss_bytes": 196456448,
      "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",
      "runs": 3,
      "wall_s_all": [
        5.04,
        4.993,
        5.074
      ]
    },
    {
      "case": "split-by-sample",
      "contender": "anndata (hand-written loop)",
      "wall_s": 6.338,
      "maxrss_bytes": 684392448,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 301681470,
      "output_files": 8,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        6.338,
        6.428,
        6.459
      ]
    },
    {
      "case": "ls",
      "contender": "adata-cli",
      "wall_s": 0.628,
      "maxrss_bytes": 68919296,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        0.631,
        0.629,
        0.628
      ]
    },
    {
      "case": "ls",
      "contender": "h5py (visit)",
      "wall_s": 1.667,
      "maxrss_bytes": 136429568,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 0,
      "output_files": 0,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        1.687,
        1.667,
        1.679
      ]
    },
    {
      "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",
      "runs": 1,
      "wall_s_all": [
        0.0
      ]
    },
    {
      "case": "create",
      "contender": "adata-cli",
      "wall_s": 0.658,
      "maxrss_bytes": 82489344,
      "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",
      "runs": 3,
      "wall_s_all": [
        0.658,
        0.659,
        0.667
      ]
    },
    {
      "case": "create",
      "contender": "anndata",
      "wall_s": 8.998,
      "maxrss_bytes": 229072896,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 49249074,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        8.998,
        9.155,
        9.229
      ]
    },
    {
      "case": "export-array",
      "contender": "adata-cli",
      "wall_s": 0.661,
      "maxrss_bytes": 81285120,
      "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",
      "runs": 3,
      "wall_s_all": [
        0.661,
        0.668,
        0.667
      ]
    },
    {
      "case": "export-array",
      "contender": "anndata (read_elem)",
      "wall_s": 1.678,
      "maxrss_bytes": 154624000,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 10000128,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        1.686,
        1.716,
        1.678
      ]
    },
    {
      "case": "export-array",
      "contender": "anndata (full load)",
      "wall_s": 3.218,
      "maxrss_bytes": 584257536,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 10000128,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        3.219,
        3.227,
        3.218
      ]
    },
    {
      "case": "export-sparse",
      "contender": "adata-cli",
      "wall_s": 21.223,
      "maxrss_bytes": 74657792,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 761315638,
      "output_files": 1,
      "stderr_tail": "\u001b[2K\u001b[32m\u2838\u001b[0m \u001b[35mExporting X: 49001-50000 of 50000...\u001b[0m\n\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[?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",
      "runs": 3,
      "wall_s_all": [
        21.352,
        21.338,
        21.223
      ]
    },
    {
      "case": "export-sparse",
      "contender": "anndata (sparse_dataset)",
      "wall_s": 6.525,
      "maxrss_bytes": 968527872,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 661616487,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        6.58,
        6.531,
        6.525
      ]
    },
    {
      "case": "export-sparse",
      "contender": "anndata (full load)",
      "wall_s": 6.724,
      "maxrss_bytes": 774352896,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 661616487,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        6.724,
        6.724,
        6.761
      ]
    },
    {
      "case": "import-dataframe",
      "contender": "adata-cli",
      "wall_s": 1.959,
      "maxrss_bytes": 112414720,
      "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",
      "runs": 3,
      "wall_s_all": [
        1.959,
        1.978,
        1.96
      ]
    },
    {
      "case": "import-dataframe",
      "contender": "anndata",
      "wall_s": 5.357,
      "maxrss_bytes": 600522752,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291188133,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        5.391,
        5.357,
        5.377
      ]
    },
    {
      "case": "concat-outer",
      "contender": "adata-cli",
      "wall_s": 9.155,
      "maxrss_bytes": 175611904,
      "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",
      "runs": 3,
      "wall_s_all": [
        9.155,
        9.253,
        9.28
      ]
    },
    {
      "case": "concat-outer",
      "contender": "anndata (concat_on_disk)",
      "wall_s": 5.934,
      "maxrss_bytes": 449605632,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 831906064,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        5.943,
        5.934,
        5.948
      ]
    },
    {
      "case": "concat-outer",
      "contender": "anndata (in memory)",
      "wall_s": 9.068,
      "maxrss_bytes": 1838325760,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294278,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        9.206,
        9.105,
        9.068
      ]
    },
    {
      "case": "convert-dtype",
      "contender": "adata-cli",
      "wall_s": 4.016,
      "maxrss_bytes": 88195072,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291143661,
      "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-dtype.h5ad\u001b[0m",
      "runs": 3,
      "wall_s_all": [
        4.037,
        4.061,
        4.016
      ]
    },
    {
      "case": "convert-dtype",
      "contender": "anndata (in memory)",
      "wall_s": 5.349,
      "maxrss_bytes": 983986176,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 291157806,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        5.349,
        5.409,
        5.419
      ]
    },
    {
      "case": "convert-dtype",
      "contender": "scanpy",
      "status": "n/a",
      "note": "no dtype rewrite; scanpy defers to anndata"
    },
    {
      "case": "convert-layout",
      "contender": "adata-cli (streaming)",
      "wall_s": 18.184,
      "maxrss_bytes": 362160128,
      "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",
      "runs": 3,
      "wall_s_all": [
        18.184,
        18.239,
        18.496
      ]
    },
    {
      "case": "convert-layout",
      "contender": "adata-cli (--in-memory)",
      "wall_s": 8.853,
      "maxrss_bytes": 2289377280,
      "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",
      "runs": 3,
      "wall_s_all": [
        8.853,
        8.903,
        8.912
      ]
    },
    {
      "case": "convert-layout",
      "contender": "anndata (in memory)",
      "wall_s": 6.045,
      "maxrss_bytes": 984666112,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 296971995,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        6.068,
        6.068,
        6.045
      ]
    },
    {
      "case": "rss-vs-size",
      "contender": "adata-cli",
      "wall_s": 9.194,
      "maxrss_bytes": 180621312,
      "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",
      "runs": 3,
      "wall_s_all": [
        9.278,
        9.363,
        9.194
      ]
    },
    {
      "case": "rss-vs-size",
      "contender": "anndata (in memory)",
      "wall_s": 8.99,
      "maxrss_bytes": 1838366720,
      "exit_code": 0,
      "status": "ok",
      "output_bytes": 580294281,
      "output_files": 1,
      "stderr_tail": "",
      "runs": 3,
      "wall_s_all": [
        9.103,
        9.141,
        8.99
      ]
    }
  ]
}
