Rust 重写的 Pi 比原生 TypeScript 版快多少
内容提要
rpi 是 TypeScript 版 pi 的 Rust 移植。作者在同一台 Windows 机器上,以相同 JSONL 命令通道、冷启动、离线、中性目录等条件对比两者:rpi 启动约 17.5 毫秒,pi 约 169.5 毫秒,快约 10 倍;常驻内存 12MiB 对 91.5MiB;安装体积约 21.8MiB 对 385MiB 加 Node。rpi 为 Rust 原生开发,借鉴 Pi 思想并做优化,欢迎 PR。
延伸解读
测试方法:如何确保公平对比
作者设定了严格的测试条件:双方通过同一JSONL命令通道,测量从发出get_state到收到响应的时间;每轮使用全新的空配置目录,并设置离线模式与占位凭据;在空临时目录中启动,避免扫描大仓库;计时窗口内不进行RSS采样;绕过npm的.bin/pi shim,直接运行node cli.js。这些措施旨在排除网络、配置、shell启动等干扰,使对比聚焦于运行时开销。
性能差距:启动速度与内存占用
在Windows 11环境下,rpi的--version耗时17.5毫秒,pi为169.5毫秒,相差约9.7倍;冷启动rpi为17.7毫秒,pi为189.5毫秒,相差约10.7倍。常驻内存方面,rpi占用12.0 MiB,pi占用91.5 MiB,相差约7.6倍。这些数据表明,Rust重写在启动速度和内存效率上具有显著优势。
安装体积:单二进制与Node依赖的差异
rpi作为单二进制文件,安装体积约为21.8 MiB;而pi需要约385 MiB的安装体积,并额外依赖91 MiB的Node运行时,总体积差距约为18至22倍。这意味着rpi在部署和分发上更为轻量,尤其适合对磁盘空间或依赖管理有严格要求的场景。
项目背景与参与方式
rpi是TypeScript版pi的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。
Q&A
rpi 和 pi 是什么关系?
rpi 是 TypeScript 版 pi 的 Rust 移植版本。
rpi 比 pi 快多少?
在启动速度上,rpi 约 17.5 毫秒,pi 约 169.5 毫秒,rpi 快约 10 倍。
rpi 和 pi 的内存占用对比如何?
rpi 常驻内存约 12.0 MiB,pi 约 91.5 MiB,rpi 内存占用约为 pi 的 1/7.6。
rpi 的安装体积比 pi 小多少?
rpi 安装体积约 21.8 MiB(单二进制),pi 约 385 MiB 另加 91 MiB Node,rpi 体积约为 pi 的 1/18 到 1/22。
测试 rpi 和 pi 性能时如何保证公平?
测试采用相同 JSONL 命令通道、冷启动、离线模式、占位凭据、中性目录、不采样、无 shell 等条件,确保对比公平。
rpi 如何安装?
可以通过命令 `curl -fsSL https://raw.githubusercontent.com/bigfish1913/pi-rust/main/scripts/install.sh | sh` 安装,无需 Rust 工具链。