======================================================================
construct-rs vs Python construct 2.10.70 性能基准测试结果
======================================================================

环境信息：
  Python 版本    : 3.14.2
  平台           : Windows-11-10.0.26200-SP0
  处理器         : Intel64 Family 6 Model 183 Stepping 1, GenuineIntel
  machine        : AMD64
  timeit number  : 30000
  repeat (中位数): 5
  测量时间       : 2026-06-28 01:43:26

通过标准：
  - B1-B5 ≥ 4x（硬目标）
  - B6 深嵌套 ≥ 2x（已知退化）
  - B7 功能性（不要求加速比）
  - B1 < 0.5x → 暂停

对比表：
用例   方向     construct-rs (ns)  Python construct (ns)  加速比        判定      
-------------------------------------------------------------------------
B1   parse  336.3              3273.7                 9.73      x [PASS]
B1   build  243.5              3056.7                 12.55     x [PASS]
B2   parse  592.8              6642.0                 11.20     x [PASS]
B2   build  365.8              6170.3                 16.87     x [PASS]
B3   parse  2057.7             25696.6                12.49     x [PASS]
B3   build  1279.3             22619.0                17.68     x [PASS]
B4   parse  3859.6             85614.5                22.18     x [PASS]
B4   build  2439.5             71706.1                29.39     x [PASS]
B5   parse  639.5              7984.7                 12.49     x [PASS]
B5   build  452.6              7557.9                 16.70     x [PASS]
B6   parse  1041.6             12148.0                11.66     x [PASS]
B6   build  592.1              11760.8                19.86     x [PASS]
B7   parse  249.1              1730.4                 6.95      x [-]
B7   build  121.3              1786.3                 14.72     x [-]

用例说明：
  B1: ModbusRTUMessage (3 字段：Int8ub×2 + GreedyBytes)
  B2: 扁平 Struct 10 字段 (Int32ub×10)
  B3: 扁平 Struct 50 字段 (Int32ub×50)
  B4: 扁平 Struct 100 字段 (Int32ub×100)
  B5: 嵌套 Struct 2 层 × 5 字段
  B6: 深嵌套 Struct 5 层 × 2 字段
  B7: 空 Struct (0 字段)

门禁检查：
  [PASS] 全部通过

原始数据（per_call_ns = 每次调用纳秒数）：
  B1 parse rs: median=336.3ns  min=335.5ns
  B1 parse py: median=3273.7ns  min=3239.8ns
  B1 build rs: median=243.5ns  min=239.5ns
  B1 build py: median=3056.7ns  min=3019.0ns
  B2 parse rs: median=592.8ns  min=580.6ns
  B2 parse py: median=6642.0ns  min=6620.1ns
  B2 build rs: median=365.8ns  min=360.7ns
  B2 build py: median=6170.3ns  min=6098.3ns
  B3 parse rs: median=2057.7ns  min=2003.3ns
  B3 parse py: median=25696.6ns  min=25560.6ns
  B3 build rs: median=1279.3ns  min=1263.8ns
  B3 build py: median=22619.0ns  min=22250.1ns
  B4 parse rs: median=3859.6ns  min=3824.4ns
  B4 parse py: median=85614.5ns  min=47178.1ns
  B4 build rs: median=2439.5ns  min=2405.4ns
  B4 build py: median=71706.1ns  min=41932.1ns
  B5 parse rs: median=639.5ns  min=608.2ns
  B5 parse py: median=7984.7ns  min=7941.6ns
  B5 build rs: median=452.6ns  min=451.9ns
  B5 build py: median=7557.9ns  min=7482.1ns
  B6 parse rs: median=1041.6ns  min=1013.8ns
  B6 parse py: median=12148.0ns  min=12021.6ns
  B6 build rs: median=592.1ns  min=578.5ns
  B6 build py: median=11760.8ns  min=11685.9ns
  B7 parse rs: median=249.1ns  min=244.5ns
  B7 parse py: median=1730.4ns  min=1681.1ns
  B7 build rs: median=121.3ns  min=121.1ns
  B7 build py: median=1786.3ns  min=1766.8ns
