1. 本结果仅供参考,不构成精确性能测量。它反映的是"浏览器在当前系统状态下,用特定 JavaScript / WebGL 负载所能达到的算力",不等同于专业跑分软件(3DMark、Geekbench、Blender Benchmark)的得分,也不应与这类软件的排名直接对照。
2. 结果可能失真的情况:浏览器标签页切到后台会被限频至 30fps 甚至 1fps;系统省电、低电量、温控降频会主动压低频率;屏幕刷新率(60/120/240Hz)会截断帧率上限;操作系统调度、后台索引、杀毒软件、驱动版本、CPU/GPU 微码、内存通道、浏览器版本与实验性 flag 均会改变结果。同机型不同系统版本可能相差 20% 以上。
3. 适合:横向对比同一台设备在不同设置下的表现、对比两台设备在完全相同设置下的相对强弱、验证前端性能优化的收益、判断"遇到平庸代码时还剩多少余量"。
4. 不适合:硬件验收、采购决策、性能索赔、跑分排名、跨浏览器/跨系统横向排名、作为"设备是否达标"的唯一依据。
5. 数据完全保存在本机浏览器(localStorage),不上传、不上云、不收集设备标识。清缓存或无痕模式会清空历史。请自行权衡。
掉帧率 · GC 抖动 · 外推拐点 · 平均 FPS | 双引擎 Canvas 2D / WebGL 1.0 / WebGL 2.0 | 连线恒为 n(n−1)/2,不做任何剔除
N 是什么?N 就是屏幕上点的数量(点数)。这是本工具唯一的自变量,其余全部由它推导:
为什么是 O(N²)?因为真实业务里的"关系图 / 力导向图 / 碰撞检测 / 全连接网络"都是两两相连。N 从 50 涨到 5000,连线数从 1,225 涨到 12,497,500——一万倍。这条曲线足够陡,能把任何设备的性能拐点逼出来;而点数的计算量只是 O(N),相对平缓,不会掩盖 GPU 的瓶颈。
一次测试怎么跑?
档位 = 一个具体的 N 值。比如「起始 50、结束 1000、步长 50」,就是依次测 N=50、100、150…1000,共 20 档。
四个指标分别是什么?
为什么用掉帧率而不是平均 FPS 当主指标?平均 FPS 会被屏幕刷新率"截断"——120Hz 屏最高就是 120,240Hz 屏最高就是 240,两台都跑满的设备平均值完全一样,分不出高下。而掉帧率衡量的是"相对自身预算超标了多少",与刷新率无关,跨设备可比。拐点精度 ≈ 步长的一半,步长 50 就是 ±25 点。
两种代码写法有什么区别?
同一台设备,优化写法可能评到 A,普通写法只有 D。这两个分数都对——前者告诉你"代码写好了能跑多快",后者告诉你"代码没写好还剩多少"。两列之间的差距,就是前端性能优化的收益空间。
三个渲染器测的分别是:软件渲染 → CPU 算力;WebGL 1.0 → GPU 光栅化基线;WebGL 2.0 → GPU 现代路径(原生 32 位索引 + gl_VertexID,顶点带宽少 25%)。不支持的渲染器按钮是灰的,点不动。
三态:跟随系统(随 OS 的 prefers-color-scheme 自动切换)/白天(浅底深字,适合明亮环境、截图、打印)/黑夜(深底浅字,适合暗光环境、夜间测试)。选择会记住,下次打开自动应用。
自定义色只改 CSS 变量,不影响测试逻辑与结果,因此不进入对比铁律。换设备后如需一致观感,重新选一次即可。
决定测多深:结束点数、渲染引擎、连线模式、预热/重复/冷却的默认值。不影响"代码写法"与"测试长度"。
优化=设备极限算力(零 new、1 次 beginPath + 1 次 stroke、VBO 驻留)。 普通=遇到平庸代码时还剩多少余量(每帧 new Array、O(n²) 次 beginPath+stroke、shadowBlur、slice().sort()、每 3 帧 fib(18))。
决定测多密:步长、每档帧数、预热、重复、冷却。与强度独立:可用「低强度 + 详细」在手机上做严谨测试(10→300 步 10,约 4 分钟),也可用「高强度 + 快速」在台式机 30 秒出结果。
Screen Wake Lock API。移动端默认关(常亮 5 分钟在 4000mAh 电池上多耗 3–8%,老化电池掉到 15% 反触发降频,结果更不准);桌面端默认开(插电、散热)。效果看系统脸色:iOS Safari 切后台即释放;小米/华为/OPPO 省电 30 秒无触摸强制熄屏(绕过浏览器);合盖/息屏属 OS 级,网页无权干预。
保存在本机浏览器,不上传、不上云、不跨设备。换浏览器 / 清缓存 / 无痕模式 / 存储空间不足 → 自动消失。删单条会二次确认;清空全部为 O(1)。拖动"步长"滑块时,历史里的"拐点精度 ±X 点"会实时刷新。
连线恒为 0 条(= n(n−1)/2,未剔除)。图中为 n=60 的三角网格,仅为示意;实测按你设定的区间逐档运行。
把 readme.md 与本文件放在同一目录即可点击打开(VS Code / Typora / Obsidian 渲染最佳;Firefox、Safari 双击会显示源码)。若中文乱码,说明文件不是 UTF-8 无 BOM 编码(Windows 记事本默认 ANSI)。
一句话:本工具不联网、不上传、不追踪,所有数据只存在你自己的浏览器里。
1. 我们收集什么?
什么都不收集。本工具是纯静态单文件网页,没有服务器、没有后端接口、没有账号系统。把它复制到 U 盘、断网打开,功能完全正常。已通过代码审计确认:零外部链接、零 fetch / XHR / sendBeacon 请求、零第三方统计脚本(无 Google Analytics、无百度统计、无 Sentry 等)。
2. 数据存在哪里?
全部保存在你浏览器的 localStorage(本机存储)里,共 7 个键:pcbench_last(上次结果)、pcbench_hist(最多 30 条历史)、pcbench_theme(主题)、pcbench_accent / pcbench_accent2(自定义配色)、pcbench_dense(紧凑模式)、pcbench_cfg(配置副本)。这些数据不会离开你的设备,只有你自己能看到。
3. 会不会上传我的硬件信息?
不会。测试会读取显卡型号(用于识别软件渲染)、CPU 核心数、屏幕刷新率、电池状态,但这些信息只显示在屏幕上给你看,不会发送、不会记录、不会用于任何统计。硬件加速检测只调用浏览器本地的 WEBGL_debug_renderer_info 接口。
4. 怎么彻底删除我的数据?
三选一:① 在「9 本机测试历史」卡片点「清空全部」;② 清除浏览器缓存 / 网站数据;③ 使用无痕模式打开(关闭窗口即自动清除)。卸载本工具只需删除这一个 HTML 文件。
5. Cookie 与追踪
不使用 Cookie,不做指纹识别,不跨站点追踪。本工具无法也不会识别你的身份。
1. 结果的性质
本结果仅供参考,不构成精确性能测量。它反映的是"浏览器在当前系统状态下,用特定 JavaScript / WebGL 负载所能达到的算力",不等同于专业跑分软件(3DMark、Geekbench、Blender Benchmark)的得分,也不应与这类软件的排名直接对照。
2. 结果可能失真的情况
浏览器标签页切到后台会被限频至 30fps 甚至 1fps;系统省电、低电量、温控降频会主动压低频率;屏幕刷新率(60/120/240Hz)会截断帧率上限;操作系统调度、后台索引、杀毒软件、驱动版本、CPU/GPU 微码、内存通道、浏览器版本与实验性 flag 均会改变结果。同机型不同系统版本可能相差 20% 以上。
3. 适合
横向对比同一台设备在不同设置下的表现;对比两台设备在完全相同设置下的相对强弱;验证前端性能优化的收益;判断"遇到平庸代码时还剩多少余量"。
4. 不适合(重要)
硬件验收、采购决策、性能索赔、跑分排名、跨浏览器 / 跨系统横向排名、作为"设备是否达标"的唯一依据。将上述用途造成的任何后果,由使用者自行承担。
5. 使用风险
高强度测试会让 CPU / GPU 长时间满载,设备会明显发热、耗电加快、风扇转速提高,这属于正常现象。请确保在通风良好、已插电的环境下运行;患有光敏性癫痫者请注意画面为快速闪烁的随机线段,建议不要观看测试过程。
6. 许可
本工具为 AI 生成的自用工具,可自由使用、复制、修改、分发,不作任何担保,不对因使用本工具产生的任何直接或间接损失负责。
7. 第三方组件
无任何第三方库、无 CDN 依赖、无字体外链。仅使用浏览器原生 API:Canvas 2D、WebGL 1.0 / 2.0、Screen Wake Lock、Battery Status、localStorage、Clipboard。