2009-05-21 9 views
5

एक आईफोन ओएस डिवाइस में, कितने एक साथ एनएसटीमीटर चल रहे हैं? मेरे पास एक टाइमर फायरिंग द्वारा 25 बार एक बार गोलीबारी की जाने वाली दिनचर्या का एक गुच्छा है, और चीजें बहुत चंचल, धीमी और भारी हैं। मैं काम लोड को थोड़ा वितरित करने के लिए एक या एक से अधिक अतिरिक्त एनएसटीमीटर जोड़ने के बारे में सोच रहा हूं लेकिन मुझे इस बात का चिंता है कि उपयोग करने के लिए कितने ठीक होंगे। यह प्रत्येक व्यक्तिगत टाइमर की फायरिंग दर पर कुछ हद तक निर्भर हो सकता है, इसलिए मान लें कि प्रति सेकंड 20 ~ 30 बार की फायरिंग दर। तो, कितने एनएसटीमीटर बहुत अधिक हैं?कितने एनएसटीमीटर बहुत अधिक हैं?

उत्तर

5

आंतरिक रूप से, NSTimers सभी एक हार्डवेयर टाइमर पर लागू किए गए हैं। ओएस सभी चल रहे ऐप्स के लिए टाइमर की केंद्रीय सूची रखता है और जल्द ही ईवेंट के लिए एक हार्डवेयर टाइमर शेड्यूल करता है।

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

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

  1. अपने वर्तमान ड्राइंग कोड को एक अलग थ्रेड में विभाजित करें और उसमें अपना (समान) टाइमर कोड चलाएं। यह आपको अधिक नियंत्रण देना चाहिए।

  2. यह देखने के लिए अपने कोड को प्रोफ़ाइल करें कि उनमें से प्रत्येक 1/25s स्लॉट में कितनी प्रोसेसिंग की जाती है - यह हो सकता है (और संभवतः) कि आपको बस अपना कोड अनुकूलित करने की आवश्यकता है।

1

1 आपके मामले में। एक अतिरिक्त टाइमर जोड़ना आपके एप्लिकेशन को तेज़ी से नहीं चलाता है।

आपको अपना कोड अधिक कुशल बनाना होगा या टाइमर को अक्सर कम करना होगा।

मुझे टाइमर के ऊपरी हिस्से के बारे में पता नहीं है, लेकिन यह उच्च दर की आग दर के साथ काफी महत्वपूर्ण हो सकता है। इसके लिए टाइमर नहीं बने हैं, मैं एक धागा को वैकल्पिक के रूप में सुझाव देता हूं।

2

ऐसा लगता है जैसे टाइमर की संख्या कोई समस्या नहीं है। एनएसटीमीटर का ओवरहेड मूल रूप से आपके "दिनचर्या के गुच्छा" में लोड होने की तुलना में अपरिहार्य है। अभी इसके बारे में चिंता मत करो। आपको जितनी जरूरत हो उतनी टाइमर का प्रयोग करें। उसके बाद शार्क/यंत्र खोलें और देखें कि आप किस तरीके पर अधिकतर समय व्यतीत कर रहे हैं।

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

  • कोई संबंधित समस्या नहीं^_^