2009-06-28 16 views
12

वहाँ अगर एक कंप्यूटर धीमी है का पता लगाने और कुछ कोड नहीं चला करने के लिए कोई तरीका है (या तो बदल jQuery एनिमेशन द्वारा बंद या अगर यह तेज है सिर्फ एक समारोह चल रहा है)?कुछ कोड जाएं, तो कंप्यूटर धीमी है

मैं जानता हूँ कि इस सवाल का शायद वास्तव में तुच्छ है, लेकिन मैं कुछ चमक है कि बहुत अच्छा नहीं है तभी ले जाने के लिए कुछ धीमी कंप्यूटर पर कि देखा भी सरल मार्जिन एनीमेशन।

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

उत्तर

11

जब जावास्क्रिप्ट चल रहा है, आप लक्ष्य कंप्यूटर के प्रदर्शन को पहले से जानने के लक्जरी नहीं है। एकमात्र चीज जिसे मैं सोच सकता हूं, कुछ गणना करने और उस समय को मापने के लिए एक समारोह चलाने के लिए होगा। फ़ंक्शन को चलाने के लिए आवश्यक समय सुनिश्चित करने के लिए फ़ंक्शन को पर्याप्त संख्या में गणना करना चाहिए, मशीन के प्रदर्शन का प्रतिनिधि है।

सामान्य तौर पर, मैं, इस तरह के एक प्रदर्शन परीक्षण कर के खिलाफ सलाह क्योंकि यह लक्ष्य मशीन, कुछ है कि उपयोगकर्ताओं को आम तौर पर पसंद नहीं है पर संसाधन लगते हैं। लेकिन शायद आप पहली एनीमेशन को पूरा करने के लिए किए गए समय को माप सकते हैं, और यदि यह बहुत धीमा है, तो बाद वाले को निष्क्रिय करें।

+2

एक प्रदर्शन परीक्षण वास्तव में के रूप में * एनीमेशन नाटकों * कर किया जा सकता है, और कोई अतिरिक्त संसाधनों का उपयोग कर (लगभग)। मुझे कोई कारण नहीं दिख रहा है क्यों नहीं, जब आप उत्तरदायित्व के लिए काफी प्रभावी परीक्षण प्राप्त कर सकते हैं। तथ्य यह है कि एनीमेशन कंप्यूटर के लिए बहुत गणना समय के लिए उपयोग कर रहा है उपयोगकर्ता के लिए और अधिक परेशान होने की संभावना है! स्पष्टीकरण के लिए – Noldorin

5

मुझे लगता है कि वहाँ दो विकल्प हैं:

  1. उपयोगकर्ता को निर्णय लेने दें - एक 'कम बैंडविड्थ/कम कल्पना' उपयोगकर्ता जो जब साइट के सरल संस्करण प्रदर्शित करेगा क्लिक किया करने का विकल्प दे।

  2. कोशिश धीमी मशीनों का पता लगाने के - आप एक समय समाप्ति स्क्रिप्ट का उपयोग करके एक धीमी गति से मशीन का पता लगाने की कोशिश कर सकते हैं - यदि एनीमेशन/लोड हो रहा है साइट के सरल संस्करण के लिए एक निश्चित समय के भीतर स्विच को पूरा नहीं करता है। शायद यह एक बुरा कनेक्शन था या उपयोगकर्ता एक ही समय अस्थायी रूप से अपने मशीन को धीमा पर कुछ और लोड हो रहा है था - इस विधि को नकारात्मक पक्ष यह तुम्हें कुछ पता नहीं क्यों स्क्रिप्ट का समय समाप्त होता है।

आशा है कि यह आपको कुछ विचार देता है।

जोश

7

सबसे सरल उपाय चेक बॉक्स के साथ उपयोगकर्ता के लिए इसे छोड़ने के लिए होगा, लेकिन अन्य बुद्धिमान आप एक कंप्यूटर के लिए पहली एनीमेशन समय की कोशिश कर सकते हैं और फिर अगर यह एक निश्चित समय सीमा से अधिक है, शेष एनिमेशन बंद कर दिया है ... उदाहरण के लिए ...

var start = new Date(); 
//... some jQuery animation 
var end = new Date(); 
var diff = end - start; 

फिर, उदाहरण के लिए, यदि एनीमेशन 1.5 सेकंड लग सकते हैं और समय अंतर 5 सेकंड की तरह है, तो किसी भी शेष एनिमेशन बंद कर देते हैं है।

+0

केवल, पिछले 2 लाइनों के बाद एनीमेशन, किया जाता है यानी, एनीमेशन कॉलबैक में क्रियान्वित किया जाना है। – Smokie

0

यह देखते हुए कि जावास्क्रिप्ट आंशिक ट्रस्ट वातावरण में चलता है, तो आप किसी भी ओएस-स्तरीय जानकारी प्राप्त करने में सक्षम नहीं होंगे, मुझे लगता है।

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

1

मैं कहना है कि यदि आप जा रहे हैं यह उपयोगकर्ता पर निर्भर छोड़ने के लिए (जो मुझे लगता है कि एक अच्छा विचार है) आप यह स्पष्ट आप कंप्यूटर की गति, नहीं कनेक्शन की गति या के बारे में पूछ रहे हैं कि सुनिश्चित करना चाहिए चाहते हैं बैंडविड्थ। एक उपयोगकर्ता के पास एक बहुत तेज़ लैपटॉप हो सकता है, लेकिन धीमे सार्वजनिक वाई-फाई कनेक्शन पर काम कर रहा है, या इसके विपरीत। चूंकि जावास्क्रिप्ट क्लाइंट-साइड है, यह केवल कंप्यूटर की गति है जो मायने रखता है।

+0

यह वास्तव में एक जवाब नहीं है, लेकिन मैं इसे किसी भी तरह upvoting रहा हूँ, क्योंकि यह एक महत्वपूर्ण मुद्दा यह है कि और अधिक लोकप्रिय जवाब उपेक्षा करने लगते है। –

0

मेरा अनुमान है कि कि कोड है जो आप बंद करना चाहते हैं समय को चलाने के लिए एक बड़ी मात्रा में लेता है।

मेरा सुझाव है कि आप:

  • इस कोड
  • निष्पादित करने के लिए शुरू करने के बाद यह आंशिक रूप से निष्पादित कर रहा है, को देखने के वास्तविक समय कितना ellapsed है
  • बहुत ज्यादा वास्तविक समय ellapsed गया है (यानी अगर कोड बहुत धीरे-धीरे निष्पादित हो रहा है) फिर इसे खत्म करने के बजाय निष्पादन रद्द करें।
संबंधित मुद्दे