性能基准
这页是证据页,不是承诺页。下面的数字都来自仓库 benchmark 的实测输出,GPU 相关说法也只会停留在“测到哪里就写到哪里”。
当前示例环境:这里展示的是 WSL2 + Node.js 22 下的 CPU-only 参考跑数。只要你在有 WebGPU 支持的环境运行 benchmark,脚本就会补充 GPU 实测结果,但它不会替你虚构。
当前 CPU 证据
当前参考跑数原始数据
| 尺寸 | 均值 (ms) | 中位数 (ms) | 最小值 (ms) | 最大值 (ms) | 标准差 |
|---|---|---|---|---|---|
| 256 | 0.13 | 0.05 | 0.04 | 2.66 | 0.31 |
| 512 | 0.16 | 0.13 | 0.11 | 0.58 | 0.07 |
| 1024 | 0.36 | 0.28 | 0.24 | 3.96 | 0.39 |
| 2048 | 0.80 | 0.64 | 0.42 | 7.34 | 0.80 |
| 4096 | 1.45 | 1.41 | 0.91 | 3.29 | 0.28 |
| 8192 | 3.48 | 3.07 | 2.36 | 11.15 | 1.24 |
| 16384 | 6.95 | 6.71 | 4.84 | 15.86 | 1.45 |
正确阅读这页的方法
- 这些数字只代表 CPU 路径,因为当前 CI 环境没有 WebGPU adapter。
- benchmark 的原则是:任何环境都输出 CPU 实测结果,只有检测到 WebGPU 时才输出 GPU 实测结果。
- 小尺寸的波动更多受 JavaScript runtime 开销影响,而不只是 FFT 算法本身。
- GPU crossover point 必须被视作硬件相关问题,而不是仓库级固定营销口径。
在你的硬件上复现
bash
npm run benchmark1
输出会包含:
- 每个测试尺寸的 CPU 耗时
- 仅当 WebGPU 实际可用时出现的 GPU 耗时
- 用于解释结果的环境信息
这页刻意拒绝做的事
- 不发布固定“预期加速比”。
- 不从 CPU-only 环境外推 GPU 数字。
- 不混淆“已测得的事实”和“看起来合理的猜测”。