diff --git a/benchmark/README.md b/benchmark/README.md index e4684cf4..07996b2c 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -48,16 +48,14 @@ kvlang 是被测对象,**分别在三个 kvspace 后端上各跑一遍,占 |------|------|------| | `nqueens` | 递归 + 整数位运算 + 分支 | 位掩码回溯,`occ ^ all` 求可用列、`0-avail` 取最低位 | | `fib` | 调用 / 帧寻址深度 | naive 递归,key 长度随深度增长(对齐 #116) | -| `quicksort` | 数组访问 + 递归 | 显式栈迭代 Lomuto 分区,LCG 造数 | +| `quicksort` | 数组访问 + 递归 | 显式栈迭代 Lomuto 分区,LCG 造数;待排数组与显式栈都落**单个 compact XValue**(`[N]int64`) | | `binary_search` | 有序表折半 | int 键映射作数组,逐次二分求和 | | `binary_trees` | 内存分配 + 指针/引用 | L/R 子结点映射建满树,遍历栈跟随指针计数 | | `hash_table` | 哈希表增删查 | Knuth 乘法散列,插入 + 查找求和 | -| `matmul` | 浮点运算 + 循环优化 | 稠密方阵乘三重循环,float64 校验和 ×1e6 精确对齐 | +| `matmul` | 浮点运算 + 循环优化 | 稠密方阵乘三重循环,float64 校验和 ×1e6 精确对齐;矩阵落**单个 compact XValue**(`[N,N]float64`,storetype=ARRAYND) | | `k_nucleotide` | 字符串 + 哈希表 | 逐字符 `ord` 入哈希表统计碱基频次 | | `iops` | 最小寻址单元往返地板价 | 单 key 读-改-写 `a=a+1`,per-op 延迟(对齐 #204,参考基线) | | `prime_sieve` | 计算 / 控制流密集 | 嵌套 `while` + 取模,O(n²) 内层迭代(参考基线) | -| `matmul_compact` | **数组物理形态**(compact) | 同 `matmul` 算法,矩阵落单个 `[N,N]float64`(storetype=ARRAYND,元素连续打包),对照「每元素一个 key 的散 key map」 | -| `quicksort_compact` | **数组物理形态**(compact) | 同 `quicksort` 算法,待排数组与显式栈都落单个 `[N]int64`,全程在 compact 数组里直接交换 | kvlang 的性能瓶颈是「PC/帧/局部全落 KV 树、每步一次往返」的架构本质(见 kvlang#194 #204 #116), 不是某个热点函数;`iops`/`prime_sieve` 单独隔离出这条地板价,其余八例是跨语言等价算法对照。 diff --git a/benchmark/run.py b/benchmark/run.py index 515ed2ec..16d3239c 100644 --- a/benchmark/run.py +++ b/benchmark/run.py @@ -61,10 +61,6 @@ "hash_table": [50, 100, 200], "matmul": [4, 6, 8], "k_nucleotide": [3, 5, 8], - # 同一算法的 compact 形态:数组落单个 ARRAYND XValue(`[N]T`),而非每元素一个 key 的散 key map。 - # 与 matmul / quicksort 同规模、同基线(native 三份与原 case 算法完全一致,仅输出标签不同)。 - "matmul_compact": [4, 6, 8], - "quicksort_compact": [32, 64, 128], } SCALE_ENV = "BENCH_SCALE" # python/rust/c 从此环境变量读规模 SCALE_TOKEN = "__SCALE__" # kvlang 源码里的规模占位符