比方說,我有以下的JS我的網頁上(compare
是問題不相關的一個簡單的比較器功能):爲什麼在Safari中爲了排序jQuery集而不是數組需要更多時間?
function sortArray(a) {
a.sort(compare);
}
function sortJQuerySet(b) {
b.sort(compare);
}
$(document).ready(function(){
var a = [], b = [], i = 0, n = 1000;
for(i=0; i<n; ++i) {
a.push($('<div>' + i.toString() + '</div>'));
b.push($('<div>' + i.toString() + '</div>'));
}
b = $(b);
$('#runner').click(function(){
sortArray(a);
sortJQuerySet(b);
});
});
正如你所看到的,a
和b
在本質上是相同的數組,唯一的區別是b
變成jQuery set
。我正在嘗試對這兩個數組進行排序並分析排序。請注意,元素的兩個數組數爲1000
下面是在Safari兩個容器排序分析結果:
Safari瀏覽器,使約五十萬比較 jQuery的設置與1000個元素。這看起來更像是二次排序,比如O(n log n)排序。與此同時,排序本地數組就很好。
對於兩種容器類型,在Chrome瀏覽器中排序的工作時間大約相等。
P.S.我使用Safari 6.0.4,jQuery 1.7.1和jQuery 1.10.1。 代碼:https://gist.github.com/ikostia/5925715
你的排序函數返回'-1'或'0'每個元素。第二行不對。 – Blender
另外''。text'返回'text'函數,而不是元素的文本。 – Blender
@Blender哦,我明白了。對不起(已經改變)。無論如何,這並不會改變函數本身被稱爲二次次數的事實。 – ikostia