से अधिकतम गति iOS
के लिए मैंने गहन ऐप कंप्यूटिंग किया। बेशक यह धीमा था। लेकिन यह मेरे पीसी प्रोटोटाइप की तुलना में 200 गुना धीमा था। तो मैं इसे अनुकूलित कर रहा था। बहुत पहले 15 सेकंड से मैं 0.4 सेकंड की गति प्राप्त करने में सक्षम था। मुझे आश्चर्य है कि क्या मुझे सभी चीजें मिलती हैं और अन्य लोग क्या साझा करना चाहते हैं। क्या मैंने किया: OpenCV के अंदर करने के लिए "float
"आईओएस/आईपैड/आईफोन
बदला "
double
" डेटा प्रकार। डबल 64 बिट और 32 बिट सीपीयू आसानी से उन्हें संभाल नहीं सकता है, इसलिए फ्लोट ने मुझे कुछ गति दी। ओपनसीवी अक्सर डबल का उपयोग करता है।कंपाइलर विकल्पों में "
-mpfu=neon
" जोड़ा गया। साइड इफेक्ट नई समस्या थी कि एमुलेटर कंपाइलर अब और काम नहीं करता है और कुछ भी देशी हार्डवेयर पर ही परीक्षण किया जा सकता है।sin()
औरcos()
90 मूल्य लुकअप टेबल के साथ कार्यान्वित किया गया। स्पीडअप बड़ा था! यह पीसी के कुछ हद तक विपरीत है जहां ऐसे अनुकूलन कोई गति नहीं देते हैं। कोड में डिग्री कोड था और यह मानsin()
औरcos()
के लिए रेडियंस में परिवर्तित कर दिया गया था। यह कोड भी हटा दिया गया था। लेकिन लुकअप टेबल ने काम किया।सक्षम
"thumb optimizations"
। कुछ ब्लॉग पोस्ट बिल्कुल विपरीत की सलाह देते हैं लेकिन ऐसा इसलिए होता है क्योंकि अंगूठे आमतौर परarmv6
पर धीमी चीजें बनाता है।armv7
किसी भी समस्या से मुक्त है और चीजों को तेज़ और छोटा बनाता है।यह सुनिश्चित करने के लिए कि अंगूठे अनुकूलन और
-mfpu=neon
सर्वोत्तम रूप से काम करते हैं और क्रैश पेश नहीं करते हैं, मैंने armv6 लक्ष्य को पूरी तरह से हटा दिया है। मेरा सभी कोडarmv7
पर संकलित किया गया है और इसे ऐप स्टोर में आवश्यकता के रूप में भी सूचीबद्ध किया गया है। इसका मतलब है कि न्यूनतमiPhone
3GS
होगा। मुझे लगता है कि पुराने लोगों को छोड़ना ठीक है। वैसे भी पुराने लोगों में धीमे CPUs और CPU गहन ऐप पुराने डिवाइस पर स्थापित होने पर खराब उपयोगकर्ता अनुभव प्रदान करता है।- बेशक
मैं
-O3 flag
मैं OpenCV से
"dead code"
नष्ट कर दिया उपयोग करें। अक्सर ओपनसीवी को अनुकूलित करते समय मुझे कोड दिखाई देता है जो मेरी परियोजना के लिए स्पष्ट रूप से आवश्यक नहीं है। उदाहरण के लिए अक्सर पिक्सेल आकार 8 बिट या 32 बिट होने के लिए अतिरिक्त"if()"
है और मुझे पता है कि मुझे केवल 8 बिट की आवश्यकता है। यह कुछ कोड हटा देता है, अनुकूलक को कुछ और हटाने या स्थिरांक के साथ प्रतिस्थापित करने का बेहतर मौका प्रदान करता है। कोड भी कैश में बेहतर फिट बैठता है।
कोई अन्य चाल और विचार? मेरे लिए अंगूठे को सक्षम करने और लुकअप के साथ त्रिकोणमिति को बदलने के लिए निर्माताओं को बढ़ावा दिया गया और मुझे आश्चर्य हुआ। शायद आप कुछ और करने के लिए जानते हैं जो ऐप्स को उड़ता है?
यह त्वरण मेरे लिए नया था। यह अभी भी उपयोग करना मुश्किल है क्योंकि इसे असेंबली-स्तर की सोच की जरूरत है। लेकिन अभी भी संभव है और शायद कोशिश करने जा रहा है। मैं इसे बाद में स्वीकार करता हूं क्योंकि मैं देखना चाहता हूं कि हमें यहां अधिक उपयोगी संकेत मिलते हैं या नहीं। –
डब्ल्यूडब्ल्यूडीसी 2012 वीडियो में एक सत्र है जो पूरी तरह से त्वरित ढांचे के साथ सौदा करता है। आपको इसे देखना चाहिए ^^ – borrrden
http://adcdownload.apple.com//wwdc_2012/wwdc_2012_session_pdfs/session_708__the_accelerate_framework.pdf और https://developer.apple.com/videos/wwdc/2012/#708 प्रतीत होता है इसके लिए लिंक होने के लिए –