我想测试在for循环中使用箭头函数是否比使用全局函数慢得多。令我惊讶的是,在所有经过测试的浏览器(Chrome、Edge、Firefox)中,for循环中的箭头函数比全局函数快5-10倍。
我创建了一个杰斯普夫。
下面是初始循环:
for(let i = 0; i <= N; ++i) {
(i) => sum += i;
(sum, i) => sum += i;
}我认为应该更快一点:
for(let i = 0; i <= N; ++i) {
add(i);
addTwo(sum, i);
}其中add函数只是全局函数:
function add(i) {
return sum += i;
}
function addTwo(sum, i) {
return sum += i;
}重复使用全局函数不应该比每次迭代创建箭头函数更快吗?
LE:测试代码是错误的,我实际上并没有调用箭头函数,现在我将其更新为:
for(let i = 0; i <= N; ++i) {
((i) => sum += arr[i])();
((sum, i) => sum += arr[i])();
}现在看来,全局函数方法现在比预期的更快了( chrome上的x2,火狐上的x300,边缘上的x20 )。
发布于 2018-04-17 13:45:41
您不会在每次迭代中创建“新”箭头函数。当js解析您的脚本时,函数只设置一次,它只在每次迭代时创建一个闭包。但是,由于您不调用该函数,所以根本不需要闭包,而且for循环什么也不做,因此速度很快。
https://stackoverflow.com/questions/49879785
复制相似问题