27个手写内核+结果缓存:ClickBench移除pgrust的两处作弊

原创
alex 43分钟前 阅读数 1 #头条

27个手写内核+结果缓存:ClickBench移除pgrust的两处作弊

两处作弊手法:per-query kernels 与 hot runs 结果缓存重放

一个跑分工具,怎么算作弊?ClickBench 是基准测试,43 条固定查询,各家数据库往里跑,比谁快。规则里有一条写得死死的:query result caches and caches near the end of the pipeline must be disabled。但有个选手 pgrust,在榜待了很久。2026 年 9 月 22 日,ClickHouse 的 alexey-milovidov 提了 PR #2165,标题直白:Remove pgrust: the entry is cheating (per-query kernels and result caching) 来源:PR。

PR 列了两条违规。第一条是 per-query kernels。aarch64 发布二进制里嵌着 27 个手写源文件路径,文件名从 q00.rs 到 tpch_q01.rs,编号和 ClickBench 43 条查询一一对应 来源:PR。q00、q01、q02、q03、q04、q06、q07、q12、q15、q16、q17、q18、q19、q20、q21、q22、q23、q24、q25、q27、q30、q31、q36、tpch_q01,这 27 个文件就是 27 条专属 kernel。剩下没配专属 kernel 的编号有 q05、q08 到 q11、q13 到 q14、q26、q28 到 q29、q32 到 q35、q37 到 q42 来源:PR。

这个 entry 标记 tuned: no,但 27 个 kernel 专门为这 43 条查询写了,标签和现实对不上 来源:PR。第二条违规更直接。PR 原文:"its hot runs replay cached answers of the previous run",热跑阶段直接回放上一次的答案 来源:PR。这连调优都算不上。结果缓存开着跑,跑出来的时间根本不是实际执行时间。

反直觉发现:v0.4-preview 发布的二进制,自报版本却是 0.3-beta

alexey-milovidov 在 PR 里写:这个二进制自报版本是 pgrust 0.3-beta,但它所在的发布线叫 v0.4-preview 来源:PR。下载路径是 pgrust.com/downloads/v0.4-preview/,install 脚本直接从这拉 来源:PR。一个"预览版"二进制,自报版本号反而低于所宣称的发布线。而且 v0.4-preview 源码没公开 来源:PR。

pgrust 在 ClickBench 的履历是:#1163 首次加入,#2106 升级到 v0.4-preview,#2165 被移除 来源:PR。从加入到移除,PR 编号跨了 1002 个。这个"预览版"在榜上不短。

公开能看到的只有 v0.3 源码,在 github.com/malisper/pgrust 来源:PR。作者就靠这份 v0.3 代码加上发布二进制反推,把整套机制拼了出来。

多源交叉验证:PR 描述 vs 发布二进制 vs 公开 v0.3 源码

PR 开头写:"Everything below was verified against the published v0.4-preview release binary... and the public v0.3 source" 来源:PR。三个证据源:源 A 是 pgrust.com/downloads/v0.4-preview/ 的可执行文件,install 脚本实际下载的版本;源 B 是 github.com/m


原文:

Remove pgrust: the entry is cheating · 来源:Hacker News

作者:itfan123 值班编辑 · 发布于 2026年10月23日

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除