का उपयोग कर किसी समस्या पर काम करना जिसके लिए GA की आवश्यकता होती है। मेरे पास यह सब काम कर रहा है और संकलक अनुकूलन का उपयोग करने से पहले वसा को कम करने और कोड को अनुकूलित करने में काफी समय बिताया है। चूंकि जीए उपयोगकर्ता इनपुट के परिणामस्वरूप चलता है, इसे उचित समय के भीतर समाधान ढूंढना पड़ता है, अन्यथा यूआई स्टालों और यह बिल्कुल ठीक नहीं खेलेंगे। मुझे यह द्विआधारी जीए आईफोन 3 जीएस पर लगभग 0.1s में एक 27 परिवर्तनीय समस्या को हल कर रहा है।जेनेटिक एल्गोरिदम ऑप्टिमाइज़ेशन - -O3 ध्वज
प्रदर्शन के इस स्तर को प्राप्त करने के लिए पूरे जीए को सी में कोडित किया गया था, उद्देश्य-सी नहीं।
रन टाइम की और कमी के लिए खोज में मैं केवल सॉल्वर मॉड्यूल के लिए "-ओ 3" ऑप्टिमाइज़ेशन स्विच का उपयोग करने के विचार पर विचार कर रहा था। मैंने कोशिश की और यह लगभग आधे भाग में कटौती काट दिया।
क्या मुझे "-ओ 3" पर अनुकूलन सेट करके किसी भी गॉचा के बारे में चिंतित होना चाहिए? ध्यान रखें कि मैं इसे फ़ाइल स्तर पर कर रहा हूं, न कि पूरे प्रोजेक्ट के लिए।
-O3 तब भी आमतौर पर अपेक्षाकृत सुरक्षित है जब तक आपके द्वारा लिखा गया कोड "मानक" है और कोई भी विशिष्ट चाल नहीं करता है। फिर भी, चूंकि आईफोन के कंपाइलर को केवल कुछ छोटे प्रणालियों के लिए कामकाजी कोड उत्पन्न करना है, तो यह ठीक रहेगा। –
बस जोड़ने के लिए, यदि आप यूआई स्टॉलिंग के बारे में चिंतित हैं, तो आप एक समवर्ती धागे पर गणना करने पर विचार करना चाहेंगे। – David
मैंने एक समवर्ती धागा जोड़ने के बारे में सोचा। समस्या यह है कि जिस तरह से कोड लिखा गया है, मेरे पास GA शुरू करने के लिए डेटा नहीं है जब तक उपयोगकर्ता यूआई के साथ इंटरैक्ट नहीं करता। एक अलग थ्रेड लॉन्च करने के लिए मुझे मुख्य स्थिति मशीन का विस्तार करना होगा ताकि कुछ आगे बढ़ने वाले काम कर सकें और अनुमान लगाया जा सके कि जीए की क्या आवश्यकता होगी। असंभव नहीं है, लेकिन यदि मैं GA को तेजी से चलाकर इसे टाल सकता हूं तो मैं अधिक दबाव वाले मुद्दों पर आगे बढ़ूंगा। मुझे यह जोड़ना चाहिए कि जीए का आउटपुट निर्धारित करता है कि अगला यूआई अपडेट कैसा दिखता है। –