
psmux 性能实测50ms 建会话、15ms 命令往返Rust 全 LTO 编译到底有多快【免费下载链接】psmuxTmux on Windows Powershell - tmux for PowerShell, Windows Terminal, cmd.exe. Includes psmux, pmux, and tmux commands. This is native High-Performance Tmux designed for Windows in Rust 项目地址: https://gitcode.com/gh_mirrors/ps/psmuxpsmux 是一款用 Rust 编写、原生运行在 Windows 上的 tmux 式终端复用器直接对接 ConPTY无需 WSL。本文基于官方基准测试的真实数据拆解它 50ms 创建会话、15ms 命令往返背后的性能来源并解释全 LTO Release 编译是如何把每一次按键的延迟压到个位数毫秒的。 实测数据一览先看结论所有数字均出自官方性能档案2026-08-29psmux 3.3.8测试机为Windows 11 AMD Ryzen AI MAX 395 PowerShell 7.6.5计时方式为 PowerShell 脚本中用Stopwatch包住每一次psmux调用——也就是说连启动psmux.exe客户端进程本身的时间都算在内没有任何只测服务器的放水操作。指标实测值说明CLI 命令往返list-panes、send-keys等15 ~ 25 ms含客户端进程启动 loopback TCPnew-session -d创建会话warm 池就绪45 ~ 51 ms默认开启热备池new-session -d创建会话强制冷启动203 ~ 243 ms设为PSMUX_NO_WARM1新窗口显示 pwsh 提示符约 100 ms热/ 400~550 ms冷取决于备用 shell 是否就绪服务器内存11 窗口、16 窗格29.5 MB 工作集每窗格仅增加 3 个轻量线程帧序列化dump-state约 1 ms100 窗格存活时仍是 1 ms 级一句话总结慢的是 shell 启动pwsh 本身就要 210ms 以上不是 psmux。官方基准甚至拿同机裸跑pwsh -NoProfile -c exit的 211ms 做了对照组。 50ms 建会话的秘诀热备会话池Warm Pool冷启动一个会话意味着拉起服务器进程 → 绑定监听端口 → 加载配置 → 启动首个 shell实测要216ms 左右。而 psmux 默认后台维护一个隐藏的__warm__待命服务器它提前加载好配置、启动好 shell 在那里待命。当你执行psmux new-session时psmux 只是把它的注册文件改名成你要的会话名再发一条认领消息——于是 4 倍速差就这么来的。热备池还有第二层每个服务器内部预启动备用 shell。默认warm-pool-size 2第一次new-window/split-window约 100ms 内拿到已就绪的提示符连续批量开窗口时备用被领完后回落到 400~550ms 的冷启动同时后台线程并发补池。这解释了一个有趣的实测现象暂停一阵后开第一个窗口飞快紧接着连开五个则会快、慢、快、慢交替——这正是热池工作与耗尽的直接证据。机制细节可查阅docs/warm-sessions.md⚡ 15ms 命令往返时间花在了哪里很多用户会疑惑一条send-keys怎么也要十几毫秒答案是服务器回答一条查询只要约 1ms剩下 15ms 全是 Windows 创建psmux.exe客户端进程、加载它、读取三个小文件的开销。对脚本用户这有个实用推论循环发送 100 条send-keys大约花 2 秒其中大部分是 Windows 创建了 100 次客户端进程。如果你的自动化脚本要密集下发命令两个提速手段用\;把多条命令链在一次调用里执行或使用 control mode——单条持久连接发大量命令避免反复起进程。 全 LTO 编译Release 配置长什么样打开根目录的 Cargo.toml末尾四行就是 psmux 的性能底座[profile.release] opt-level 3 lto true codegen-units 1 strip symbols给新手解释一下这四行opt-level 3最高级别优化编译器会做内联、循环展开、向量化等激进变换lto true全链接时优化编译器在链接阶段看穿所有 crate 的边界重新优化——跨模块的函数调用可以整个被内联掉死代码被彻底删除。没有 LTO 时每个编译单元只能各扫门前雪codegen-units 1牺牲编译速度换取单线程代码生成让优化在整份代码上统一生效strip symbols剥离调试符号二进制更小、加载更快。代价是编译时间显著变长全 LTO 单 codegen unit 是大项目里最慢的发布配置但换来的是运行时每个热路径——VT 解析、帧序列化、loopback 收发——都跑在高度内联后的紧凑代码上。 低延迟设计不止靠编译优化光有全 LTO 还不够psmux 在架构层面有一整套低延迟设计且每一项都对应真实源码文件可自行查证技术效果源码位置服务器主动推帧状态变化后几毫秒内推给客户端无需轮询等待src/server/mod.rs自适应轮询打字时 10ms、空闲 16ms、粘贴时 1ms 动态切换src/client.rs读取/解析线程分离64KB 读取线程不占解析锁突发输出 1ms 合并src/pane.rs每窗格独立写队列卡死的子进程不会拖住整个服务器循环src/pane.rs提前写端口文件监听就绪即写.port客户端 10ms 内即可挂上src/main.rs高于普通进程优先级全核编译时按键输入不被饿死src/platform.rs还有一个常被忽略的点kill-session实测 250~283ms 是故意的——它要遍历每个窗格的进程树、逐一校验 pid 创建时间防止误杀复用的 pid、并等待全部退出。 自己动手复现基准测试怎么跑仓库自带完整的性能测试套件全部数据可复现极端规模压测100 窗格、命令往返、dump-state序列化tests/test_extreme_perf.ps1分位数基准报告冷启动 71ms、热会话 1ms、输出吞吐 10,000 行/秒等tests/bench/BENCHMARK_RESULTS.md五套门槛式性能门禁启动、按键、创建、空闲流量、终端横评tests/bench/与 Windows Terminal、WezTerm、Alacritty 同机对比的横评套件docs/performance.md 中有 2026-09-10 的完整记录最小复现步骤cargo build --release之后用 PowerShell 7 执行pwsh -NoProfile -File tests\test_extreme_perf.ps1即可。每次运行还会把带机器负载信息的 JSON 指标写入用户目录配合 tests/perf_summary.ps1 可以画出趋势线——某个数字变慢了到底是代码回归还是机器在忙一看便知。❓ 常见问题比 WSL 里的 tmux 更快吗对 PowerShell 窗格是的psmux 的窗格是 ConPTY 直接子进程而 WSL 里的 tmux 要经wsl.exe互操作层跳一次。对 WSL 内的 Linux shell 两者相当。内存会被吃掉吗一个窗格 psmux 侧增加不到 1MB 私有内存 3 个线程真正的大头是 shell 本身每个 pwsh 约 94MB——这在任何终端里都如此。16 窗格会话的服务器只有 29.5MB。想让 psmux 更快该改什么按收益排序精简 PowerShell profile或工具窗格用pwsh -NoProfile→ 保持热备池开启默认就是开的→ 脚本循环改用\;链式或 control mode。结论50ms 建会话靠的是热备池的预启动 认领15ms 往返里 psmux 自己只占约 1ms而全 LTO 的 Release 编译保证了每一条热路径都以最高效的机器码运行。这套数字背后不是营销话术而是一套能在你自己机器上逐条复现的测试门禁。【免费下载链接】psmuxTmux on Windows Powershell - tmux for PowerShell, Windows Terminal, cmd.exe. Includes psmux, pmux, and tmux commands. This is native High-Performance Tmux designed for Windows in Rust 项目地址: https://gitcode.com/gh_mirrors/ps/psmux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考