同事寫了段JQuey的代碼,在某些機(jī)器上,會(huì)出現(xiàn)IE假死的性能問題。
我測(cè)試了一下代碼花費(fèi)的時(shí)間,在我的機(jī)器上,會(huì)花費(fèi)600多毫秒,但在某些機(jī)器上會(huì)花費(fèi)6秒多(10倍的增長(zhǎng)),這樣就導(dǎo)致了IE的假死。而且發(fā)現(xiàn)與IE版本無(wú)關(guān),在大多數(shù)機(jī)器上會(huì)都只需要600多毫秒,不過CPU會(huì)有10%以上的瞬間提長(zhǎng)。
先來(lái)看看出問題的代碼:



開始找原因,看看到底是什么慢?

$(".eXtremeTable") 花費(fèi)20毫秒左右;
$(html).find(".eXtremeTable") 花費(fèi)200毫秒左右;
replaceWith() 花費(fèi)10毫秒左右;
不難定位到是由于$(html).find(".eXtremeTable")這種方式引起的。
(這都是在我機(jī)器上的測(cè)試結(jié)果,而且每次可能不完全一樣)
簡(jiǎn)單的可以這樣優(yōu)化:




遂采用比較原始的辦法,修改源程序如下:






















OK,IE再也不假死了。
問題分析:
原因應(yīng)該就出在jQuery(html)這個(gè)方法上,官方文檔解釋如下:






至于為何在某些機(jī)器上出現(xiàn)高達(dá)6秒多的時(shí)間消耗,百思不得其解,請(qǐng)高手指點(diǎn)!
特別提示:
本Blog所有內(nèi)容不得隨意轉(zhuǎn)載,版權(quán)屬于作者所有。如需轉(zhuǎn)載請(qǐng)與作者聯(lián)系(fastzch@163.com)。未經(jīng)許可的轉(zhuǎn)載,本人保留一切法律權(quán)益。