2011-08-16 14 views
8

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां जावा का मूल क्रमिकरण धीमा है, इसलिए हम बेहतर प्रदर्शन के लिए कक्षाओं पर बाहरी इंटरफ़ेस को कार्यान्वित करने के लिए आगे बढ़ना चाहते हैं।जावा बाहरी बाह्य पढ़ने योग्य()/लिखेंExternal() स्वचालित रूप से ब्लॉक

हालांकि, इन वर्गों में बहुत से डेटा सदस्य हैं, और हमने इन दो तरीकों को लिखते समय गलतियों को आसान बनाना महसूस किया है। हम इन कार्यों में कक्षा के सभी सदस्यों को पढ़ रहे हैं/लिख रहे हैं, कुछ भी कल्पना नहीं है। ऑफ़लाइन प्रक्रिया में स्वचालित रूप से बाहरीकरण के लिए writeExternal() ब्लॉक उत्पन्न करने का कोई तरीका है, या संकलन समय पर?

मैंने http://projectlombok.org/ पर एक नज़र डाली थी, और ऐसा कुछ आदर्श होगा।

इसी प्रकार, हम इन वर्गों को अपरिवर्तनीय रखना चाहते हैं, लेकिन अपरिवर्तनीय कक्षाएं बाहरी उपयोग करने योग्य इंटरफ़ेस को कार्यान्वित नहीं कर सकती हैं - हम प्रभावी जावा से प्रॉक्सी क्लास पैटर्न का उपयोग करना चाहते हैं - जो उत्पन्न होता है वह भी उपयोगी होगा।

उत्तर

1

मैं एक परियोजना पर काम कर रहा हूँ जहाँ जावा के मूल क्रमबद्धता धीमी है

कैसे धीमी गति से? क्यूं कर? बहुत सारे हाथ कोडिंग के साथ इसे तेजी से बनाना लंबे समय तक या तो आर्थिक रूप से व्यवहार्य या रखरखाव करने की संभावना नहीं है। Serialization ओवरहेड वास्तव में transmisssion में समय और अंतरिक्ष सीमाओं के लिए नीचे आना चाहिए। आपके द्वारा नियोजित सभी हाथ कोडिंग के परिणामस्वरूप जावा का डिफ़ॉल्ट सीरियलाइजेशन चौंकाने वाला धीमा होना चाहिए। आप जांच के कारणों से बेहतर होगा। आपको उदाहरण के लिए मिल सकता है कि एक अच्छी तरह से रखा BufferedOutputStream आपकी सभी समस्याओं को हल करेगा।

+1

यह धारावाहिकरण के लिए रन टाइम पर प्रतिबिंब का उपयोग करता है, जो हमेशा धीमा होने वाला होता है। विभिन्न serialization विधियों की तुलना के लिए http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking देखें। – MrLebowski

+0

@MrLebowski मैं प्रतिबिंब के उपयोग के बारे में जानता हूं लेकिन व्यावहारिक रूप से यह वास्तव में नेटवर्क और डिस्क बैंडविड्थ पर हावी है? और क्या उन्होंने परीक्षणों में शामिल किया था? या उदाहरण के लिए केवल ByteArrayOutputStreams serialize? आप अच्छी तरह से पा सकते हैं कि यह सब पूरी तरह अकादमिक है। – EJP

+0

इसे इंगित करने के लिए धन्यवाद। आंकड़े यहां देखें: http://pastebin.com/yi4JhhVb --- तो कुल क्रमिकरण से संबंधित समय बाह्यकरण से धारावाहिक तक बढ़ने में वृद्धि लगभग 1ms है - यह नेटवर्क समय में बढ़ोतरी है जो खराब है। मैं संपीड़ित धारा को आजमा रहा हूं और देख रहा हूं कि यह मदद करता है या नहीं। अभी भी स्वचालित बाह्य या कुछ बेहतर स्वचालित serialization सबसे अच्छा होगा। – MrLebowski

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