起因
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 页
评论区
写评论还没有评论