जब मैं कॉलेज में सी ++ का उपयोग कर रहा था, तो मुझे बहुआयामी सरणी (इस प्रकार एमडीए) का उपयोग करने के लिए कहा गया था, क्योंकि यह एक बड़ी हिस्से में आवंटित होने के बाद से बेहतर स्मृति इलाके का प्रदर्शन करता है। दूसरी ओर, सरणी (एओए) के ऐरे को कई छोटे हिस्सों में आवंटित किया जाता है, जहां संभवतः भौतिक स्मृति में रिक्त स्थान पाए जाते हैं।सरणी बनाम बहु-आयामी सरणी
तो मुझे लगता है कि पहला सवाल यह है: क्या यह एक मिथक है, या यह सलाह देने योग्य है?
यह मानते हुए कि यह बाद वाला है, तो अगला प्रश्न जावा जैसी भाषा में क्या करना होगा जिसमें वास्तविक एमडीए नहीं है। निश्चित रूप से 1 डीए के साथ एमडीए का अनुकरण करना मुश्किल नहीं है। अनिवार्य रूप से, एमडीए के साथ भाषाओं के लिए वाक्य रचनात्मक चीनी क्या है एमडीए के बिना भाषाओं के लिए लाइब्रेरी समर्थन के रूप में लागू किया जा सकता है।
क्या यह प्रयास योग्य है? क्या यह जावा जैसी भाषा के लिए अनुकूलन समस्या का बहुत कम स्तर है? क्या हमें केवल सरणी छोड़ने के लिए सरणी छोड़कर List
का उपयोग करना चाहिए?
एक और सवाल: जावा में, AoA एक ही बार में (new int[M][N]
) का आवंटन करता है संभवतः पदानुक्रम (new int[M][]; for (... new int[N]
) यह कर तुलना में एक अलग स्मृति आवंटन उपज?
यह भी देखें http://stackoverflow.com/questions/2512082/java-multi-dimensional-array-vs-one-dimensional, जिसमें वास्तविक बेंचमार्क परिणाम होते हैं। – rwong