2010-04-25 17 views
7

मैं अपने पृष्ठ पर क्षैतिज रूप से एक छवि स्क्रॉल बनाने के लिए Jquery का उपयोग कर रहा हूं। एकमात्र समस्या यह है कि यह गंभीर मात्रा में सीपीयू उपयोग का उपयोग करता है। फ़ायरफ़ॉक्स में एक कोर कोर पर 100% तक। इसका कारण क्या हो सकता है ???Jquery CPU उपयोग

Jquery

<script> 
    jQuery(document).ready(function() { 

    $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
    }); 

    </script> 

सीएसएस

.speech { 
    /*position:fixed;*/ 
    top:0; 
    left:0px; 
    height:400px; 
    width:100%; 
    z-index:-1; 
    background:url(/images/speech.png) -300px -500px repeat-x; 
    margin-right: auto; 
    margin-left: auto; 
    position: fixed; 
} 

एचटीएमएल

<div class="speech"></div> 
+0

वास्तव में क्रिक? मैं इस तरह के एक स्मृति हॉग में कभी नहीं आया है। आप कौन सा ब्राउज़र उपयोग कर रहे हैं? मैं समस्या को दोहराना नहीं कर सकता। एक ही चीज़ आज़माएं लेकिन एक पीएनजी का उपयोग न करें - इसके बजाय एक gif/jpg आज़माएं और देखें कि आपके पास एक ही समस्या है या नहीं। – Glycerine

+3

उसने यह नहीं कहा कि यह एक स्मृति हॉग था; यह 100% सीपीयू उपयोग का मतलब नहीं है। – Pointy

उत्तर

12

यह सीपीयू संसाधनों का उपयोग कर रहा है क्योंकि आप लंबे समय से प्रति सेकंड कई बार एक छवि को दोबारा चित्रित करने के लिए ब्राउज़र से पूछ रहे हैं। यह मुफ़्त नहीं है।

+0

+1। कोई वोट नहीं छोड़ा – sepehr

0

यदि यह एक स्मृति-cpu संबंधित मुद्दे तो आप jQuery समारोह कॉल का परिणाम को रद्द कर सकते हैं। अपने कॉल कॉल के बाद एक jQuery वस्तु देता है तो यदि आप अशक्त के लिए सेट कर सकते हैं:

var tmp = $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
}); 
tmp = null; 

नोट: इस स्मृति रिसाव के साथ संबंधित किसी भी तरह से जाता है तो यह वृत्तीय संदर्भ के साथ क्या करना है और सेटिंग के द्वारा शून्य करने के लिए आप इसे तोड़ सकते हैं।

इसे आज़माएं, यदि आपके पास पोस्ट करने का समय है तो मैं परिणाम जानना चाहूंगा।

+0

यह कोई भी अच्छा नहीं करने जा रहा है। वर्णित समस्या एनीमेशन के दौरान सीपीयू लोड में से एक है। एनीमेशन के बाद jQuery ऑब्जेक्ट को फ्री करना एनीमेशन की प्रक्रिया को प्रभावित नहीं करेगा। – Pointy

+0

तो आप स्मृति से संबंधित किसी भी मुद्दे को छोड़ सकते हैं। मैं एनिमेट फ़ंक्शन कार्यान्वयन विवरण में जाउंगा और मुद्दों की जांच करूँगा, मैं यह भी सुनिश्चित करता हूं कि फ़ंक्शन/विधि अनुबंध पैरा समझा जाए। यदि आपके एप्लिकेशन में एनीमेशन महत्वपूर्ण है तो मैं जेएस पुस्तकालयों के लिए चारों ओर देखने का सुझाव दूंगा जो एनिमेशन पर ध्यान केंद्रित करते हैं। JQuery में एक प्लगइन या एक्सटेंशन हो सकता है जो एनीमेशन को बेहतर तरीके से संभालता है। अच्छा करने के लिए खेद है ... कभी-कभी हमें कारकों को एक-एक करके खारिज करने के बाद लक्ष्य के लिए अपना रास्ता शुरू करने और खोजने के लिए एक जगह की आवश्यकता होती है। – Andreas

0

इस लक्ष्य को हासिल करने के लिए सबसे अच्छा तरीका है एक प्लगइन का उपयोग करना है इस तरह के http://www.spritely.net/download/

11

के रूप में दर-मामला किसी को भी जब jQuery एनिमेशन का उपयोग कर उच्च CPU उपयोग के लिए एक समाधान की तलाश में है (के रूप में मैं था) तो यह देखते हुए कि jQuery.fx.interval लायक है jQuery 1.4.3 में जोड़ा गया था ताकि आप एनीमेशन अंतराल दर को नियंत्रित कर सकें।

उपयोग का उदाहरण (लगभग 50-70 को यह स्थापित करने के लिए मेरे एनिमेशन चिकनी रखा और मैंने देखा CPU उपयोग के बारे में 10-20% नीचे गिरा दिया):

jQuery.fx.interval = 50;

+1

यह है - बिंदु। – schellmax

संबंधित मुद्दे