2010-05-22 6 views
5

मेरे पास विरासत कोड है जिसे मुझे प्रदर्शन कारणों से सुधारने की आवश्यकता है। मेरे आवेदन में दो निष्पादन योग्य शामिल हैं जिन्हें कुछ जानकारी का आदान-प्रदान करने की आवश्यकता है। विरासत कोड में, एक exe एक फ़ाइल को लिखता है (फ़ाइल नाम exe के लिए एक तर्क के रूप में पारित किया जाता है) और दूसरा निष्पादन योग्य पहले जांचता है कि ऐसी फ़ाइल मौजूद है; यदि मौजूद नहीं है तो फिर से जांचता है और जब इसे पाता है, तो फ़ाइल की सामग्री को पढ़ने के लिए चला जाता है। इस तरह दो निष्पादन योग्य के बीच स्थानांतरित जानकारी। जिस तरह से कोड संरचित किया जाता है, दूसरा निष्पादन योग्य पहले प्रयास में सफल होता है।फ़ाइलों को दो प्रक्रियाओं के बीच संवाद करने के साधन के रूप में उपयोग करने के सभी नुकसान क्या हैं?

अब मुझे इस कोड को साफ़ करना होगा और यह सोच रहा था कि कुछ इंटर-प्रोसेस संचार जैसे पाइप की तरह संचार के साधन के रूप में फ़ाइलों का उपयोग करने के नुकसान क्या हैं। क्या फाइल को पाइप से अधिक महंगी खोलना और पढ़ना है? क्या कोई अन्य नुकसान है? और आपको लगता है कि प्रदर्शन में गिरावट कितनी महत्वपूर्ण होगी।

विरासत कोड दोनों विंडोज़ और लिनक्स पर चल रहा है।

उत्तर

3

आईपीसी के लिए फ़ाइलों का उपयोग कर के साथ कुछ समस्याएं हैं:

  • क्या होता है जब प्रक्रिया (1) फाइल करने के लिए लिख रहे हैं जब प्रक्रिया (2) यह पाता है? इस मामले को संभालने के लिए आपको विशेष तर्क होना चाहिए।

  • क्या होता है यदि प्रक्रिया (1) प्रक्रिया के दौरान एक और संदेश भेजना चाहती है (2) अभी भी फाइल से पढ़ रहा है? (1) किसी भी तरह से यह पता लगाना होगा कि फाइल को लिखा नहीं जा सकता है, और जब तक यह उपलब्ध न हो जाए तब तक प्रतीक्षा करें।

  • बड़ी संदेश ट्रैफ़िक की मात्रा के तहत एक बाधा बन सकती है, खासकर यदि आप केवल आईपीसी के लिए एक फ़ाइल का उपयोग कर रहे हैं।

यह निर्धारित करने के लिए कि फ़ाइल I/O आपके लिए एक प्रदर्शन बाधा है, हमें आपके द्वारा भेजे जा रहे संदेशों के बारे में और अधिक समझने की आवश्यकता है। वे कितने बड़े हैं, कितनी बार उन्हें भेजा जाता है, आदि। अन्यथा यह तय करना मुश्किल है कि उनके प्रदर्शन पर उनके प्रभाव पर क्या प्रभाव पड़ता है, यदि कोई हो।

उस ने कहा, मैंने अतीत में फ़ाइलों का उपयोग प्रक्रियाओं के बीच जानकारी पास करने के लिए किया है, हालांकि आम तौर पर या तो नए फाइलनाम हर बार बनाए जाएंगे या फाइलों का उपयोग बड़ी मात्रा में डेटा पास करने के लिए किया जाएगा और एक छोटा आईपीसी संदेश इस्तेमाल किया जाएगा संकेत जब फ़ाइल तैयार है।

मेरी राय में जब तक आपके पास फ़ाइलों का उपयोग करने का कोई कारण नहीं है - जैसे डेटा की बड़ी मात्रा में स्थानान्तरण - मैं पारंपरिक आईपीसी तंत्र जैसे पाइप, सॉकेट इत्यादि पसंद करूंगा लेकिन आपको इसे सावधानी से लागू करना होगा सुनिश्चित करें कि सब कुछ दोनों प्लेटफार्मों पर काम करता है।

1

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

वास्तविक आईपीसी तंत्र का उपयोग करना हमेशा अच्छा होता है लेकिन यदि आपके ऐप को क्रॉस-प्लेटफॉर्म होना है, तो यह वास्तव में आपके विकल्पों को सीमित करता है।

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