यह यदि कोई Application.UseMoreMemory()
समारोह है कि हम सिर्फ कह सकते हैं :-)
ओह, मैं कोई भी के बारे में पता था अच्छा होगा।
सभी डॉक्स मैंने देखा है का कहना है कि यह स्मृति द्वारा सीमित है, लेकिन यह भौतिक स्मृति मुद्दा है कि नहीं है, यह आभासी पता स्थान आप आप के लिए उपलब्ध हो।
आपको यह ध्यान रखना चाहिए कि 500 से 600 की वृद्धि केवल मध्यम वृद्धि की तरह दिखती है (हालांकि 20% अपने आप पर काफी बड़ा है), क्योंकि आप इसे तीन आयामों में कर रहे हैं, यह काम करता है भंडारण आवश्यकताओं को दोगुना करने के करीब हो।
स्मृति से, Excel 2007 बूलियन प्रकार के लिए कम पूर्णांकों (16 बिट) का इस्तेमाल किया तो, कम से कम, अपने 500 सरणी 250M के बारे में (500x500x500x2) तक का समय लग जाएगा।
600 के सभी आयामों को बढ़ाने से आपको 600x600x600x2, या 432M मिल जाएगा।
सभी अच्छी तरह से 2 जी प्रयोग करने योग्य पता स्थान है कि आप शायद एक 32-बिट मशीन में है के भीतर (मुझे लगता है कि Excel 2007 एक 64-बिट संस्करण के लिए किया था पता नहीं है), लेकिन ये बातें छोटा नहीं कर रहे हैं, और आपको उस पते की जगह को अन्य चीजों के साथ साझा करना होगा।
यह देखना दिलचस्प होगा कि आप किस बिंदु पर त्रुटियों को प्राप्त कर रहे हैं।
पहले चरण के रूप में, मैं इस तरह की एक बड़ी सरणी की आवश्यकता को देख रहा हूं। यह एक अलग तरीका हो सकता है, जैसे कि सरणी को विभाजित करना ताकि इसका केवल एक हिस्सा किसी भी समय स्मृति में हो (मैनुअल वर्चुअल मेमोरी की तरह)।
वास्तव में यादृच्छिक पहुंच के लिए यह अच्छा प्रदर्शन करने की संभावना नहीं है, लेकिन अधिक अनुक्रमिक पहुंच के लिए बहुत बुरा नहीं होना चाहिए और कम से कम आपको जाना होगा (एक धीमी समाधान गैर-काम करने वाले व्यक्ति के लिए बेहतर है)।
एक और संभावना बिट हैंडलिंग को दूर करने के लिए है ताकि आपके बूलियन वास्तव में शब्दों के बजाए बिट्स के रूप में संग्रहीत किए जाएं।
आपको getBool
और setBool
के लिए फ़ंक्शन प्रदान करना होगा, शब्दों की सरणी पर बिटमैस्क ऑपरेटरों का उपयोग करके और फिर, प्रदर्शन उस क्रैश-हॉट नहीं होगा, लेकिन आप कम से कम तब तक सक्षम होंगे के बराबर:
' Using bits instead of words gives 16 times as much. '
Dim arr(8000, 8000, 8000) As Boolean
हमेशा की तरह, यह अपने उपयोग के रुझानों क्या आप के लिए सरणी की जरूरत पर निर्भर करता है, और।
500 से 600 की वृद्धि सिर्फ एक मोटा काम था जो मैंने किया था। असल में हम कुछ ऐसा करने के लिए एक्सेल का उपयोग करने की कोशिश कर रहे हैं जिसे वास्तव में दुर्भाग्यवश के लिए डिज़ाइन नहीं किया गया था, लेकिन समय सीमा अगले हफ्ते है इसलिए हम वास्तव में अभी नहीं बदल सकते हैं! विचारों के लिए धन्यवाद, मैं यह देखने के लिए दूर रहूंगा कि चीज़ें कहां जाती हैं। – Farthingworth
_Before_ आप प्लगिंग दूर रखते हैं, तो आप यह सुनिश्चित करना चाहते हैं कि प्रबंधन को इस संभावित देरी से अधिसूचित किया गया हो। उन्हें वास्तव में आश्चर्य पसंद नहीं है :-) – paxdiablo
बूलियन के विपरीत बिट्स का उपयोग करने के आपके विचार पर त्वरित नोट, मैं केवल अपने परीक्षण के लिए बूलियन का उपयोग कर रहा था, हमारे वास्तविक कार्य में हम ऐसे structs का उपयोग कर रहे हैं जो डेटा का एक गुच्छा रखते हैं प्रक्रिया, इसलिए हम बूल के साथ क्या प्राप्त कर सकते हैं उससे काफी कम मिलता है। मैंने पहले से ही जितना संभव हो उतना कम कर दिया है = ( – Farthingworth