补读改写耗时基准,以及 kvspace·cp / cpdir 教程(#330) - #352
Conversation
ab670ee to
3c9418c
Compare
这个 PR 同样带上了 #329 的 head 改动,回归同样是
|
| 分支 | test-fs | test-shm |
|---|---|---|
| master | PASS:214 FAIL:3 | PASS:213 FAIL:4 |
| 本 PR | PASS:0 FAIL:217 | fail |
本 PR 的三份文件与 #351 字节级完全相同:
runtime-rs/src/engine.rs | 64+ 12- (与 #351 相同)
runtime/src/runtime_internal.h| 4+ 0- (与 #351 相同)
runtime/src/xvalue.c |152+ 0- (与 #351 相同)
即本 PR = #351 的 head 改动 + bench/iops + tutorial/13-stdlib/kv/{cp,cpdir}.kv 的增量。详细定位与复现步骤见 #351 的评论(根因在 runtime/src/xvalue.c 的 box64 编码器与 runtime/src/kvspace.c:529 的 kvspaceDecodeHead 不兼容)。
建议拆开
#329 目前仍是 OPEN 的 RFC,head 格式的归属方是 kvspace,而 kvspace 侧当前仍是可变长 head(kvspace.h 顶部注释为权威定义)。在格式定案之前,#329 的改动不适合混进性能 PR。
本 PR 里真正独立、且与本回归无关的部分:
bench/iops/*微基准与bench/run.shbench/baseline.md、bench/v0.3.md、bench/issue-330-progress.mdtutorial/13-stdlib/kv/cp.kv、cpdir.kv.gitignore
建议把这三份 runtime 文件从本 PR 摘掉、只留上述内容,这样可以独立评审合入;#329 的 head 改造单独走一个 PR,等格式在 kvspace 定案后再推进。
|
已按评论处理:
|
a87ce86 to
2c284b5
Compare
|
又收了一遍,提交历史已 rebase 成一条,不再带 #329 的 runtime 文件:
|
bench/iops 用同一段 a = a + 1,分别量 Rust、Python 和 kvspace 一次读改写要多久。 kv.c 按当前 kvspace 接口写:Get 之后用 WriteInPlace,写不进去再 WriteNewPlace。 另外给已经有的 kvspace·cp、kvspace·cpdir 补了教程。
becbdc3 to
bda28be
Compare
|
三块都落在实处,说几点具体的。 1. baseline 的冻结纪律——标题直接写 "do not treat as an improvement",并且明确声明 #204 的 695.8 ns/iter 与 #194 的 33.37 s "is not this baseline"。这条我特别认可:基准的全部价值在跨时间可比,一个从 issue 里引来的旧数字会立刻把它变成不可比的噪声。把 host / DSN / 日期钉死、把"引用数字 ≠ 本基线"写明白,是让后面所有优化收益变成可判定命题的前提。 2. 三语言量同一段 3.
最后那句 "PC remains a kvspace path ( 一句上下文,供参考:master 现在的红不是这个 PR 带来的(它的文件全部通过),而是刚落的锚例在驱动实现—— prime_sieve 那行已经把目标量级摆在台面上了。有了这份冻结基线,下一步优化是不是真的改善,就有据可判了。继续。 |
#330 里先合这两块,runtime 不动。
bench/iops:同一段a = a + 1,Rust、Python、kvspace 各跑一遍,看一次读改写要多久。kv.c按当前接口写,Get 之后用 WriteInPlace,写不进去再 WriteNewPlace。bench/baseline.md:改性能之前记下的一组数。tutorial/13-stdlib/kv/cp.kv、cpdir.kv:给现有的kvspace·cp、kvspace·cpdir补教程。