Argus
文档目录 · v0.3.4 文档首页

使用指南

界面与操作硬件数据的来源与限制常驻、托盘与快捷键设置

开发指南

环境与命令构建与缓存多语言性能基线与测量提交与发布依赖与安全维护Windows 代码签名

架构

架构管理员启动采集层 argus-core前端Tauri 宿主特权服务系统任务管理器替换技术栈

设计

设计原则曲线动画全局快捷键窗口外观

项目

已知问题路线图
搜索文档

性能基线与测量

基线

测试环境:i5-13500HX(20 个逻辑处理器)、96 GB 内存,Windows 构建 26300、WebView2 155,约 700–800 个进程;普通权限的发布构建,窗口宽 1240 像素、100% 缩放,屏幕 165 Hz,前台采样间隔 1 秒、后台 5 秒。实际刷新率约 164.9–165.1 Hz。

页面与状态 绘制帧率 渲染主线程 CPU 时间
进程页,流畅模式 约 164–165 帧/秒 约 27 ms/s
CPU 总览,流畅模式 约 165 帧/秒 约 11 ms/s
CPU 总览,悬停曲线 约 165 帧/秒 约 30 ms/s
20 个逻辑处理器,流畅模式 约 165 帧/秒 约 14 ms/s
20 个逻辑处理器,均衡模式 约 83 帧/秒 约 16 ms/s
服务、启动与连接页,静止 约 1 帧/秒 约 5–7 ms/s
窗口最小化或隐藏 0 帧/秒 随后台采样与垃圾回收变化

主线程时间不包含 Rust 采集、GPU 进程和渲染合成线程。流畅模式下,CPU 总览与逻辑处理器视图的 GPU 进程和合成线程合计约 1.1–1.3 ms CPU 时间/帧。静态页面按需绘制,低帧数不表示卡顿。

服务、启动与连接页刷新时保留未变化的单元格节点;窗口隐藏后,额外的页面查询为 0,恢复显示时立即刷新。进程分组和排序仅在进程页计算,采样与历史记录仍按原有节拍运行。

进程表的滚动区域独立合成。相同实例中,按 PID 排序并冻结数据、沿 8000 像素范围往返滚动,约 137–143 帧/秒提升至 164–165 帧/秒,主线程每帧约 6.6–6.8 ms 降至 4.4–4.7 ms;流畅模式静止时的合成开销保持在测量波动范围内。窗口化、窄窗口与最大化时的布局和裁剪保持一致。

一次完整采样的中位数约 21 ms,p95 约 29 ms;其中进程采集约 9.5 ms、硬件采集约 6.2 ms、每进程 GPU 查询约 1.5 ms。快照 JSON 约 410 KiB,序列化中位数约 0.5 ms。

未录制跟踪时,进程页关闭曲线动画后的稳定私有提交量约 336 MiB,工作集约 543 MiB,均包含 Argus 与其 WebView2 进程。进程工作集相加会重复计算共享页。表格节点复用减少临时分配,整体常驻内存未确认显著下降。

刚启动的前 20 秒左右,WebView2 首次渲染与图标解码的开销较高。跟踪录制也会增加临时缓冲区,因此内存基线单独采集;强制垃圾回收仅用于存活诊断,不作为常驻占用指标。反复切换页面后的短期峰值会回落,不能据此判断泄漏。

历史存储的既有基线:每次写入约 30 µs(每 5 秒写一帧,约 450 字节,连续运行一天约 8 MB);查询 24 小时约 7 ms,7 天(约 40 MB 记录)约 22 ms(含 IPC,在后台线程执行);指针在历史曲线上移动时每次约 0.2 ms 脚本。

曲线动画各档的帧率与合成开销见曲线动画。

测量方法

  • 用发布构建测量,启动后等约 25 秒再开始。

  • 机器上有其他负载时,直接测 CPU 占用波动极大,同一配置可以在 22%–82% 之间摆动,不能作为依据。改用 Chromium 跟踪:统计帧数和重绘次数,并累加 GPU 进程与渲染进程合成线程的耗时。耗时取顶层任务的线程 CPU 时间(跟踪事件的 tdur),不取墙钟时间:GPU 进程的 GpuVSyncThread 在等待垂直同步,墙钟时间约等于跟踪时长(一段 10 秒的跟踪中约 10 秒,线程 CPU 时间不到 0.1 秒),按墙钟累加会掩盖其余线程的差别。

  • WebView2 在窗口被完全挡住或隐藏时停止渲染。需要在窗口不可见时测量,用下面的环境变量启动发布构建,再通过 DevTools 协议(CDP)录制跟踪;开始前先确认 requestAnimationFrame 在运行:

    set WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=9341 --disable-features=CalculateNativeWinOcclusion
    target\release\argus.exe
    

    测完关掉这个实例:开着的调试端口可以驱动应用里的命令。

  • 连着 CDP 时页面的 visibilityState 照常跟随窗口:窗口隐藏或最小化时为 hidden,不再渲染帧。

  • 同一指标前后两次可能相差约 2%,机器上有其他负载时同一构建相邻两轮可相差 7% 以上。对比两种配置时交替测量,几轮的差异方向一致才下结论。

  • 一段 10 秒的跟踪有时只录到 8–9 秒的帧,比较合成耗时要按帧数折算。进程页的 Paint 次数取决于这段时间里数值变化的进程行(每行单独重绘),随进程活动变化,不能直接比较。

  • 改动画、样式或图表时,用相邻两帧的逐像素比较确认重画只差整体平移(见曲线动画)。

在 GitHub 查看此页