मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां जावा का मूल क्रमिकरण धीमा है, इसलिए हम बेहतर प्रदर्शन के लिए कक्षाओं पर बाहरी इंटरफ़ेस को कार्यान्वित करने के लिए आगे बढ़ना चाहते हैं।जावा बाहरी बाह्य पढ़ने योग्य()/लिखेंExternal() स्वचालित रूप से ब्लॉक
हालांकि, इन वर्गों में बहुत से डेटा सदस्य हैं, और हमने इन दो तरीकों को लिखते समय गलतियों को आसान बनाना महसूस किया है। हम इन कार्यों में कक्षा के सभी सदस्यों को पढ़ रहे हैं/लिख रहे हैं, कुछ भी कल्पना नहीं है। ऑफ़लाइन प्रक्रिया में स्वचालित रूप से बाहरीकरण के लिए writeExternal()
ब्लॉक उत्पन्न करने का कोई तरीका है, या संकलन समय पर?
मैंने http://projectlombok.org/ पर एक नज़र डाली थी, और ऐसा कुछ आदर्श होगा।
इसी प्रकार, हम इन वर्गों को अपरिवर्तनीय रखना चाहते हैं, लेकिन अपरिवर्तनीय कक्षाएं बाहरी उपयोग करने योग्य इंटरफ़ेस को कार्यान्वित नहीं कर सकती हैं - हम प्रभावी जावा से प्रॉक्सी क्लास पैटर्न का उपयोग करना चाहते हैं - जो उत्पन्न होता है वह भी उपयोगी होगा।
यह धारावाहिकरण के लिए रन टाइम पर प्रतिबिंब का उपयोग करता है, जो हमेशा धीमा होने वाला होता है। विभिन्न serialization विधियों की तुलना के लिए http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking देखें। – MrLebowski
@MrLebowski मैं प्रतिबिंब के उपयोग के बारे में जानता हूं लेकिन व्यावहारिक रूप से यह वास्तव में नेटवर्क और डिस्क बैंडविड्थ पर हावी है? और क्या उन्होंने परीक्षणों में शामिल किया था? या उदाहरण के लिए केवल ByteArrayOutputStreams serialize? आप अच्छी तरह से पा सकते हैं कि यह सब पूरी तरह अकादमिक है। – EJP
इसे इंगित करने के लिए धन्यवाद। आंकड़े यहां देखें: http://pastebin.com/yi4JhhVb --- तो कुल क्रमिकरण से संबंधित समय बाह्यकरण से धारावाहिक तक बढ़ने में वृद्धि लगभग 1ms है - यह नेटवर्क समय में बढ़ोतरी है जो खराब है। मैं संपीड़ित धारा को आजमा रहा हूं और देख रहा हूं कि यह मदद करता है या नहीं। अभी भी स्वचालित बाह्य या कुछ बेहतर स्वचालित serialization सबसे अच्छा होगा। – MrLebowski