जैसे ही विषय बताता है कि फाइल को बड़ी मात्रा में डेटा क्रमबद्ध करते समय मैं बूस्ट :: क्रमबद्धता के साथ मामूली समस्या में आया हूं। समस्या में अनुप्रयोगों के क्रमिकरण भाग की मेमोरी पदचिह्न शामिल है जिसमें मेरी वस्तुओं की क्रमबद्धता 3 से 3.5 गुना होती है।
यह ध्यान रखना महत्वपूर्ण है कि मेरे पास डेटा संरचना बेस क्लास पॉइंटर्स का तीन आयामी वेक्टर है और उस संरचना के लिए एक सूचक है। इस तरह:बूस्ट :: सीरियलाइजेशन के दौरान सीरियलाइजेशन उच्च मेमोरी खपत
using namespace std;
vector<vector<vector<MyBase*> > >* data;
यह बाद में यह एक करने के लिए एक कोड एनालॉग के साथ धारावाहिक है:
ar & BOOST_SERIALIZATION_NVP(data);
बढ़ावा/क्रमबद्धता/vector.hpp शामिल है।
कक्षाओं को "माईबेस" से सभी उत्तराधिकारी क्रमबद्ध किया जा रहा है।
अब, मेरी परियोजना की शुरुआत के बाद से मैंने सामान्य बाइनरी_आर्किव, टेक्स्ट, एक्सएमएल और अंततः पॉलिमॉर्फिक बाइनरी/एक्सएमएल/टेक्स्ट से सीरियलाइजेशन के लिए अलग-अलग अभिलेखागार का उपयोग किया है। इनमें से प्रत्येक एक ही तरह से कार्य करता है।
आम तौर पर यह एक समस्या नहीं होगी यदि मुझे थोड़ी मात्रा में डेटा क्रमबद्ध करना पड़ा लेकिन मेरे पास कक्षाओं की संख्या मिलियन (आदर्श रूप से लगभग 10 मिलियन) है और स्मृति उपयोग के रूप में मैं इसका परीक्षण करने में सक्षम हूं लगातार दिखाता है कि कोड लिखने के दौरान कोड :: बूस्ट :: क्रमबद्धता भाग द्वारा आवंटित स्मृति फ़ाइल लिखते समय पूरे स्मृति पदचिह्न के लगभग 2/3 है।
यह 4 मिलियन जीबी रैम के लिए लिया गया है जो 4 मिलियन ऑब्जेक्ट्स के लिए लिया जाता है जहां ऑब्जेक्ट्स स्वयं 4.2 जीबी लेते हैं। अब तक यह है कि मैं अपना कोड लेने में सक्षम हूं क्योंकि मेरे पास 8 जीबी से अधिक भौतिक RAM वाली मशीन तक पहुंच नहीं है। मुझे यह भी ध्यान रखना चाहिए कि यह एक 64 बिट एप्लिकेशन विंडोज 7 पेशेवर x64 संस्करण पर चल रहा है लेकिन स्थिति उबंटू बॉक्स पर समान है।
किसी को भी यह पता है कि मैं इसे समस्या निवारण के बारे में कैसे जाना चाहूंगा क्योंकि यह मेरे लिए ऐसी अनुप्रयोग के लिए ऐसी उच्च स्मृति आवश्यकताएं अस्वीकार्य है जो धारावाहिक करते समय चलने के दौरान जितनी मेमोरी का उपयोग नहीं करेगा।
Deserialization उतना बुरा नहीं है, क्योंकि यह आवश्यक स्मृति के लगभग 1.5 गुना आवंटित करता है। यह ऐसा कुछ है जिसके साथ मैं रह सकता हूं।
बूस्ट :: संग्रह :: archive_flags :: no_tracking के साथ ट्रैकिंग बंद करने का प्रयास किया लेकिन यह बिल्कुल वही कार्य करता है।
किसी को भी कोई विचार है कि मुझे क्या करना चाहिए?
बस इस विषय को टक्कर देने के लिए जांच कर रहा है क्योंकि किसी ने अभी तक जवाब नहीं दिया है ... – Max021
दिलचस्प विषय। इसे पढ़ें: http: // stackoverflow।कॉम/प्रश्न/1058051/बूस्ट-सीरियलाइजेशन-प्रदर्शन-टेक्स्ट-बनाम-बाइनरी-प्रारूप –
'नो_ट्रैकिंग' ध्वज दुर्भाग्य से कार्यान्वित नहीं किया गया है (इसके बारे में समस्या ट्रैकर पर कुछ चर्चा है)।/सीसी @MohsenTamiz – sehe