2009-09-22 13 views
8

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

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

मैंने एक नया लक्ष्य बनाने की कोशिश की, लेकिन सेटिंग उसमें दिखाई नहीं देगी (यहां तक ​​कि GCC_THUMB_SUPPORT भी नहीं)।

उत्तर

14

GCC_THUMB_SUPPORT सही चर है। THUMB कोड पीढ़ी को अक्षम करने के लिए बस इसे NO पर सेट करें।
THUMB का एक सामान्य नियम है, यदि आपका कोड फ़्लोटिंग पॉइंट भारी है तो इसे अक्षम करने के लिए :)
उस here के बारे में अधिक जानकारी।

अद्यतन:
सलाह अंगूठे (वास्तव में iPhone 3GS के बाद से) अनुदेश सेट is no longer valid के लिए संकलित करने के लिए।

+2

अंगूठे का नियम के +1: डी – stigi

+0

यह अभी भी iPhone 4, 4 जी और 5 के रूप में प्रासंगिक है? – Kyle

+0

@weichsel कैसे clang के बारे में? जो अब xcode में प्रयोग किया जाता है ... अंगूठे मोड चीज अभी भी प्रासंगिक है? – lppier

2

"अंगूठे के लिए संकलित" के तहत होना चाहिए लक्ष्य/जानकारी/जीसीसी 4.2 प्राप्त करें - कोड जनरेशन। यदि यह वहां नहीं है (यदि यह नहीं है तो मुझे आश्चर्य होगा), उपयोगकर्ता द्वारा परिभाषित चर सेट करें।

ध्यान रखें कि इससे केवल परिस्थितियों के एक संकीर्ण सेट के तहत प्रदर्शन में सुधार होता है जिसे आपको इससे पहले कि समझना चाहिए।

3

मुझे पता चला है कि संकलक सेटिंग्स ("जीसीसी 4.2 - कोड जनरेशन", "जीसीसी 4.2 - भाषा", आदि) केवल सक्रिय जानकारी एसडीके डिवाइस पर सेट होने पर लक्ष्य जानकारी निर्माण सेटिंग विंडो में दिखाई देती है - और "उपयोगकर्ता परिभाषित" श्रेणी केवल तब दिखाई देती है जब सक्रिय एसडीके सिम्युलेटर होता है।

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

2

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

Compile for Thumb

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