有人可以解释为什么这个测试表明jquery $.each比本机更快
Can someone explain why this test shows that jquery $.each is faster than native for?
我在Chrome的浏览器控制台上运行以下测试。我想看看本机的速度有多快,只是发现结果显示jquery$each更快?我知道这不是真的,但如果可能的话,我希望得到一个解释。
var array = new Array();
for (var i = 0; i < 10000; i++) {
array[i] = 0;
}
console.time('native');
var l = array.length;
for (var i = 0; i < l; i++) {
array[i] = i;
}
console.timeEnd('native');
console.time('jquery');
$.each(array, function(i) {
array[i] = i;
});
console.timeEnd('jquery');
native: 26.160ms
jquery: 5.665ms
如果我将相同的代码放在 setTimeout(( 中,那么结果如下所示:
native: 0.123ms
jquery: 0.885ms
这可能是由于 Chrome 编译函数而不是编译函数之外的控制台输入。编译的函数运行速度要快得多。 jQuery.each
已经编译(当jQuery包含在页面上时(。
将您的第一个测试包装在一个立即调用的函数(Chrome 可以在执行前编译(中,您将看到非常相似的结果:
console.time('native');
(function(){
var l = array.length;
for (var i = 0; i < l; i++) {
array[i] = i;
}
})();
console.timeEnd('native');
console.time('jquery');
// ... unchanged
console.timeEnd('jquery');
native: 3.518ms
jquery: 3.308ms
这就是为什么当您将代码放入setTimeout
函数中时会看到截然不同的结果,例如 setTimeout(function() { ... }, 1)
.函数中的代码被编译并运行得更快。
相关文章:
- jquery.each(第2行)添加背景色
- 如何使用jQuery each分离字符串中的元素
- Jquery.each数组推送不起作用
- jQuery each()没有'使用OOP方法是行不通的
- jquery.each函数和传递变量
- Coffeescript jQuery each loop
- Jquery.each,但仅限于当前元素
- 如何将密钥与 JQuery $.each 循环中的字符串进行比较
- jquery .each 循环来执行每个数组项,它们之间有延迟
- 我是否错误地使用了jQuery .each函数
- 如何在每个元素上循环调用jquery.each的数组
- 方法中的Jquery each
- jQuery each()在null上中断
- jQuery each, find, and append
- 如何访问jQuery.each's”;这个“;在TypeScript中
- 在jquery each()迭代器函数中访问JS对象
- Jquery .each 函数上的奇怪问题
- 使用jquery each(),什么是确保我不会;这个html表中没有超过5列
- jQuery .each() 在嵌套数组中
- 对jQuery $.each函数感到困惑