मैं एक सर्वर अनुप्रयोग पर विधियों का एक सेट लिखने वाला हूं जो टीसीपी सॉकेट से प्राप्त संदेश लेता है, उन्हें एन्कोड/डीकोड करता है, और उन्हें एन्क्रिप्ट/डिक्रिप्ट करता है। इस तरह के Encode<T>(...) where T : IMessage
रूप 1. मेक तरीकों कि जेनरिक का उपयोग करें, और उसके बाद एनकोडर लागू:सिस्टम। रिफ्लेक्शन बनाम जेनेरिक - प्रदर्शन
को ध्यान में रखते संदेशों विशेष प्रकार के रूप में परिभाषित कर रहे हैं, गुण और कुल लंबाई के अपने स्वयं के सेट के साथ प्रत्येक, मैं नीचे दिए समाधान के लिए चुनते करने की जरूरत है/प्रत्येक प्रकार के संदेश के लिए डिकोडर और ResolveEncoder<T>
है जो वांछित संदेश या के लिए एन्कोडर लेगा 2. किसी भी प्रकार का संदेश उपयोग करता है, जब तक यह IMessage
लागू करता है, जैसे Encode(IMessage message)
, और सिस्टम का उपयोग करें। सब कुछ निर्धारित करने के लिए प्रतिबिंब मुझे इसके बारे में जानना है।
मुझे समाधान # 2 करने में अधिक दिलचस्पी है क्योंकि यह मेरा कोड 30 गुना छोटा बनाता है। हालांकि, मुझे चिंता है कि संपत्तियों का निरंतर प्रतिबिंब प्रदर्शन को प्रभावित करेगा या नहीं। अब जब मैं परियोजना को पूरा करने के लिए सीमित हूं, तो मैं वास्तव में "प्रयोग" नहीं कर सकता।
मैं किसी भी व्यक्तिगत अनुभव या लिंक के साथ लिंक के साथ आभारी हूं कि समाधान के साथ प्रदर्शन कैसे होता है।
प्रतिबिंब निश्चित रूप से प्रदर्शन को कम करेगा। यह देखने के लिए अपना जेनेरिक कोड पोस्ट करें कि शायद इसे उन तरीकों से कम किया जा सकता है जिनके बारे में आपने नहीं सोचा था, जो यह अधिक सहनशील होगा। – SimpleVar
समय से पहले अनुकूलन न करें। हां प्रतिबिंब मूल कोड से धीमा है, लेकिन यदि यह वास्तविक बाधा नहीं है तो यह अप्रासंगिक है। प्रदर्शन को बेहतर बनाने के लिए पहले निष्पादन पर अपने प्रतिबिंबित तरीकों को कैश करने के लिए कुछ परिदृश्यों में जेनेरिक के साथ प्रतिबिंब का उपयोग करना संभव है। – cfeduke