2012-12-22 43 views
14

(प्रश्न Three.js के लिए विशिष्ट नहीं है, लेकिन मैं एक उदाहरण के रूप में इसका इस्तेमाल करेंगे)डिवाइस सीपीयू/जीपीयू प्रदर्शन का पता लगाने के लिए जावास्क्रिप्ट का उपयोग करना?

मैं Three.js का उपयोग करके किया गया है हाल ही में एक वेब अनुप्रयोग इंटरफ़ेस का विकास और WebGL और कैनवास रेंडरर (बीच कुछ अच्छा वापस आने लिखा करने के लिए डेस्कटॉप ब्राउज़र के लिए)। यह काफी हद तक वेब समुदाय के भीतर हल किया जाता है:

  1. ब्राउज़र (WebGL/कैनवास की तरह स्थिर सुविधाओं) सुविधाएं:

    लेकिन अब समस्या कैसे ठीक डिवाइस क्षमता का पता लगाने के लिए, वहाँ समस्या के लिए 2 पहलू हैं हो जाता है सरल सुविधा का उपयोग कर।

  2. डिवाइस क्षमता: डिवाइस की हार्डवेयर जानकारी तक सीधे पहुंच के बिना यह कठिन हिस्सा है, हमें यह बताए जाने के कुछ तरीकों की आवश्यकता है कि हमें कम हार्डवेयर मांग वाले कोड पर फ़ॉलबैक करना चाहिए या नहीं।

एक उल्लेखनीय उदाहरण: फ़ायरफ़ॉक्स मोबाइल/ओपेरा मोबाइल दावों WebGL का समर्थन लेकिन गाड़ी या डिवाइस हार्डवेयर द्वारा सीमित कर रहे हैं।

कुछ समाधान मैं अब तक के साथ आते हैं:

  1. प्रदर्शन सूचक के रूप में एक आम सुविधा का प्रयोग करें - टच डिवाइस, उदाहरण के लिए, सामान्य रूप में कम शक्तिशाली हार्डवेयर है। Con: यह भविष्य के सबूत नहीं है।
  2. ब्लैकलिस्ट ज्ञात छोटी गाड़ी ब्राउज़र/डिवाइस - UA स्नीफिंग अपरिहार्य होगा, और इसे बनाए रखना मुश्किल हो सकता है।
  3. प्रदर्शन परीक्षण - इसलिए कोड चलाने और फ़्रेमेट मापने के अलावा सवाल, क्या बेहतर विकल्प हैं?

या शायद यह कठिन नहीं होना चाहिए, क्या अन्य सुझाव हैं?

उत्तर

0

आप WebGL हार्डवेयर समर्थन और सुविधा पहचान के लिए http://webglstats.com/ का उपयोग कर सकते हैं।

+1

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

+0

। यह बहुत ही रोचक जानकारी है, हालांकि यह सिर्फ फीचर डिटेक्शन है, जो आप अपने प्रत्येक उपयोगकर्ता के लिए कुछ भी कर सकते हैं। यह आपको प्रदर्शन नहीं बताएगा, जब तक कि आप सुविधा कार्यान्वयन और प्रदर्शन के बीच कुछ सुंदर डोडी सहसंबंध आकर्षित नहीं करना चाहते हैं। – desau

12

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

असल में हम न्यूनतम दृश्य जटिलता से शुरू होते हैं, और यदि रेंडरलोप 33 एमएमएस से कम लेता है तो हम जटिलता जोड़ते हैं (यदि जटिल समय में रेंडरलोप बहुत लंबा लग रहा है तो जटिलता भी कम हो जाती है)।

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

+0

जिस समाधान पर आप उतरे थे उसे प्यार करें। साझा करने के लिए धन्यवाद। – jlmakes

+0

+1, गतिशील पहचान और समायोजन जाने का एकमात्र तरीका है। विशेष रूप से यदि आप किसी भी डिवाइस का समर्थन करना चाहते हैं जो बैटरी का उपयोग करता है और बैटरी को बचाने के लिए कम प्रदर्शन मोड मिड-फ्लाई पर स्विच कर सकता है। यदि आप एक बार एक स्थिर पहचान करते हैं, तो आप पर्यावरण में इस तरह के बदलाव को याद करेंगे। –

0

यदि आप तीन.जेएस का उपयोग कर रहे हैं तो आप यह पता लगाने के लिए डिटेक्टर.जेएस का उपयोग कर सकते हैं कि वेबग्ल सक्षम है या नहीं। कैनवास्रेन्डर से दूर रहना भी मदद करेगा। Webglrenderer या सॉफ्टवेयर प्रस्तुत करने का उपयोग करें। क्योंकि वे अधिक शिखर के लिए अनुमति देते हैं। सॉफ्टवेयररेंडर काफी नया है और कुछ काम की ज़रूरत है लेकिन इसका इस्तेमाल किया जा सकता है।