jsで配列要素(100k-1kk)を多くソートする必要があります。 多くの可能性があります空白( '')文字列。空の文字列をarray.sort(?)で処理すると、クロムのコールバックが非常に遅くなります。
私は空の値を扱う私のソート機能で- この値は常に最後.its来るように、[OK]を..私は多くnullまたは未定義または空白を持ってまで(「」)データ
で値たとえば、データにヌルが多い場合や空の文字列の場合は、パフォーマンスが低下します。
そして、主なものは、クローム(今49.0.2623.110 mについて、少なくとも最後のバージョン)
のfirefox(45.0.1)非常によく動作します(でもスタンダール場合とでは、このフラグメントが非常に遅いです空のデータなしmy test x10 faster?) クロムとファイアフォックスだけのテスト。
PS私はjsperfは、あなたのコンパレータは常に値のすべてのペアのための論理的な答えを返すことを確実にするためにthat.anyway
https://jsfiddle.net/3h0gtLu2/18/
data = []
var i = 0;
while (i++ <1000){
data.push('' + i)
}
while (i++ < 20000){
data.push(''+i )
}
var start = window.performance.now()
data.sort(function(a,b){
if (a == null || a == undefined)
return 1;
else if (b == null || b == undefined)
return -1;
return (parseInt(a) - parseInt(b));
})
$('#time0').html($('#time0').html() + (window.performance.now() - start))
data = []
var i = 0;
while (i++ <1000){
data.push('' + i)
}
while (i++ < 20000){
data.push(null )
}
var start = window.performance.now()
data.sort(function(a,b){
if (a == '' || a === null || a == undefined)
return 1;
else if (a == '' || b === null || b == undefined)
return -1;
return (parseInt(a) - parseInt(b));
})
$('#time1').html($('#time1').html() + (window.performance.now() - start))
data = []
var i = 0;
while (i++ <1000){
data.push('' + i)
}
while (i++ < 20000){
data.push('' )
}
var start = window.performance.now()
data.sort(function(a,b){
if (a == null || a == undefined)
return 1;
else if (b == null || b == undefined)
return -1;
return (parseInt(a) - parseInt(b));
})
$('#time2').html($('#time2').html() +(window.performance.now() - start))
data = []
var i = 0;
while (i++ <1000){
data.push('' + i)
}
while (i++ < 20000){
data.push('' )
}
var start = window.performance.now()
data.sort(function(a,b){
if (a == '' || a == null || a == undefined)
return 1;
else if (b == '' || b == null || b == undefined)
return -1;
return (parseInt(a) - parseInt(b));
})
$('#time3').html($('#time3').html() +(window.performance.now() - start))
コードを投稿しないと、誰も助けることはできません。 – Pointy
残念ながらコードが投稿されました:) –
問題は、並べ替えの比較関数が矛盾しているため、ソートアルゴリズムが狂ってしまうことがあります。同じ2つの値の場合、コンパレータは常に同じ答えを返さなければなりません。 – Pointy