新闻详情

新闻详情

首页 / 资讯中心 / 详情

psmux 性能实测:50ms 建会话、15ms 命令往返,Rust 全 LTO 编译到底有多快

发布时间:2026/9/28 20:59:19来源:尧图网络
psmux 性能实测:50ms 建会话、15ms 命令往返,Rust 全 LTO 编译到底有多快
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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32串口调试5分钟闭环:USB转TTL驱动与硬件连接全指南 2026/9/28 21:52:54

STM32串口调试5分钟闭环:USB转TTL驱动与硬件连接全指南

1. 为什么“5分钟搞定”不是口号,而是可复现的操作节奏STM32串口通信,是每个嵌入式新手跨出开发板点亮LED后的第一道真实门槛。它不像GPIO那样只写寄存器就能看到结果,而是一条需要两端协同、软硬咬合、信号精准对齐的“数据通道”。你手里的…

阅读更多 →
校园POS消费数据清洗与行为建模实战指南 2026/9/28 21:52:54

校园POS消费数据清洗与行为建模实战指南

简介:本资源是一份面向本科生与Python初学者的校园消费行为分析实战项目,适用于毕业设计、期末大作业及课程设计场景,聚焦学生群体消费偏好、时段规律与食堂就餐结构等现实问题,助力掌握从数据清洗到建模可视化的完整分析链路。压…

阅读更多 →
ST7789V 8080并口驱动实战:FSMC配置与60fps刷新优化 2026/9/28 21:51:59

ST7789V 8080并口驱动实战:FSMC配置与60fps刷新优化

1. 为什么我要折腾ST7789V的8080并口模式市面上关于ST7789V的教程,十篇里有八篇讲的是SPI驱动,剩下两篇讲的是RGB接口。8080并口(也就是Intel 8080时序的MCU接口)的完整教程少得可怜,能跑通的初始化代码更是凤毛麟角。…

阅读更多 →
Altium Designer集成库IntLib元件调用不显示的根源与实战解决 2026/9/28 21:51:59

Altium Designer集成库IntLib元件调用不显示的根源与实战解决

1. 项目概述:为什么“元件调用不显示”是AD用户最常卡住的生死线Altium Designer里,元件调用后在原理图上一片空白、属性栏里只显示“?”、放置时提示“Component not found”——这种问题我每天至少收到7条私信。不是设计能力不行,而是集成…

阅读更多 →
STM32驱动ST7789V 8080并口屏:从GPIO模拟到FSMC硬件加速实战 2026/9/28 21:51:52

STM32驱动ST7789V 8080并口屏:从GPIO模拟到FSMC硬件加速实战

1. 项目缘起与整体设计思路1.1 为什么还要折腾8080并口屏现在做嵌入式显示,SPI接口的屏几乎占了半壁江山,接线少、驱动简单、Arduino库一抓一大把。但真到了量产项目或者对刷屏速度有要求的场景,SPI那点带宽就开始捉襟见肘了。我去年做一个工…

阅读更多 →
Superpowers实战:给AI编码代理装上技能包、记忆库和工作流 2026/9/28 21:51:52

Superpowers实战:给AI编码代理装上技能包、记忆库和工作流

做AI辅助编程大半年,我最深的感受是:工具越来越强,用起来却越来越散。Codex聊着聊着就忘了上半场的结论,每次新开会话要把项目背景重新讲一遍,团队里各人的Agent配置又五花八门。后来我把一套叫 superpowers 的增强工作…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉