2010-03-19 11 views
15

मैं jquery में वेबपैप पर काम कर रहा हूं कि पुरानी मशीनों या मशीनों पर बिना संसाधनों के, खराब प्रदर्शन कर सकते हैं। इसके आस-पास पहुंचने के लिए मैं एक अपरिवर्तित संस्करण बनाना चाहता हूं जो कुछ विशेषताओं को अक्षम करता है, खासकर जो बड़ी छवियों पर भरोसा करते हैं।पता लगाना जब जावास्क्रिप्ट खराब प्रदर्शन कर रहा है

मैं कैसे बता सकता हूं कि मेरा ऐप उपयोगकर्ता के कंप्यूटर पर सामान्य रूप से jquery या जावास्क्रिप्ट में खराब चल रहा है या नहीं? मुझे बस उस फ़ंक्शन को कॉल करने का एक तरीका चाहिए जो ऐप को घटाएगा। (विशेष रूप से जब उपयोगकर्ता सिस्टम मेमोरी पर कम चला सकता है)

मैन्युअल उपयोगकर्ता हस्तक्षेप के लिए एकमात्र तरीका मैं सोच सकता हूं, लेकिन विकल्प उन उपयोगकर्ताओं के लिए अव्यवस्था को जोड़ देगा जिनकी आवश्यकता नहीं है और जिन उपयोगकर्ताओं को इसकी आवश्यकता है ध्यान नहीं दिया।

धन्यवाद!

उत्तर

5

के लिए वहाँ कोई रास्ता नहीं करने से पहले अपने जावास्क्रिप्ट चलने लगता है यह बताने के लिए है। तुम बहुत तरह के आसपास कुछ रूपरेखा दिनांक वस्तुओं को तितर बितर कर सकते हैं:

var timeTaken; 
var start = +new Date(); // cast right now to a number 

for (i = 0; i < 1000000000; i++) // Some seriously intensive loop 
{ 
    // ... 
} 

timeTaken = (+new Date()) - start; // calculate the total time taken 

if (timeTaken > 500) // if time taken is longer than 500ms 
    switchToBasic(); 

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

+0

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

+0

जब आपके पास कोई कथन है कि "मैं कैसे बता सकता हूं कि मेरा ऐप उपयोगकर्ता के COMP पर खराब चल रहा है ...", इससे कोई फर्क नहीं पड़ता कि आप चेक कैसे करते हैं। एक अत्यधिक तनावग्रस्त 'सक्षम' मशीन पर, इसका खराब प्रदर्शन होगा। –

+0

@ डैन मैकजी: लेकिन वह खराब प्रदर्शन केवल अस्थायी हो सकता है। जब तक मशीन इसे अन्य सीपीयू गहन कार्य खत्म कर देती है, तब तक बहुत देर हो चुकी है। यह तैयार है और जाने के लिए तैयार है लेकिन आपने पहले से ही अपने आवेदन को अपंग कर दिया है। –

0

क्या आप एक जावास्क्रिप्ट फ़ंक्शन को कोड कर सकते हैं जो नियंत्रित परीक्षण चलाता है, परिणाम का समय देता है, फिर साइट को अपनाने के आधार के रूप में इसका उपयोग करता है?

शायद SunSpider से बाहर परीक्षणों में से एक का एक छोटा संस्करण है, उदाहरण के

+0

मैंने वास्तव में इस बारे में सोचा। ऐप शुरू होने से पहले मुझे देरी नहीं होगी (हालांकि यह मुझे लगता है कि दुनिया का अंत नहीं होगा)। –

0

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

फास्ट मशीन अन्य कार्यों से नीचे गिर गई हो सकती है, लेकिन थोड़ी देर के लिए धीमी मशीन अचानक तेज नहीं हो सकती है।

आपके आवेदन के आधार पर, आप उपयोगकर्ता को संकेत भी जोड़ सकते हैं जहां वह एक तेज ब्राउज़र ढूंढ सकता है। जावास्क्रिप्ट के जेआईटी संकलन के साथ ब्राउज़र नाटकीय रूप से तेज़ हैं।

1

यदि आपको वास्तव में यह सुनिश्चित करने की ज़रूरत है कि यह कम अंत कंप्यूटर पर काम करता है (और आपके पास कोई पुराना कंप्यूटर नहीं है), वर्चुअलबॉक्स या इसी तरह की वर्चुअल मशीन का उपयोग करने का प्रयास क्यों न करें। वर्चुअलबॉक्स के अंदर एक ओएस चलाने से यह वास्तव में बहुत धीमा हो सकता है, इस प्रकार धीमे हार्डवेयर को अनुकरण कर रहा है। मैं कर रहा हूँ यकीन है कि सबसे अधिक आभासी मशीनों आप बदलाव करने कितनी तेजी से आभासी cpu है की अनुमति देते हैं ...


जब ग्राहक एक धीमी गति से कंप्यूटर है का स्वत: पता लगाने के लिए के रूप में, मुझे यकीन है कि आप मज़बूती से पता लगा सकते हैं नहीं कर रहा हूँ कि, बिना परीक्षण किए जो मशीन को धीमा कर देता है।

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

यदि आप कुछ ऑटोडेटेक्शन बनाने का निर्णय लेते हैं, तो कृपया मैन्युअल ओवरराइड करें, यह वास्तव में परेशान करने वाला डेटा है, क्योंकि इसे बदलने के विकल्प के बिना एक ऑटोडेटेक्शन विफल हो गया है।

0

क्या आपने पहले से ही एप्लिकेशन को तेज़ी से करने के लिए सबकुछ किया है?

उदाहरण के लिए, आप Firebug प्रोफाइलर के माध्यम से एप्लिकेशन चला सकते हैं, और YSlow का उपयोग कर पूरे सिस्टम के प्रदर्शन की जांच कर सकते हैं।

0

जीमेल "केवल HTML पर स्विच करें" लिंक के साथ एक लोडिंग बार दिखाता है। आप उन पंक्तियों के साथ कुछ कोशिश कर सकते हैं। (साथ ही, यदि लोड करने में लंबा समय लगता है, तो "केवल HTML पर स्विच करें" लिंक अधिक प्रमुख हो जाता है। यह स्क्रीन के बीच तक पॉप अप हो जाता है।)

0

आप एक संवाद दिखाने के लिए टाइमर सेट कर सकते हैं उपयोगकर्ता को मूल मोड में स्विच करने की अनुमति देता है। showSlowDialog धीमी ऑपरेशन की प्रक्रिया को रोक नहीं देगा क्योंकि यह एक अलग थ्रेड में चल रहा है (समवर्ती रूप से चल रहा है)।

function showSlowDialog() { 
    if(confirm("switch to slow?")) { 
     switchToSlow(); 
    } 
} 

var timer = setTimeout("showSlowDialog()", 5000); // show dialog in 5 seconds 
SomeSlowishOperationThatMayOrMayNotTakeSomeTime(); // do long operation 
clearTimeout(timer); // clear timer. 
संबंधित मुद्दे