< 返回版块

Bigfish 发表于 2026-10-01 00:23

起因

rpi 是 TypeScript 版 pi 的 Rust 移植。这类"重写"项目最常见的宣传口径是"Rust 更快", 但快多少、快在哪、以及除了快还差在哪,通常没人讲清楚。

所以我把两个工具装在同一台机器上,用同一套协议跑了一遍,同时把两边的代码结构也摊开对比。

怎么测才公平

两个工具都是终端里的 coding agent,一个原生二进制,一个 Node 脚本,很容易测成"比谁启动快"这种没信息量的对比。所以口径先定死:

约束 做法 为什么
同一终点 双方都通过同一套 JSONL 命令通道,测"发出 get_state 到收到响应" 这才是"agent 可用了",不是"参数解析完了"
冷且隔离 每轮用全新的空配置目录:pi 用 PI_CODING_AGENT_DIR,rpi 用 RPI_CODING_AGENT_DIR 两边变量名不同,只设一个会漏掉另一边
离线 pi 用 PI_OFFLINE=1,rpi 用 RPI_OFFLINE=1 测运行时开销,不是网络
占位凭据 给一个假 ANTHROPIC_API_KEY rpi 在空目录下没凭据就不建会话,离线也不会真的用
中性目录 双方都在空临时目录里启动 避免谁去扫了这个大仓库
不采样 计时窗口内不做任何 RSS 采样 否则采样本身会拖慢被测进程
无 shell 绕过 npm 的 .bin/pi shim,直接 node cli.js 否则把 cmd.exe 的启动算进 pi 的时间里

结果

环境:Windows 11 (26200) / x86_64、rustc 1.97.1 --release、Node v25.9.0、rpi 0.3.6、pi 0.87.1。3 轮预热后测 11 轮,取中位数。

指标 rpi(Rust) pi(TypeScript) 差距
--version 17.5 ms 169.5 ms 9.7×
冷启动 17.7 ms 189.5 ms 10.7×
常驻内存 12.0 MiB 91.5 MiB 7.6×
安装体积 21.8 MiB(单二进制) 约 385 MiB(另加 91 MiB Node) 约 18-22×

原始数据(单位 ms):

项目

rpi 是 Rust 原生开发,在开发中借鉴了大量 Pi 的思想,并做了一部分优化,有感兴趣的伙伴欢迎PR

  • GitHub:https://github.com/bigfish1913/pi-rust
  • 官网:https://rpi.laofu.online/
  • 免 Rust 工具链安装:curl -fsSL https://raw.githubusercontent.com/bigfish1913/pi-rust/main/scripts/install.sh | sh

Ext Link: https://rpi.laofu.online/

评论区

写评论

还没有评论

1 共 0 条评论, 1 页