Benchmark 基准测试
在线测量浏览器 JavaScript 运算性能:整数/浮点/字符串/数组/对象五种负载,每秒操作数(ops/sec)对比,一键复制测试代码。
📝 Benchmark Benchmark
Build and run small JavaScript benchmarks in your browser — compare snippets with real timings.
📐 工作原理与说明
对多个候选实现做可复现的性能对比,输出统计指标。
- 采样:每个候选重复运行 N 次,记录耗时,统计均值、中位数、标准差与百分位。
- 预热:先跑若干轮 warmup 让 JIT 完成优化再正式计时,避免冷启动偏差。
- 计时:用
performance.now()(单调高精度时钟)而非Date.now()。 - 干扰:浏览器后台节流、GC 停顿与其他标签页负载都会污染结果,应多轮取稳定值。
负载类型:
时长
运行耗时
—
运算次数
—
性能(ops/sec)
—
💡 测试运行期间页面可能短暂卡顿,属正常现象。结果受浏览器/设备影响,仅供参考。
📚 深度解析:Benchmark 基准测试
💡 常见使用场景
- 对比两段代码的吞吐/耗时,定位性能瓶颈。
- 对比两种实现:把数组去重的 Set 方案与 filter + indexOf 方案各跑若干轮,用中位数而非均值判断优劣——均值更容易被 GC 停顿等偶发尖刺拉偏。
对比
对 1e6 整数分别用 `for` 累加与 `sum()`,输出各自 ops/sec 与相对倍数。
❓ 常见问题(FAQ)
- 为何要预热?
- JIT/缓存使首次偏慢,预热后测值更稳。
- 为什么每次跑结果都不一样?
- JIT 编译、CPU 频率动态调整、垃圾回收与其他进程争抢都会引入波动。可靠做法是:先 warmup 若干轮让 JIT 稳定,再重复采样足够多次,报告中位数与百分位(p95/p99),并在同一台机器、相近负载下比较;只看单次运行的数字没有意义。