Javascript 有人能解释一下为什么这个测试显示jquery$。每个都比本地的快吗?
我正在Chrome浏览器控制台中运行以下测试。我想看看原生版的速度有多快,结果却发现jquery$each的速度更快了?我知道这不是真的,但如果可能的话,我想要一个解释Javascript 有人能解释一下为什么这个测试显示jquery$。每个都比本地的快吗?,javascript,jquery,for-loop,each,Javascript,Jquery,For Loop,Each,我正在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++) {
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
这可能是由于Chrome编译函数,而不是在函数之外编译控制台输入。编译后的函数运行得更快<代码>jQuery。每个都已编译(在页面上包含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
console.time('native');
(功能(){
var l=数组长度;
对于(变量i=0;i
这就是为什么在
setTimeout
中将代码放入函数中时,会看到截然不同的结果,就像setTimeout(function(){…},1)
一样。函数内部的代码被编译并运行得更快。这可能是由于Chrome编译函数,而不是编译函数外部的控制台输入。编译后的函数运行得更快<代码>jQuery。每个都已编译(在页面上包含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
console.time('native');
(功能(){
var l=数组长度;
对于(变量i=0;i
这就是为什么在
setTimeout
中将代码放入函数中时,会看到截然不同的结果,就像setTimeout(function(){…},1)
一样。函数中的代码被编译并运行得更快。它们实际上并不相等,因为i
的值是以完全不同的方式计算的。因此,您的意思是测试代码有问题吗?这似乎不是一个公平的测试,因为您已经更改了多个因素。@Quentin正确的测试代码是什么与?用于方法比较:它们实际上并不相等,因为i
的值是以完全不同的方式计算的。因此,您的意思是测试代码存在问题?由于您改变了多个因素,这似乎不是一个公平的测试。@Quentin测试的正确代码是什么?用于方法比较:确实如此结果现在差不多了,我相信这个答案告诉了我下一步的方向和方向。事实上,结果现在差不多了,我相信这个答案告诉了我下一步的方向和方向