यदि शुद्ध गति एकमात्र मुद्दा है (यानी आप कुछ प्रतिपादन इंजन बना रहे हैं जहां हर छोटे सीपीयू चक्र की गणना होती है), किसी भी एनएससीओलेक्शन ऑब्जेक्ट्स (आईओएस 5.0 ~ 6.0 के रूप में) के माध्यम से फिर से शुरू करने का सबसे तेज़ संभव तरीका है विभिन्न "enumerateObjectsUsingBlock" विधियों। मुझे नहीं पता कि यह क्यों है, लेकिन मैंने इसका परीक्षण किया और यह मामला प्रतीत होता है ...
मैंने सैकड़ों हजारों ऑब्जेक्ट्स के छोटे परीक्षण संग्रह संग्रह लिखे हैं जिनमें प्रत्येक के पास एक विधि है जो चींटियों की एक साधारण सरणी है । उन संग्रहों में से प्रत्येक को विभिन्न प्रकार के पुनरावृत्ति (लूप, तेज़ गणना, मेक ऑब्जेक्ट्सफॉर्मफॉर्मर, और एन्युमेरेट ऑब्जेक्ट्स यूजिंगब्लॉक) के लिए कई बार प्रदर्शन करने के लिए मजबूर किया गया था, और लगभग हर मामले में "enumerateObjectsUsingBlock" विधियों ने परीक्षण के दौरान आसानी से जीत हासिल की।
केवल समय था जब यह सच नहीं था जब स्मृति को भरने के लिए शुरू कर दिया, जिसके बाद यह "makeObjectsPerformSelector" को खोना शुरू कर दिया (जब मैं लाखों लोगों की वस्तुओं की साथ इसे चलाने के लिए शुरू कर दिया)।
मुझे खेद है कि मैंने कोड का एक स्नैपशॉट नहीं लिया है, लेकिन यह चलाने के लिए एक बहुत ही सरल परीक्षण है, मैं अत्यधिक कोशिश करता हूं कि आप इसे आज़माएं और देखें। :)
स्रोत
2012-08-13 23:21:52
लिंक के लिए धन्यवाद, मुझे इस दस्तावेज़ को नहीं पता था! जैसा कि आप कहते हैं, "अनलोलिंग लूप" अनुभाग स्पष्ट रूप से बताता है कि कोको डेवलपर्स ने -मेक ऑब्जेक्ट्सफॉर्मफॉर्मर के साथ आंतरिक अनुकूलन किए हैं: – mouviciel
मेरी खुशी। वहां कुछ दिलचस्प चीजें हैं। –