WBT / SKZ-721 · RELEASE BENCHMARK

持仓风险度:Rust 与同算法 Python

先验证语义,再测量性能。不预设加速结论,不把算法差异计入语言加速。

结论边界

以下是本机、固定 mock、预热后重复测量的结果。 Python 对照按 Rust 的「稳定排序 + 聚合树」重新实现,不使用飞书原 Python 源码。 这不是对所有 pandas/NumPy 实现或所有硬件的速度承诺;小输入可能由转换开销主导。 速比 = Python 中位数 / Rust 中位数,小于 1 表示 Rust 更慢。

主结果(中位数,毫秒)

场景N 行T 时间S 品种 Python E2ERust E2EPython 核心Rust 核心转换合计E2E 速比核心速比
tiny12430.9501.0270.5070.0080.4440.93×65.45×
small-dense1,000100102.9621.9161.7640.0610.7811.55×29.10×
dense-100k100,0001,000100209.15617.040199.3366.5082.53912.27×30.63×
dense-500k500,0002,0002501199.79368.5801176.00434.1038.85117.49×34.48×
sparse-1000-symbols60,00020,0001,000217.42215.149210.0215.4842.21514.35×38.30×
shuffled-duplicates44,0002,000100125.51711.487118.4903.7981.84310.93×31.20×

计时范围与公平性

实现与正确性

时间必须先升序;品种未出现前为空仓,NaN 沿用历史,跨日不断仓,零表示平仓。 同时间同品种最后非缺失值胜出。允许杠杆;空头为零时多空比为 NaN。空输入保留八列,拒绝缺失键和无限权重,保留纳秒与时区。

连续 Vec 聚合树维护总/多/空/净/最大/平方和,更新复杂度 O(log S),总复杂度 O(N log N + N log S + T),空间 O(N+S+T),不创建 T×S 网格。 重算父节点避免历史增减累积误差;float64 仍存在舍入与溢出限制。没有 unsafe、fast-math 或并行归约。

测试使用手算预期和独立稠密历史 oracle(每时刻每品种重选历史最后有效记录并用 math.fsum),不只验证两棵树互相一致。 覆盖乱序、隔夜、重复、缺失、全空仓、杠杆、纳秒/时区、空输入、错误输入、大仓平仓恢复小仓;具体运行证据见随 PR 提交的 verification.txt。

实现前参考 Rust Book iterator performance、Cargo profiles、PyO3 0.28 performance/parallelism 官方文档;来源及设计取舍见 docs/position_risk.md。

分场景分层数据

tiny — 分层统计 / ms
阶段MinMedianP95
rust_e2e0.82321.02651.3023
python_e2e0.77630.95001.7912
python_core0.38270.50720.5402
normalize0.43090.51531.2151
python_ipc_encode0.13850.16070.2460
python_ipc_decode0.19260.22731.2880
native_profile_call0.03400.04630.0738
rust_ipc_decode0.00970.01530.0265
rust_core0.00540.00770.0131
rust_ipc_encode0.01430.01850.0276
conversion_total0.36640.44371.5008
small-dense — 分层统计 / ms
阶段MinMedianP95
rust_e2e1.57631.91562.2505
python_e2e2.66142.96223.2571
python_core1.69091.76452.0544
normalize0.95901.04881.2857
python_ipc_encode0.29590.45230.5376
python_ipc_decode0.16980.23020.3919
native_profile_call0.08330.12380.1522
rust_ipc_decode0.01570.03010.0447
rust_core0.04790.06060.0688
rust_ipc_encode0.01120.02410.0318
conversion_total0.50340.78140.9076
dense-100k — 分层统计 / ms
阶段MinMedianP95
rust_e2e16.241217.040317.9192
python_e2e205.8595209.1555214.3437
python_core197.9344199.3360207.2388
normalize7.44957.78158.4483
python_ipc_encode0.94351.23091.3655
python_ipc_decode0.47020.55280.7523
native_profile_call7.04837.29057.4663
rust_ipc_decode0.66010.71830.8888
rust_core6.24716.50756.6971
rust_ipc_encode0.03600.04110.0551
conversion_total2.33252.53902.8324
dense-500k — 分层统计 / ms
阶段MinMedianP95
rust_e2e63.772968.580570.7208
python_e2e1162.19011199.79271213.5771
python_core1153.87021176.00421273.2021
normalize23.244024.345426.0368
python_ipc_encode4.46984.56125.0755
python_ipc_decode0.34250.51980.7877
native_profile_call35.781937.815138.9256
rust_ipc_decode3.61183.69974.2053
rust_core32.081434.103134.6761
rust_ipc_encode0.04250.04740.0603
conversion_total8.70558.85099.8016
sparse-1000-symbols — 分层统计 / ms
阶段MinMedianP95
rust_e2e14.919015.148515.4126
python_e2e215.4547217.4219234.9833
python_core207.7636210.0207212.1717
normalize6.22927.30808.0323
python_ipc_encode0.81190.99811.0465
python_ipc_decode0.56500.65110.9319
native_profile_call5.29936.11346.2363
rust_ipc_decode0.41530.43890.4622
rust_core4.72685.48385.6393
rust_ipc_encode0.09460.11320.1426
conversion_total1.96072.21522.5435
shuffled-duplicates — 分层统计 / ms
阶段MinMedianP95
rust_e2e10.540711.486611.6983
python_e2e123.2557125.5172130.5692
python_core117.3800118.4904149.4523
normalize4.73555.70776.2642
python_ipc_encode0.85500.89051.1839
python_ipc_decode0.23300.49330.6347
native_profile_call3.96734.19234.8083
rust_ipc_decode0.31700.33860.4479
rust_core3.46363.79824.4116
rust_ipc_encode0.03870.04390.0505
conversion_total1.53971.84302.1967

环境、构建与复现

{
  "created_at": "2026-09-08T10:16:07.507600+00:00",
  "seed": 721,
  "repeats": 7,
  "warmups": 2,
  "platform": "macOS-26.6.2-arm64-arm-64bit",
  "machine": "arm64",
  "python": "3.12.13 (main, Mar  3 2026, 15:35:03) [Clang 21.1.4 ]",
  "cpu": "Apple M1",
  "packages": {
    "numpy": "2.5.3",
    "pandas": "3.0.2",
    "pyarrow": "25.0.1",
    "polars": "1.44.1",
    "maturin": "1.15.0"
  },
  "rustc": "rustc 1.97.1 (8bab26f4f 2026-07-14)\nbinary: rustc\ncommit-hash: 8bab26f4f68e0e26f0bb7960be334d5b520ea452\ncommit-date: 2026-07-14\nhost: aarch64-apple-darwin\nrelease: 1.97.1\nLLVM version: 22.1.6",
  "base_revision": "4a977385572f196ab7a42bcb3298f5c10204bd3d",
  "source_sha256": {
    "src/core/position_risk.rs": "e4e5cb8207c57a20be5cf3220ad6f6edb23c69119597ee84d2f6f0553e11b703",
    "src/python.rs": "94c788e32ff4c798d446615cbfe9c8cca7453c5101c928c062091ac9bd7d8cd8",
    "python/wbt/position_risk.py": "9c99f595ae8d5c08d2fbab3f860afd53f24f318bbddd76cef5b28dc20c702284",
    "python/scripts/position_risk_reference.py": "0029701b2ad9c0d821bafcb926a2add534acaae8989f8dd43ed3d113e765c2b8",
    "python/scripts/benchmark_position_risk.py": "a9882d0891dfee8f9370b79bab0b307fd46e4508ce61f4dcb96bde56f2804d49"
  },
  "extension_sha256": "4bb930174a765154e237880ab161bc84e246089b7e6551c6aa7e88a193031ac4",
  "cargo_lock_sha256": "0ad0a1f57d4c9cc60fb9bf1dd470f459e111ae3412fd7e42f53f9385740d1603",
  "build": "maturin develop --release; opt-level=3, lto=fat, codegen-units=1; debug assertions checked off",
  "command": "python/scripts/benchmark_position_risk.py --seed 721 --repeats 7 --warmups 2 --output docs/benchmarks/position_risk"
}

运行命令与锁定依赖见 docs/position_risk.md;JSON 保留全部原始样本。

内嵌完整 JSON(离线可审计)
{
  "metadata": {
    "created_at": "2026-09-08T10:16:07.507600+00:00",
    "seed": 721,
    "repeats": 7,
    "warmups": 2,
    "platform": "macOS-26.6.2-arm64-arm-64bit",
    "machine": "arm64",
    "python": "3.12.13 (main, Mar  3 2026, 15:35:03) [Clang 21.1.4 ]",
    "cpu": "Apple M1",
    "packages": {
      "numpy": "2.5.3",
      "pandas": "3.0.2",
      "pyarrow": "25.0.1",
      "polars": "1.44.1",
      "maturin": "1.15.0"
    },
    "rustc": "rustc 1.97.1 (8bab26f4f 2026-07-14)\nbinary: rustc\ncommit-hash: 8bab26f4f68e0e26f0bb7960be334d5b520ea452\ncommit-date: 2026-07-14\nhost: aarch64-apple-darwin\nrelease: 1.97.1\nLLVM version: 22.1.6",
    "base_revision": "4a977385572f196ab7a42bcb3298f5c10204bd3d",
    "source_sha256": {
      "src/core/position_risk.rs": "e4e5cb8207c57a20be5cf3220ad6f6edb23c69119597ee84d2f6f0553e11b703",
      "src/python.rs": "94c788e32ff4c798d446615cbfe9c8cca7453c5101c928c062091ac9bd7d8cd8",
      "python/wbt/position_risk.py": "9c99f595ae8d5c08d2fbab3f860afd53f24f318bbddd76cef5b28dc20c702284",
      "python/scripts/position_risk_reference.py": "0029701b2ad9c0d821bafcb926a2add534acaae8989f8dd43ed3d113e765c2b8",
      "python/scripts/benchmark_position_risk.py": "a9882d0891dfee8f9370b79bab0b307fd46e4508ce61f4dcb96bde56f2804d49"
    },
    "extension_sha256": "4bb930174a765154e237880ab161bc84e246089b7e6551c6aa7e88a193031ac4",
    "cargo_lock_sha256": "0ad0a1f57d4c9cc60fb9bf1dd470f459e111ae3412fd7e42f53f9385740d1603",
    "build": "maturin develop --release; opt-level=3, lto=fat, codegen-units=1; debug assertions checked off",
    "command": "python/scripts/benchmark_position_risk.py --seed 721 --repeats 7 --warmups 2 --output docs/benchmarks/position_risk"
  },
  "cases": [
    {
      "name": "tiny",
      "rows": 12,
      "times": 4,
      "symbols": 3,
      "input_sha256": "453ddb7d0586e192cf9e8bb29bee6b395d2d0608cc41248c0dd9ca2cc2dd13d5",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 1.0265409982821438,
          "min_ms": 0.8232079999288544,
          "p95_ms": 1.3023044983128784,
          "samples_seconds": [
            0.0010265409982821438,
            0.0010683330001484137,
            0.0008666249996167608,
            0.001246042000275338,
            0.00094600000011269,
            0.0013264169974718243,
            0.0008232079999288544
          ]
        },
        "python_e2e": {
          "median_ms": 0.9499579973635264,
          "min_ms": 0.7763339999655727,
          "p95_ms": 1.7911581006046613,
          "samples_seconds": [
            0.0013147499994374812,
            0.0009393340005772188,
            0.0007763339999655727,
            0.001995333001104882,
            0.0009041250013979152,
            0.0011161250004079193,
            0.0009499579973635264
          ]
        },
        "python_core": {
          "median_ms": 0.5072080020909198,
          "min_ms": 0.38270799996098503,
          "p95_ms": 0.5402284983574646,
          "samples_seconds": [
            0.0005464159985422157,
            0.0005072080020909198,
            0.00040920800165622495,
            0.0005172920027689543,
            0.00044100000013713725,
            0.0005257909979263786,
            0.00038270799996098503
          ]
        },
        "normalize": {
          "median_ms": 0.5153329984750599,
          "min_ms": 0.43091599945910275,
          "p95_ms": 1.2151287999586196,
          "samples_seconds": [
            0.0014701660002174322,
            0.0004934169992338866,
            0.0005235000026004855,
            0.0005153329984750599,
            0.0005137500011187512,
            0.00043091599945910275,
            0.0006200419993547257
          ]
        },
        "python_ipc_encode": {
          "median_ms": 0.16070800120360218,
          "min_ms": 0.1385000032314565,
          "p95_ms": 0.2459829003782943,
          "samples_seconds": [
            0.0001385000032314565,
            0.0001925409997056704,
            0.00014400000145542435,
            0.00015845900270505808,
            0.00016070800120360218,
            0.00025608299984014593,
            0.0002224160016339738
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.22725000235368498,
          "min_ms": 0.19258300017099828,
          "p95_ms": 1.288000098793417,
          "samples_seconds": [
            0.0017116249982791487,
            0.00022725000235368498,
            0.00019258300017099828,
            0.00021691599977202713,
            0.00022008299856679514,
            0.00029954199999338016,
            0.0002979580021928996
          ]
        },
        "native_profile_call": {
          "median_ms": 0.04629199975170195,
          "min_ms": 0.03399999695830047,
          "p95_ms": 0.07375019922619686,
          "samples_seconds": [
            4.629199975170195e-05,
            3.399999695830047e-05,
            4.149999949731864e-05,
            3.454200123087503e-05,
            5.145899922354147e-05,
            7.083399759721942e-05,
            7.499999992433004e-05
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 0.015291999999999998,
          "min_ms": 0.009708,
          "p95_ms": 0.026549800000000002,
          "samples_seconds": [
            1.5292e-05,
            9.708e-06,
            1.3791e-05,
            1.0375e-05,
            1.8375e-05,
            2.4916e-05,
            2.725e-05
          ]
        },
        "rust_core": {
          "median_ms": 0.00775,
          "min_ms": 0.0053750000000000004,
          "p95_ms": 0.013149899999999999,
          "samples_seconds": [
            7.709e-06,
            5.75e-06,
            7.75e-06,
            5.375e-06,
            9.084e-06,
            1.2333e-05,
            1.35e-05
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.018458,
          "min_ms": 0.01425,
          "p95_ms": 0.0276287,
          "samples_seconds": [
            1.8458e-05,
            1.425e-05,
            1.6042e-05,
            1.4666e-05,
            2.0375e-05,
            2.6375e-05,
            2.8166e-05
          ]
        },
        "conversion_total": {
          "median_ms": 0.44374900205935536,
          "min_ms": 0.3664160016264226,
          "p95_ms": 1.5007873010074806,
          "samples_seconds": [
            0.0018838750015106051,
            0.00044374900205935535,
            0.0003664160016264226,
            0.0004004160024770852,
            0.0004195409997703973,
            0.0006069159998335261,
            0.0005757900038268733
          ]
        }
      },
      "e2e_speedup": 0.925397036215042,
      "core_speedup": 65.44619381818319
    },
    {
      "name": "small-dense",
      "rows": 1000,
      "times": 100,
      "symbols": 10,
      "input_sha256": "92559bbdbb896712cc1a57bc8b1add5ee746d81dffe8004954803e3a60cc8408",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 1.9156249982188456,
          "min_ms": 1.5762910006742459,
          "p95_ms": 2.250470698345452,
          "samples_seconds": [
            0.0017358750010316726,
            0.0019156249982188456,
            0.002025041998422239,
            0.002347082998312544,
            0.0017714169989631046,
            0.0015762910006742459,
            0.0020138750005571637
          ]
        },
        "python_e2e": {
          "median_ms": 2.9621670000778977,
          "min_ms": 2.6614159978635143,
          "p95_ms": 3.2571079984336393,
          "samples_seconds": [
            0.0029621670000778977,
            0.0032700829979148693,
            0.0030149169979267754,
            0.0032268329996441025,
            0.002886624999518972,
            0.002663333001692081,
            0.0026614159978635143
          ]
        },
        "python_core": {
          "median_ms": 1.764458000252489,
          "min_ms": 1.6908750003494788,
          "p95_ms": 2.0544419003272196,
          "samples_seconds": [
            0.0019040000006498303,
            0.002118917000188958,
            0.001713208999717608,
            0.001764458000252489,
            0.0017899579979712144,
            0.0017452499996579718,
            0.0016908750003494788
          ]
        },
        "normalize": {
          "median_ms": 1.0487910003575962,
          "min_ms": 0.9589999972376972,
          "p95_ms": 1.2857036999776028,
          "samples_seconds": [
            0.0010779999975056853,
            0.0009589999972376972,
            0.0010487910003575962,
            0.0012592500024766196,
            0.0012970409989065956,
            0.0010092080010508653,
            0.0009827499998209532
          ]
        },
        "python_ipc_encode": {
          "median_ms": 0.4522500021266751,
          "min_ms": 0.29591699785669334,
          "p95_ms": 0.537608700687997,
          "samples_seconds": [
            0.0005134580023877788,
            0.00029591699785669334,
            0.00034720899930107407,
            0.0004522500021266751,
            0.00045679200047743507,
            0.0003233339994039852,
            0.0005479589999595191
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.23024999973131344,
          "min_ms": 0.16975000107777305,
          "p95_ms": 0.3918961992894765,
          "samples_seconds": [
            0.0003669580000860151,
            0.00017629099966143258,
            0.0004025839989481028,
            0.000258708001638297,
            0.00023024999973131344,
            0.00016975000107777305,
            0.0002175839981646277
          ]
        },
        "native_profile_call": {
          "median_ms": 0.12375000005704351,
          "min_ms": 0.0832920013635885,
          "p95_ms": 0.15222889960568864,
          "samples_seconds": [
            0.0001237500000570435,
            8.32920013635885e-05,
            9.029200009535998e-05,
            0.0001485840002715122,
            8.59159990795888e-05,
            0.00013899999976274557,
            0.00015379099932033569
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 0.030083,
          "min_ms": 0.015667,
          "p95_ms": 0.0447419,
          "samples_seconds": [
            3.0083e-05,
            1.6208e-05,
            1.6875e-05,
            4.2e-05,
            1.5667e-05,
            3.6834e-05,
            4.5917e-05
          ]
        },
        "rust_core": {
          "median_ms": 0.060625000000000005,
          "min_ms": 0.047875,
          "p95_ms": 0.0687875,
          "samples_seconds": [
            6.0625e-05,
            4.7875e-05,
            5.4209e-05,
            6.7625e-05,
            5.5e-05,
            6.9125e-05,
            6.8e-05
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.024083,
          "min_ms": 0.011208000000000001,
          "p95_ms": 0.031849999999999996,
          "samples_seconds": [
            2.4083e-05,
            1.4958e-05,
            1.4709e-05,
            2.8875e-05,
            1.1208e-05,
            2.6083e-05,
            3.3125e-05
          ]
        },
        "conversion_total": {
          "median_ms": 0.7813769982491768,
          "min_ms": 0.503373997518126,
          "p95_ms": 0.9075829011688998,
          "samples_seconds": [
            0.000934582002473794,
            0.0005033739975181259,
            0.0007813769982491769,
            0.0007818330037649721,
            0.0007139170002087485,
            0.0005560010004817583,
            0.0008445849981241468
          ]
        }
      },
      "e2e_speedup": 1.54631882692705,
      "core_speedup": 29.104461859834867
    },
    {
      "name": "dense-100k",
      "rows": 100000,
      "times": 1000,
      "symbols": 100,
      "input_sha256": "b92a47263827f79f31c7d6538323fa68f4925f3df251b52f04645ef0f23c8ecd",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 17.040250000718515,
          "min_ms": 16.241249999438878,
          "p95_ms": 17.91919129755115,
          "samples_seconds": [
            0.017686791998130502,
            0.016241249999438878,
            0.017040250000718515,
            0.016316791999997804,
            0.01718208300007973,
            0.018018790997302858,
            0.01670975000160979
          ]
        },
        "python_e2e": {
          "median_ms": 209.1555420010991,
          "min_ms": 205.8595000016794,
          "p95_ms": 214.3436873993778,
          "samples_seconds": [
            0.2091555420010991,
            0.20664291600041906,
            0.20924229199954425,
            0.2058595000016794,
            0.21338920800189953,
            0.20746312499977648,
            0.21475274999829708
          ]
        },
        "python_core": {
          "median_ms": 199.3359580010292,
          "min_ms": 197.93441699948744,
          "p95_ms": 207.23882070051332,
          "samples_seconds": [
            0.20610216700151796,
            0.20772595800008276,
            0.1979922919999808,
            0.1983958340024401,
            0.2000791249993199,
            0.19793441699948744,
            0.1993359580010292
          ]
        },
        "normalize": {
          "median_ms": 7.781541997246677,
          "min_ms": 7.449459000781644,
          "p95_ms": 8.44830019850633,
          "samples_seconds": [
            0.007770750002237037,
            0.007781541997246677,
            0.008086833000561455,
            0.007721875001152512,
            0.008208958999603055,
            0.008550874998036306,
            0.007449459000781644
          ]
        },
        "python_ipc_encode": {
          "median_ms": 1.2309170015214477,
          "min_ms": 0.9434589992451947,
          "p95_ms": 1.3654668007802684,
          "samples_seconds": [
            0.0013069579981674906,
            0.0012309170015214477,
            0.0009434589992451947,
            0.0011531250020198058,
            0.0012348750024102628,
            0.0013905420019000303,
            0.0009669589999248274
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.5528330002562143,
          "min_ms": 0.47020900092320517,
          "p95_ms": 0.7523248987126862,
          "samples_seconds": [
            0.0004980000012437813,
            0.0005528330002562143,
            0.000641957998595899,
            0.0004796250032086391,
            0.0006028749994584359,
            0.000799624998762738,
            0.00047020900092320517
          ]
        },
        "native_profile_call": {
          "median_ms": 7.290458997886162,
          "min_ms": 7.048291001410689,
          "p95_ms": 7.46630819994607,
          "samples_seconds": [
            0.007445541999913985,
            0.007283458999154391,
            0.007048291001410689,
            0.00741458299671649,
            0.007475207999959821,
            0.0070940000005066395,
            0.007290458997886162
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 0.71825,
          "min_ms": 0.660083,
          "p95_ms": 0.8888124999999999,
          "samples_seconds": [
            0.0006875,
            0.00071825,
            0.000749416,
            0.000660083,
            0.000757125,
            0.000667709,
            0.00094525
          ]
        },
        "rust_core": {
          "median_ms": 6.5075,
          "min_ms": 6.2471250000000005,
          "p95_ms": 6.6970543000000005,
          "samples_seconds": [
            0.006692708,
            0.0065075,
            0.006247125,
            0.006698917,
            0.006661958,
            0.006348916,
            0.006275708
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.041083,
          "min_ms": 0.035958,
          "p95_ms": 0.05508729999999999,
          "samples_seconds": [
            4.6541e-05,
            4.1375e-05,
            3.5958e-05,
            3.9625e-05,
            4.1083e-05,
            5.875e-05,
            4.0333e-05
          ]
        },
        "conversion_total": {
          "median_ms": 2.538998999411272,
          "min_ms": 2.3324580052284447,
          "p95_ms": 2.832425601024547,
          "samples_seconds": [
            0.002538998999411272,
            0.002543375001777662,
            0.002370790997841094,
            0.0023324580052284448,
            0.0026359580018686986,
            0.0029166260006627683,
            0.0024227510008480325
          ]
        }
      },
      "e2e_speedup": 12.27420618783644,
      "core_speedup": 30.631726162278788
    },
    {
      "name": "dense-500k",
      "rows": 500000,
      "times": 2000,
      "symbols": 250,
      "input_sha256": "d7a01b79ea334543a16c208971864854ccf7214e7470e6a13ccceda48b9d064c",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 68.58045800254331,
          "min_ms": 63.77287499708473,
          "p95_ms": 70.72082119884726,
          "samples_seconds": [
            0.06560012499903678,
            0.06377287499708473,
            0.06796170799862011,
            0.06859554200127604,
            0.06947683299949858,
            0.06858045800254331,
            0.07125395899856812
          ]
        },
        "python_e2e": {
          "median_ms": 1199.7927080010413,
          "min_ms": 1162.1900829995866,
          "p95_ms": 1213.5771126027976,
          "samples_seconds": [
            1.1621900829995866,
            1.1880060830008006,
            1.1909050829999615,
            1.1997927080010413,
            1.2017713750028634,
            1.213201417001983,
            1.2137381250031467
          ]
        },
        "python_core": {
          "median_ms": 1176.0042079986306,
          "min_ms": 1153.8701659992512,
          "p95_ms": 1273.2020586001454,
          "samples_seconds": [
            1.1538701659992512,
            1.307592459001171,
            1.1706380420000642,
            1.1760042079986306,
            1.1737338750026538,
            1.1929577909977525,
            1.1867569579990231
          ]
        },
        "normalize": {
          "median_ms": 24.34541600086959,
          "min_ms": 23.243958999955794,
          "p95_ms": 26.03684199893905,
          "samples_seconds": [
            0.023243958999955794,
            0.02434541600086959,
            0.02390137499969569,
            0.02434854100283701,
            0.02440566699806368,
            0.026735916999314213,
            0.024201292002544506
          ]
        },
        "python_ipc_encode": {
          "median_ms": 4.561249999824213,
          "min_ms": 4.4698329984385055,
          "p95_ms": 5.075478800790734,
          "samples_seconds": [
            0.004561249999824213,
            0.004724166999949375,
            0.005226041001151316,
            0.0044702909981424455,
            0.0044778330011467915,
            0.0044698329984385055,
            0.004612500000803266
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.5197919999773148,
          "min_ms": 0.3424580027058255,
          "p95_ms": 0.7876669995312112,
          "samples_seconds": [
            0.00046137500248732977,
            0.0005197919999773148,
            0.0005805840009998064,
            0.0006187919971125666,
            0.0005194580007810146,
            0.0003424580027058255,
            0.0008600420005677734
          ]
        },
        "native_profile_call": {
          "median_ms": 37.815125000634,
          "min_ms": 35.781916998530505,
          "p95_ms": 38.92561240099894,
          "samples_seconds": [
            0.03637391699885484,
            0.035781916998530505,
            0.03857558299932862,
            0.03777766699931817,
            0.037815125000634,
            0.038224957999773324,
            0.0390756250017148
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 3.699667,
          "min_ms": 3.611834,
          "p95_ms": 4.2052918,
          "samples_seconds": [
            0.003623,
            0.003634875,
            0.003921208,
            0.003611834,
            0.003699667,
            0.003991208,
            0.004297042
          ]
        },
        "rust_core": {
          "median_ms": 34.103083999999996,
          "min_ms": 32.081375,
          "p95_ms": 34.6760921,
          "samples_seconds": [
            0.0326665,
            0.032081375,
            0.034584334,
            0.034103084,
            0.033993584,
            0.034167583,
            0.034715417
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.047375,
          "min_ms": 0.042457999999999996,
          "p95_ms": 0.0603419,
          "samples_seconds": [
            5.9875e-05,
            4.5959e-05,
            4.9542e-05,
            4.5792e-05,
            6.0542e-05,
            4.7375e-05,
            4.2458e-05
          ]
        },
        "conversion_total": {
          "median_ms": 8.850874001144332,
          "min_ms": 8.705500002311544,
          "p95_ms": 9.801641901605063,
          "samples_seconds": [
            0.008705500002311543,
            0.008924792999926691,
            0.009777375002151123,
            0.008746708995255013,
            0.008757500001927807,
            0.008850874001144331,
            0.009812042001371039
          ]
        }
      },
      "e2e_speedup": 17.4946733070308,
      "core_speedup": 34.48380820921154
    },
    {
      "name": "sparse-1000-symbols",
      "rows": 60000,
      "times": 20000,
      "symbols": 1000,
      "input_sha256": "1d91a022076342e0ab39b80b3671331a82224f4228463e33c7304656559bce4d",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 15.148500002396759,
          "min_ms": 14.918957996997051,
          "p95_ms": 15.412579401163384,
          "samples_seconds": [
            0.014971874999901047,
            0.015054207997309277,
            0.015451667000888847,
            0.014918957996997051,
            0.015321375001803972,
            0.015148500002396759,
            0.01527462500234833
          ]
        },
        "python_e2e": {
          "median_ms": 217.4219170010474,
          "min_ms": 215.45466699899407,
          "p95_ms": 234.98334609976155,
          "samples_seconds": [
            0.24217458400016767,
            0.21565241599819274,
            0.21611354199922062,
            0.21820379099881393,
            0.21545466699899407,
            0.21782470800098963,
            0.2174219170010474
          ]
        },
        "python_core": {
          "median_ms": 210.0207080002292,
          "min_ms": 207.76358299917774,
          "p95_ms": 212.1716542987997,
          "samples_seconds": [
            0.20776358299917774,
            0.21208645799924852,
            0.21220816699860734,
            0.2090936659988074,
            0.2100207080002292,
            0.21156979099760065,
            0.2090314170018246
          ]
        },
        "normalize": {
          "median_ms": 7.308041000214871,
          "min_ms": 6.229167000128655,
          "p95_ms": 8.032329300112906,
          "samples_seconds": [
            0.007308041000214871,
            0.006229167000128655,
            0.0075593750007101335,
            0.006979750000027707,
            0.008227541999076493,
            0.0066600829995877575,
            0.0075768330025312025
          ]
        },
        "python_ipc_encode": {
          "median_ms": 0.9980830000131391,
          "min_ms": 0.8118749974528328,
          "p95_ms": 1.0464838000189047,
          "samples_seconds": [
            0.0010311250007362105,
            0.0009561250008118805,
            0.001051084000209812,
            0.0008118749974528328,
            0.0010357499995734543,
            0.000998083000013139,
            0.0008355410027434118
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.6511249994218815,
          "min_ms": 0.5649579979944974,
          "p95_ms": 0.9318829976109553,
          "samples_seconds": [
            0.0006097910008975305,
            0.0005649579979944974,
            0.00101258299764595,
            0.000616332999925362,
            0.0007102919989847578,
            0.0007435829975293018,
            0.0006511249994218815
          ]
        },
        "native_profile_call": {
          "median_ms": 6.113375002314569,
          "min_ms": 5.299291999108391,
          "p95_ms": 6.23626240012527,
          "samples_seconds": [
            0.006113375002314569,
            0.00623687500046799,
            0.00623483299932559,
            0.005299291999108391,
            0.005837792003148934,
            0.005848917000548681,
            0.006231291998119559
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 0.43891600000000003,
          "min_ms": 0.41525,
          "p95_ms": 0.4622455,
          "samples_seconds": [
            0.000443958,
            0.00041525,
            0.000438916,
            0.000437958,
            0.000470083,
            0.000442417,
            0.000422041
          ]
        },
        "rust_core": {
          "median_ms": 5.483833,
          "min_ms": 4.726833,
          "p95_ms": 5.6392587999999995,
          "samples_seconds": [
            0.005483833,
            0.005651959,
            0.005599333,
            0.004726833,
            0.005195292,
            0.005251791,
            0.005609625
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.11316699999999999,
          "min_ms": 0.094583,
          "p95_ms": 0.1425999,
          "samples_seconds": [
            0.000130292,
            0.000113167,
            0.000133208,
            9.4583e-05,
            0.000111958,
            0.000104083,
            0.000146625
          ]
        },
        "conversion_total": {
          "median_ms": 2.215166001633741,
          "min_ms": 1.9607489973781949,
          "p95_ms": 2.543478598066497,
          "samples_seconds": [
            0.002215166001633741,
            0.0020494999988063776,
            0.0026357909978557623,
            0.001960748997378195,
            0.0023280829985582122,
            0.002288165997542441,
            0.002055332002165293
          ]
        }
      },
      "e2e_speedup": 14.352702707637551,
      "core_speedup": 38.29815897023655
    },
    {
      "name": "shuffled-duplicates",
      "rows": 44000,
      "times": 2000,
      "symbols": 100,
      "input_sha256": "ae112574398e82c231be0a28d78fe5107877104321605ec991feceb47b9b06fa",
      "max_abs_error": 0.0,
      "measurements": {
        "rust_e2e": {
          "median_ms": 11.486625000543427,
          "min_ms": 10.540666997258086,
          "p95_ms": 11.698274999071145,
          "samples_seconds": [
            0.011486625000543427,
            0.010540666997258086,
            0.011657499999273568,
            0.010611333000269951,
            0.011654874997475417,
            0.011189917000592686,
            0.011715749998984393
          ]
        },
        "python_e2e": {
          "median_ms": 125.51724999866565,
          "min_ms": 123.25570800021524,
          "p95_ms": 130.56915020060842,
          "samples_seconds": [
            0.13230800000019372,
            0.12620462499762652,
            0.1251406669980497,
            0.12651183400157606,
            0.12334308400022564,
            0.12551724999866565,
            0.12325570800021524
          ]
        },
        "python_core": {
          "median_ms": 118.49037499996484,
          "min_ms": 117.37995799921919,
          "p95_ms": 149.45228750038947,
          "samples_seconds": [
            0.11821224999948754,
            0.11782408400176791,
            0.16107462500076508,
            0.12233349999951315,
            0.11849037499996484,
            0.12070308300098986,
            0.11737995799921919
          ]
        },
        "normalize": {
          "median_ms": 5.70766700184322,
          "min_ms": 4.735542002890725,
          "p95_ms": 6.264158201156533,
          "samples_seconds": [
            0.005232792002061615,
            0.006308083000476472,
            0.005972249997284962,
            0.006161667002743343,
            0.00570766700184322,
            0.005512209001608426,
            0.004735542002890725
          ]
        },
        "python_ipc_encode": {
          "median_ms": 0.8904579990485217,
          "min_ms": 0.8550419988750946,
          "p95_ms": 1.1839499024063111,
          "samples_seconds": [
            0.0008904579990485217,
            0.001286000002437504,
            0.0009372499989694916,
            0.0009458330023335293,
            0.0008879580018401612,
            0.0008799159986665472,
            0.0008550419988750946
          ]
        },
        "python_ipc_decode": {
          "median_ms": 0.49325000145472586,
          "min_ms": 0.23300000248127617,
          "p95_ms": 0.6347081012791023,
          "samples_seconds": [
            0.0006379580008797348,
            0.0005181669985176995,
            0.0004932500014547259,
            0.00023300000248127617,
            0.0004899160012428183,
            0.0004892500001005828,
            0.0006271250022109598
          ]
        },
        "native_profile_call": {
          "median_ms": 4.192291999061126,
          "min_ms": 3.967334003391443,
          "p95_ms": 4.808274898459786,
          "samples_seconds": [
            0.004194791999907466,
            0.003997916999651352,
            0.003995291997853201,
            0.004192291999061126,
            0.004917374997603474,
            0.004553708000457846,
            0.003967334003391443
          ]
        },
        "rust_ipc_decode": {
          "median_ms": 0.338625,
          "min_ms": 0.317,
          "p95_ms": 0.44791269999999994,
          "samples_seconds": [
            0.000338625,
            0.000477625,
            0.000373167,
            0.000317,
            0.00032625,
            0.00032925,
            0.000378584
          ]
        },
        "rust_core": {
          "median_ms": 3.79825,
          "min_ms": 3.463584,
          "p95_ms": 4.4116045999999995,
          "samples_seconds": [
            0.00379825,
            0.003463584,
            0.003566709,
            0.00381,
            0.004523417,
            0.004150709,
            0.003522666
          ]
        },
        "rust_ipc_encode": {
          "median_ms": 0.043875000000000004,
          "min_ms": 0.038708,
          "p95_ms": 0.050454599999999995,
          "samples_seconds": [
            4.0875e-05,
            3.8708e-05,
            3.9292e-05,
            4.3875e-05,
            4.8209e-05,
            5.1417e-05,
            4.5958e-05
          ]
        },
        "conversion_total": {
          "median_ms": 1.8429590004242173,
          "min_ms": 1.5397080048148055,
          "p95_ms": 2.196724800647119,
          "samples_seconds": [
            0.0019079159999282566,
            0.0023205000009552034,
            0.0018429590004242174,
            0.0015397080048148055,
            0.0017523330030829794,
            0.00174983299876713,
            0.0019067090010860543
          ]
        }
      },
      "e2e_speedup": 10.927252347206206,
      "core_speedup": 31.196044230886553
    }
  ]
}