性能基准对比
免费在线使用 性能基准对比 无需安装即可使用工具
关于基准测试对比
并排运行两段 JavaScript 代码片段,迭代次数可配置(限制在 1-1,000,000 之间),分别报告总耗时和每秒操作次数,并宣告更快的一方及其速度倍率。在测量开始前会先运行一次共享的 Setup 代码块。
使用方法
1. 可选地在顶部卡片填写 Setup 代码(仅运行一次;例如 'let arr = new Array(1000).fill(0)')。 2. 输入 代码 A 和 代码 B —— 每段都会作为函数体,因此请写普通语句,例如 'arr.map(x => x + 1)'。 3. 设置 迭代次数(1-1,000,000)。 4. 点击 运行。会先执行 min(n,100) 次短预热,然后再运行计时的循环。
解读结果
每个代码块都会报告以 ms 为单位的总耗时以及每秒操作次数,后者按 n / (time/1000) 计算。获胜的卡片以绿色高亮显示,并有一行摘要显示速度倍率(例如 'A is 2.3x faster than B')。如果某段代码抛出异常,其结果会显示错误字符串,且不会宣告获胜者。
▶这是精确的生产级基准测试吗?
不是。它使用 new Function 和简单的 for 循环以及 performance.now。没有统计抽样,除了一次 100 次调用的预热外没有隔离 JIT 预热,浏览器的优化器可能会严重扭曲短循环的结果。请将结果视为快速的对比提示,而非严谨的测量。
▶代码片段能访问我页面的变量吗?
不能。每个片段都被包装在 new Function 中,在自己的作用域里运行,而不是页面上的闭包。Setup 代码块必须声明片段所需的任何内容(例如在 setup 函数的顶层用 let/var 声明)。
▶如果 Setup 抛出异常会怎样?
错误会被捕获在基准测试函数内部,并作为当时正在测量的那个片段的结果返回。运行 按钮会一直禁用,直到 代码 A 和 代码 B 都有内容为止。
▶为什么很高的迭代次数似乎被限制在 1,000,000?
迭代次数会通过 Math.min/Math.max 被钳制到 1-1,000,000 范围内,以防止页面卡死。所报告的每秒操作次数仍然根据实际使用的 n 计算。
如果这个工具对你有帮助的话,请考虑请我喝杯咖啡。
请给我买杯咖啡吧。