gpt4 book ai didi

javascript - 为什么 jQuery inArray 太慢了?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:16 24 4
gpt4 key购买 nike

我跑了 some tests ,以及 jQuery inArray() 的数据点比简单的循环慢得多。

array.indexOf() 甚至没有参加测试,因为我之前做过其他测试,而且它的表现更差。

  • 为什么会慢很多?
  • 他们为什么不使用简单的循环?
  • 有什么是我监督的吗?

必须有充分的理由不使用它:

for(var i=0,len=arr.length,rtn=-1;i<len;i++){
if(arr[i]==="arritem"){
rtn=i;
break;
}
}

最佳答案

如果您要测试 jQuery 的 inArray,请实际测试 jQuery 的 inArray,并将苹果与苹果进行比较(调用函数与调用函数——您可以编写在性能非常关键的地方循环内联,但它不会是你的默认 Action ,大概):http://jsperf.com/inarraytest/3

准备 HTML:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>

准备代码:

var arr=[0,1,2,3,4,5,6,7,8,9];

function arrayLoop(elem, array, i) {
var len = array.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays
if ( i in array && array[ i ] === elem ) {
return i;
}
}
return -1;
}

测试:

// jQuery.inArray last
var rtn=jQuery.inArray(9,arr);

// arrayLoop last
var rtn = arrayLoop(9,arr);

// jQuery.inArray middle
var rtn=jQuery.inArray(4,arr);

// arrayLoop middle
var rtn = arrayLoop(4,arr);

// jQuery.inArray first
var rtn=jQuery.inArray(0,arr);

// arrayLoop first
var rtn = arrayLoop(0,arr);

Chrome(具有 indexOf)的结果是 jQuery.inArray 总是比 arrayLoop 快(在第一对测试用例中,我们正在搜索最后一个条目,戏剧性地如此)。

在 IE6(没有 indexOf)上的结果:jQuery.inArray 总是比 arrayLoop 快,尽管并不奇怪(因为它必须做基本相同的工作)——奇怪的是,在我们搜索数组中的第一个条目的情况下,在这种情况下它要快得多。

关于javascript - 为什么 jQuery inArray 太慢了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com