2011-07-04 14 views
6

मैं कई प्लेटफ़ॉर्म (एंड्रॉइड, आईओएस, और कुछ शायद भविष्य में किसी प्रकार का कंसोल) के लिए मोबाइल गेम पर काम कर रहा हूं।google :: dense_hash_map बनाम std :: tr1 :: unordered_map?

मैं यह निर्णय लेने का प्रयास कर रहा हूं कि संसाधन प्रबंधक से बनावट पुनर्प्राप्त करने के लिए tr1::unordered_map या google::dense_hash_map का उपयोग करना है (बाद में ओपनजीएल का उपयोग करके बाध्यकारी)।

  • प्रदर्शन (स्मृति और बुद्धिमान CPU)
  • पोर्टेबिलिटी
  • : आमतौर पर यह काफी कुछ समय प्रति सेकंड (एन फ्रेम, प्रति जहाँ मेरे खेल पर ~ 60 एफपीएस चल रहा है)

    विचार कर रहे हैं हो सकता है

कोई भी विचार या सुझाव स्वागत है। जो एक सबसे अच्छा था, tr1:unordered_map, boost::unordered_map या std::map:

+0

मुझे दिलचस्पी है कि आपको हैश मानचित्र का उपयोग क्यों करना चाहिए? मैं आपके द्वारा उपयोग किए जा रहे प्लेटफ़ॉर्म के बारे में कुछ भी नहीं जानता, लेकिन यह आपके द्वारा वर्णित उद्देश्य के लिए अजीब लगता है। – Rookie

+0

बनावट प्रबंधन के लिए जाने का यह तरीका असामान्य नहीं है, ओग्रे 3 डी एक समान दृष्टिकोण का उपयोग करता है (http://www.ogre3d.org/docs/api/html/classOgre_1_1TextureManager.html) – Goles

+2

इस पर अच्छा जवाब देना असंभव है सवाल। शायद यह बिल्कुल कोई अंतर नहीं होगा। आप इसका आकलन क्यों नहीं करते और देखते हैं? –

उत्तर

1

एक C++ में परियोजना मैं विकसित की है, मैं कुछ इसी तरह सोच रहा था? मैं संकलन पर एक typedef, चलाया घोषित करने समाप्त हो गया:

#ifdef UnorderedMapBoost 
typedef boost::unordered_map<cell_key, Cell> cell_map; 
#else 
#ifdef UnorderedMapTR1 
typedef std::tr1::unordered_map<cell_key, Cell> cell_map; 
#else 
typedef std::map<cell_key, Cell> cell_map; 
#endif // #ifdef UnorderedMapTR1 
#endif // #ifdef UnorderedMapBoost 

मैं तो संकलन समय जो एक का उपयोग करने, और यह प्रोफाइल पर नियंत्रण कर सकते हैं। मेरे मामले में, पोर्टेबिलिटी अधिक महत्वपूर्ण हो गई, इसलिए मैं आमतौर पर std::map का उपयोग करता हूं।

1

मानक कंटेनरों के लिए एसटीएल के साथ जाएं। उनके पास अनुमानित व्यवहार है, और एसटीएल अल्गोस/इटरेटर्स में निर्बाध रूप से इस्तेमाल किया जा सकता है। आपको एसटीएल द्वारा कुछ प्रदर्शन गारंटी भी दी जाती है।

यह पोर्टेबिलिटी की गारंटी भी देनी चाहिए। अधिकांश कंपाइलरों में नया मानक लागू होता है।

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