GET*_*Tah 5 javascript performance-testing
我正在考虑改进每个循环的一些,并创建一个测试基准来比较我们使用它们的不同方式.测试可以在这里找到.
我很惊讶地发现这段代码:
function add(val) {
sum += val;
}
values.forEach(add);
Run Code Online (Sandbox Code Playgroud)
比这个表现更好.
values.forEach(function(val) {
sum += val;
});
Run Code Online (Sandbox Code Playgroud)
这些不一样吗?是什么让第一个代码段比第二个更快?
这是你的测试的问题.你的测试是:
values.forEach(add);
Run Code Online (Sandbox Code Playgroud)
和
values.forEach(function(val) {
sum += val;
});
Run Code Online (Sandbox Code Playgroud)
在第二个测试中,您将定时创建函数以及执行函数forEach.在第一个测试中,您没有计算功能的创建时间; 这是在测试的设置阶段完成的,没有定时.
Davin Tryon创建了一个在两种情况下都能创建函数的测试:
function add(val) {
sum += val;
}
values.forEach(add);
Run Code Online (Sandbox Code Playgroud)
与
values.forEach(function(val) {
sum += val;
});
Run Code Online (Sandbox Code Playgroud)
...其中性能差异在某些引擎上消失,而另一方面(声明较慢)则在某些引擎上消失.(后者可能是引擎在测试期间发现它可以内联函数,或者至少跳过一些它无法通过声明跳过的步骤.)

| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |