返回资讯中心
外部精选
软件工程
#开发者实时流

开发者用 Lean 4 派生 C 代码,在基准测试中击败 Rust 实现

来源标题:Lean 4 derived C-Code beats Rust in Benchmark Game

hargup 在 twelve-dollar-server-challenge 项目中用 Lean 4 先定义领域及其契约,再从中派生出 C 运行时,该实现已合并至主分支。其内部测试显示,派生出的 C 版本每用户 CPU 消耗比 Rust 的 rust-epoll-scooter1337 提交低 19%。

Hacker News 最新MrBuddyCasino2026/11/11 · 今天19 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Lean 4 派生 C 代码 - #153 #153 已合并 arjaythedev 将 3 个提交合并到 arjaythedev:main(arjaythedev/twelve-dollar-server-challenge:main),来源为 hargup:lean-derive-hargup(hargup/twelve-dollar-server-challenge:lean-derive-hargup)。复制头分支名称到剪贴板 2026 年 10 月 30 日 对话 提交 3 个 检查 文件变更 已合并 Lean 4 派生 C 代码 #153 arjaythedev 将 3 个提交合并到 arjaythedev:main(arjaythedev/twelve-dollar-server-challenge:main),来源为 hargup:lean-derive-hargup(hargup/twelve-dollar-server-challenge:lean-derive-hargup)。复制头分支名称到剪贴板 对话 hargup 评论 2026 年 10 月 24 日 复制链接 复制 Markdown 贡献者 Lean 4 是一种依赖类型语言,常用于定理证明。在这里,我们首先用 Lean 定义领域及其契约,然后从中派生出 C 运行时。 我们的内部测试显示,我们的派生 C 版本每用户消耗的 CPU 比 rust-epoll-scooter1337 提交少 19%,后者在排行榜上排名第一。 期待官方基准测试结果。 加载时出错。请刷新此页面。 hargup 和其他人 添加了 3 个提交 2026 年 10 月 23 日 23:25 lean-derive-hargup:Lean 派生的 feed 服务器(规格、证明、发射器、… … 2f2a6d1 …io_uring 运行时) Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com lean-derive-hargup:自适应批处理、README、移除手写参考… … 587d563 …实现 Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com lean-derive-hargup:检查点在自己的线程上运行;检测外部写… … fd2c149 …入者

  • SQLite 多线程构建;WAL 钩子唤醒一个检查点线程,该线程在自己的连接上运行 PASSIVE 检查点, 因此检查点复制和 fsync 不再阻塞事件循环;如果日志仍超过 16,384 帧,请求线程会对剩余部分执行检查点
  • 普通(非排他)锁定;每批读取 SQLite 的数据版本,任何其他连接的提交都会关闭原生计划, 读取由规格的 SQL 提供
  • README:锁定、检查点和测量更新(30 秒降速运行) Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com hargup 评论 2026 年 10 月 25 日 复制链接 复制 Markdown 贡献者 作者 加载时出错。请刷新此页面。 arjaythedev 添加了一个提交 引用了 此拉取请求 2026 年 10 月 28 日 排行榜:#153 lean-derive-hargup 280000 … d4e544b Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com arjaythedev 评论 2026 年 10 月 28 日 复制链接 复制 Markdown 所有者 在 Synteq 1 vCPU / 2 GB 机器上对 fd2c149 进行了基准测试:保持了 280,000 用户 5 分钟。这在排行榜上排名第一,略高于 Rust #82(264k)和 F# #142(260k)。 在 280,000 时保持评分为:26,683 req/s,p95 141 ms / p99 316 ms,0 错误,92% 应用 CPU(31 µs/请求),峰值 836 MB。测试 42/42,直接在 :80 上。 搜索:20k–160k 轻松通过(160k 时 p99 78 ms,62% CPU),240k 和 280k 通过(p99 633 / 535 ms,83–90% CPU)。290k、300k 和 320k 失败,78–83% 为“连接被拒绝”,因此它在 280k 左右触发了连接限制,同时也耗尽了 CPU。提醒:第一次运行在 320k 探测时冻结了机器。内核在应用 cgroup 之外耗尽了内存,可能来自 10 个 io_uring 环 × 65,471 个注册描述符。重新运行时机器保持运行。 我保持此 PR 开放而不是合并。你没有什么需要修复的;Arjay 需要做决定。读取直接进入 SQLite 的 B-tree 层(SQLite 事务内的游标,跳过 SQL 引擎),而 GET /feed 依赖于你在启动时和每次插入后检查的 dense-rowid / ordered-created_at 不变量。据我所知,每个请求仍然从 SQLite 读取数据,写入通过 SQL 进行,使用 WAL + NORMAL 和组提交。尽管如此,这是对规则 3 和 5 的新解读,所以我在排行榜上为他标记了这一点。 加载时出错。请刷新此页面。 此内容于 2026 年 10 月 29 日被引用 添加 c-iouring-public 提交(C,原始 io_uring,SQLite B-tree 内部;直接在 :80 上) #158 已合并 v-epoll-i098:io_uring 固定文件,无空闲关闭,页缓存读取 #191 已合并 public 添加了一个提交 到 public/twelve-dollar-server-challenge 引用了 此拉取请求 2026 年 10 月 30 日 默认不丢弃:内存阀门和内存下限关闭 … 0e250e8 套接字压力阀门(CURSED_SOCK503_MBPS)、其积压触发器 (CURSED_PRESS_PENDING)以及两个内存下限(CURSED_MEM_ACCEPT_MB、 CURSED_MEM_SHED_MB)现在默认关闭。每个变量将其部分重新打开 (50 / 20000 / 200 / 120 恢复旧默认值)。PRESS_PENDING=0 现在表示 关闭,而不是被映射回 20,000。 组织者对 1ecaac1 的重新评分保持了 271k,0 错误。285k 失败, 0.62% 错误(39k 阀门 503 加上 17k 超时)和 15 秒 p99,我们将其 归因于接受下限停放接受时的 SYN 重试。Lean arjaythedev#153 在同一台机器上保持 280k,无丢弃。检查点在自己的 线程上运行后,Xeon 在关闭丢弃的情况下以 26k req/s 运行,产生 0 个 503 和 p99 65-135 ms。 README 已更新:设计部分、规则披露和旋钮表。 larvance 提到了此拉取请求 2026 年 10 月 30 日 添加 c-rawsqlite-larvance 提交 #210 已合并 arjaythedev 评论 2026 年 10 月 30 日 复制链接 复制 Markdown 所有者 这太棒了,允许。 加载时出错。请刷新此页面。 隐藏详情 查看详情 arjaythedev 合并了提交 ce8d165 到 arjaythedev:main 2026 年 10 月 30 日 2 项检查通过 哎呀! 加载时出错。请刷新此页面。 此内容于 2026 年 10 月 30 日被引用 HolyPHP:B-tree feed 和 post 路径(277k-286k 用户,重新评分) #213 已关闭 添加优化的 Rust io_uring 服务器提交 #215 开放 添加 curvynes 的 C io_uring SQLite 提交 #217 已合并 hargup 评论 2026 年 10 月 31 日

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →