2012-01-13 16 views
16

में दर्दनाक रूप से धीमा है मुझे XP के लिए IE8 में स्थान हैश को संशोधित करने में समस्या हो रही है। बस बुला:window.location.hash असाइनमेंट आईई 8

self.location.hash = "whatever" 

लेता है के बारे में 800ms ~ 1800ms

मुझे नहीं पता कि क्या यह धीमा कर सकते हैं। मैंने कुछ अन्य साइटों पर एक ही निर्देश की जांच की और यह धीमा नहीं है।

कोई संकेत जो इसे इतना धीमा कर सकता है? मुझे खेद है लेकिन मैं एक ऑनलाइन उदाहरण नहीं दे सकता।


संपादित करें: यहाँ मैं आईई कंसोल में क्या मिलता है, इनपुट:

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

उत्पादन:

JOURNAL : 1326468325447 
JOURNAL : 1326468327390 
undefined 

जो लगभग 2000ms बना देता है, अगर मैं सही ढंग से पढ़ा एक भी के लिए, असाइनमेंट: /।


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: दो क्लिक के साथ

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

प्रोफाइलर परिणाम: के बाद से यह काफी स्पष्ट है, और अधिक preofiled कोड प्रतीत नहीं होता :

मैंने जिज्ञासा से पेड़ पर नोड संख्या पर कुछ परीक्षण चलाए और परिणाम आश्चर्यजनक हैं। इस तरह के एक कॉल करने के बाद:

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

उसके बाद प्रोफाइलर 600 मि.से बजाय1700ms प्रति कॉल देता है! लेकिन मैं शायद ही नोड नंबर के साथ हैशटैग लेखन को प्रभावित करूंगा।


(edit4): मैं इस संबंधित सवाल मिल गया है: Why is this piece of Javascript code so slow? (लेकिन इस सवाल का जवाब यहाँ सिर्फ "इसे हटाने" है)

+0

आपका पृष्ठ कितना बड़ा है? कोई अन्य कोड जो हैश की जांच कर रहा है? – epascarello

+0

आप वास्तव में बड़े से क्या मतलब है? पिक्सेल चौड़ाई, वजन, तत्व?वाईयूआई 2 इतिहास प्रबंधक है जो हैश की जांच कर रहा है लेकिन यह पूरी तरह से यह निर्देश है जो उस समय को बेकार करता है, चाहे मैं इसे कोड, या कंसोल में निकालूं। – BiAiB

+0

मैं इसे पुन: उत्पन्न नहीं कर सकता। IE8.0.6001.18702 पर यहां लगभग 100ms लेता है। आपने प्रदर्शन को कैसे माप लिया? क्या आपने [आईई स्क्रिप्ट प्रोफाइलर] (http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start) का उपयोग किया था? आईई स्क्रिप्ट प्रोफाइलर और "धारणा" दोनों द्वारा – user123444555621

उत्तर

16

अंत में, मैं अपने जवाब एक जवाब की एक टिप्पणी में मिल गया है एक संबंधित सवाल का: Why is this piece of Javascript code so slow?

ओह, बस एक ही समस्या के साथ एक ब्लॉग पर कोई नहीं मिला। स्पष्ट रूप से यदि आप आईई डेवलपर टूलबार चला रहे हैं तो यह केवल धीमा है। अब मैं कैसे बिल्ली जा रहा हूँ? -_-

- Aistina मई 7 '09 9:22

क्यों पहले हालांकि इसके बारे में मैंने नहीं किया है?

+0

आप अभी भी location.hash को बदलने से पहले समय रिकॉर्ड करके प्रोफ़ाइल बदल सकते हैं और इसके बाद के समय बदल गए हैं और अंतर को सतर्क कर सकते हैं (जैसे ऊपर दिए गए प्रश्न में)। मेरे लिए समय अंतर 400ms से 600ms के बीच कहीं भी है जिसे मैं काफी ऊंचा मानता हूं। क्या आपको अभी तक धीमेपन का कोई समाधान मिला है? –

+0

डीबगर बंद करने से अलग कोई जवाब नहीं है। जैसा कि मैंने प्रश्न में उल्लेख किया है (संपादित करें 3 देखें), अपने पेज चार्ज को कम करने (सभी तत्वों को हटाकर) प्रतिक्रिया समय को कम करता है। लेकिन इस बिंदु पर यह विज्ञान से अधिक धर्म है। – BiAiB