2012-01-13 20 views
16

içinde ağrılı bir şekilde yavaş yavaş XP için IE8'deki konum karma değerini değiştirmeyle ilgili sorun yaşıyorum. basitçe çağırarak:window.location.hash atama, IE8

self.location.hash = "whatever" 

yaklaşık 800ms ~ 1800ms

Bunu yavaşlatabilir hiçbir fikrim yok sürer. Aynı talimatları başka sitelerde de kontrol ettim ve o kadar yavaş değil.

Herhangi bir ipucu ne kadar yavaş yapabilir? Üzgünüm, ancak çevrimiçi bir örnek veremem. DÜZENLEME


: İşte IE konsolunda olsun nedir, girdi:

console.log(new Date().getTime()); 
self.location.hash = "sfdsd"; 
console.log(new Date().getTime()); 

çıkışı:

Ben doğru okursanız tek için, neredeyse 2000 ms yapar
JOURNAL : 1326468325447 
JOURNAL : 1326468327390 
undefined 

atama: /.


EDIT2:

profileThat 2 3475,00 3475,00 
hidden 4 50,07 50,07 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 608 
eventHandle 8 3525,07 40,06 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 2 595 
get 4 20,03 20,03 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 419 
get 6 10,01 10,01 http://192.168.0.30/kw5/js/yui2/dom/dom.js 96 

Edit3: iki tıklama ile

var profileThat = function() {self.location.hash = "whatever"}; 
$('#keywatchHeader').click(profileThat); 

profilci sonuçları: yeterince berrak, daha preofiled kod görünmüyor beri :

Ağacın düğüm sayısında bazı merak testleri yaptım ve sonuçlar şaşırtıcı. Böyle bir çağrı sonra: bundan sonra

document.getElementsByTagName('*').length; //3621 
$('#keywatchPanels').children().remove(); 
document.getElementsByTagName('*').length; //332 

profilci 600ms yerine çağrı başına 1700ms verir! Ama neyse ki node numarası ile hashtag yazımını etkileyecektim.


(edit4)

: Bu ilgili soruyu bulduk: (ama burada cevap sadece "kaldırmak" olduğu) Why is this piece of Javascript code so slow?

Nihayet
+0

Sayfanız ne kadar büyük? Hash kontrol eden başka bir kod var mı? – epascarello

+0

Tam olarak ne demek büyüktür? piksel genişliği, ağırlık, elemanlar?Yığın kontrolünü yapan YUI2 tarih yöneticisi var, ama bu kodu, kod veya konsolda oluşturmama rağmen o kadar çok zaman harcayan bu talimat. – BiAiB

+0

Bunu yeniden oluşturamıyorum. IE8.0.6001.18702 üzerinde yaklaşık 100ms alır. Performansı nasıl ölçtün? [IE script profiler] 'ı kullandınız mı (http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start)? Hem IE script profiler hem de "algı" ile – user123444555621

cevap

16

i bir cevabın bir yorum cevabımı buldum ilgili bir soru: Why is this piece of Javascript code so slow?

Ugh, sadece aynı sorunu olan bir blog birini buldum. Görünüşe göre , IE Developer Toolbar'ı çalıştırıyorsanız sadece bu yavaştır. Şimdi nasıl heck profiline gidiyorum? -_-'

- Aistina 7 Mayıs '09 Daha önce olsa bu konuda vermedi Neden 9:22

at?

+0

Konumu, konumu değiştirmeden önceki süreyi kaydederek ve ardından değiştirilen zamanı kaydederek ve farkı bildirerek (yukarıdaki sorunda olduğu gibi) profil yapabilirsiniz. Benim için zaman farkı, oldukça yüksek olduğunu düşündüğüm 400 ms ile 600 ms arasında. Henüz yavaşlığa bir çözüm buldunuz mu? –

+0

Hata ayıklayıcıyı kapatmaktan farklı bir yanıt yok. Soruda bahsettiğim gibi (bkz. EDIT 3), sayfa ücretinizi düşürmek (tüm öğeleri kaldırarak) yanıt süresini azaltmıştır. Ama bu noktada bu bilimden daha din. – BiAiB