सिस्टम की केवल एक झलक के साथ सटीक उत्तर प्रदान करना हमेशा मुश्किल होता है, लेकिन क्या आपने वास्तव में वास्तविक थ्रूपुट की जांच करने की कोशिश की है?
पहले समाधान के रूप में, मैं बस एक समर्पित डिस्क का उपयोग करने की सिफारिश करता हूं (इसलिए अन्य प्रक्रियाओं से कोई समवर्ती पढ़ने/लिखने की क्रिया नहीं होती है), और उस पर एक तेज़। इस तरह यह हार्डवेयर अपग्रेड की केवल कुछ लागत होगी, और हम सभी जानते हैं कि हार्डवेयर आमतौर पर सॉफ़्टवेयर सस्ता है;) आप थ्रूपुट को अधिकतम करने के लिए RAID नियंत्रक पर भी जा सकते हैं।
यदि आप अभी भी डिस्क थ्रूपुट द्वारा सीमित हैं, तो फ्लैश तकनीक का उपयोग करके वहां नई तकनीकें हैं: यूएसबी कुंजी (हालांकि यह बहुत पेशेवर प्रतीत नहीं हो सकती है) या "नया" सॉलिड स्टेट ड्राइव एक से अधिक थ्रूपुट प्रदान कर सकता है यांत्रिक डिस्क
अब, यदि डिस्क दृष्टिकोण पर्याप्त तेज़ नहीं हैं या आप अच्छे एसएसडी पर अपने हाथ नहीं प्राप्त कर सकते हैं, तो आपके पास अन्य समाधान हैं, लेकिन उनमें सॉफ़्टवेयर परिवर्तन शामिल हैं, और मैं उन्हें अपनी टोपी के ऊपर से प्रस्तावित करता हूं।
- एक सॉकेट दृष्टिकोण: दूसरी उपयोगिता एक बंदरगाह पर सुन रही है और आप इसे वहां डेटा भेजते हैं। एक स्थानीय मशीन पर यह अपेक्षाकृत तेज़ है, और आप भी काम को समानांतर करते हैं, इसलिए यदि डेटा का आकार बढ़ता है, तो भी आप काफी जल्दी इलाज शुरू कर देंगे।
- एक मेमोरी मैपिंग दृष्टिकोण: लाइव मेमोरी में एक समर्पित क्षेत्र को लिखें और उस क्षेत्र से उपयोगिता को पढ़ें (Boost.Interprocess मदद कर सकता है, अन्य समाधान भी हैं)।
ध्यान दें कि अगर पढ़ा अनुक्रमिक है, तो मुझे इसे 'पाइप' दृष्टिकोण (अला यूनिक्स) को आजमाने के लिए और अधिक "प्राकृतिक" लगता है ताकि दोनों प्रक्रियाएं एक साथ निष्पादित हो जाएं। पारंपरिक पाइप में, डेटा डिस्क के बाद सभी को हिट नहीं कर सकता है।
एक शर्म की बात है, यह नहीं है कि भारी प्रसंस्करण शक्ति की इस उम्र में, हम अभी भी हमारी डिस्क आईओ के साथ संघर्ष कर रहे हैं?
स्रोत
2010-01-19 10:32:27
शायद प्रदर्शन में कमी फ़ाइल के कारण नहीं है, बल्कि स्मृति के लिए है। जब आप फ़ाइल को वापस पढ़ते हैं, तो क्या आप पूरी फाइल को पढ़ते हैं? यहां तक कि यदि मौजूदा सिस्टम की तुलना में 100 एमबी बहुत अधिक नहीं है, तो स्मृति में लोड का मतलब है कि फाइल से जो पढ़ा जाता है, उसके लिए अतिरिक्त संरचनाएं, लिंक और गणना मूल्यों का तात्पर्य है, यह स्मृति उपयोग को बढ़ा सकता है। –
यहां प्रस्तावित समाधान त्वरित समाधान के लिए कर सकते हैं, लेकिन आपको वास्तव में अपने पूरे कार्यक्रम आर्किटेक्चर पर पुनर्विचार करना चाहिए। – Thorsten79