Monday 15 June 2015

actionscript 3 - Effective algorithm for finding value objects in collection -


मान लें कि हमारे पास कुछ कस्टम ऑब्जेक्ट प्रकार है:

  class SomeObjectType {public var intProperty1: int ; सार्वजनिक var intProperty2: int; सार्वजनिक var intProperty3: int; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टी 1: स्ट्रिंग; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टी 2: स्ट्रिंग; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टी 3: स्ट्रिंग; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टीटाटैक्ट्रीआईएसआईंट 1: स्ट्रिंग; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टीटाटैक्ट्रीआईएसआईएनटी 2: स्ट्रिंग; सार्वजनिक वरी स्ट्रिंगप्रॉपर्टीटाटैक्ट्रीआईएसआईएनटी 3: स्ट्रिंग; ...% ABOUT_20_ANOTHER_PROPERTIES_THAT_I_WON'T_USE%}   

हमारे पास इन ऑब्जेक्ट्स के 20k से अधिक उदाहरण हैं और हमारे पास सिर्फ एक पाठ इनपुट है जो वास्तव में खोज फ़िल्टर है उपयोगकर्ता इस फ़िल्टर क्षेत्र में वह चाहे जो भी टाइप कर सकता है, और अगर उसका संग्रह किसी भी पहले 9 क्षेत्रों से मेल खाता है जो मैंने इस ऑब्जेक्ट को संग्रह में छोड़ने से पहले वर्णित किया है। बस साधारण आइटम फ़िल्टरिंग

और मुझे बताएं कि यह हमारे प्रोजेक्ट में अब कैसे काम करता है। यह एल्गोरिद्म इन सभी गुणों को स्ट्रिंग्स को डाले, उन्हें जोड़कर, और indexOf ()! = -1 विधि का उपयोग करके खोज करें। यह वास्तव में धीमा है मेरे देव मशीन पर लगभग 500-900 मि.मी. और प्रत्येक फ़िल्टर बदलाव पर iPad के बारे में 3-4 के बारे में लगता है। भयानक आंकड़े, क्या यह नहीं है?

छोटा ध्यान दें: हम एप्पल में 3 अलग-अलग जगहों में इस एल्गोरिथम का उपयोग करते हैं और ऑब्जेक्ट से ऊपर वर्णित ऑब्जेक्ट से अलग है, लेकिन विचार समान है। मुझे विश्वास है कि यह int के लिए int से तुलना करने के लिए एक अच्छा विचार है, स्ट्रिंग के लिए स्ट्रिंग (कुछ तेज एल्गोरिदम को कार्यान्वित करना (बहुत सारे हैं यदि उन्हें)), और स्ट्रिंग को कनवर्ट करते हैं जो वास्तव में int है और उन्हें int के लिए int के रूप में तुलना करते हैं, लेकिन ऑब्जेक्ट बहुत कुछ अलग है, इसलिए मुझे कुछ सामान्य एल्गोरिदम चाहिए।

यदि आप संग्रह से मतलब है कि ऐरे चयन, मैं इसके बजाय उपयोग करें।

वेक्टर लगभग 50 गुना तेजी से अररेक्लॉक्शंस हैं।

अगर आपको डाटाबेस की आवश्यकता है, तो आप पर एक नज़र आ सकते हैं, लेकिन मैं प्रदर्शन को कहीं भी बंद होने की कल्पना नहीं कर सकता

इसके अलावा, अगर आप कहीं भी कक्षा SomeObjectType का विस्तार नहीं कर रहे हैं, तो आप इसे अंतिम कक्षा SomeObjectType बनाकर कुछ प्रदर्शन (विशेषकर आईओएस पर) प्राप्त कर सकते हैं।

No comments:

Post a Comment