5

के लिए प्रदर्शन मेट्रिक्स हम संदेशों को संग्रहीत करने और संदेशों की एक बड़ी संख्या (> एक मिनट में 30k) को दबाकर कफका का उपयोग कर रहे हैं। मुझे यकीन नहीं है कि क्या यह प्रासंगिक है लेकिन कोड जो कफका संदेश का निर्माता है, जुर्बी में है।एवरो बनाम प्रोटोबफ

संदेशों को सीरियलाइजिंग और Deserialising भी सिस्टम पर एक प्रदर्शन प्रभाव पड़ता है।

क्या कोई क्रमिकरण और deserialisation की गति के मामले में एवरो बनाम प्रोटोकॉल बफर की तुलना करने में मदद कर सकता है।

+1

स्टैक ओवरफ्लो के लिए कोई अच्छा सवाल नहीं है लेकिन इस पोस्ट को चेकआउट करें: http://www.sammur.com/?p=36 – Nicholas

+0

बहुत धन्यवाद निकोलस :) –

उत्तर

19

मुझे आपको यह बताने से नफरत है, लेकिन आपके प्रश्न का कोई आसान जवाब नहीं है।

एक क्रमबद्धता प्रारूप का प्रदर्शन कई कारकों पर निर्भर करता है। सबसे पहले, प्रदर्शन कार्यान्वयन प्रारूप की तुलना में अधिक है। आप वास्तव में जानना चाहते हैं कि प्रत्येक प्रारूप के विशिष्ट जेआरबीई कार्यान्वयन कितने अच्छे प्रदर्शन करते हैं (या शायद जावा कार्यान्वयन, यदि आप उन्हें लपेट रहे हैं)। उत्तर सी ++ जैसी अन्य भाषाओं में उत्तर से जंगली रूप से अलग हो सकता है।

इसके अतिरिक्त, लाइब्रेरी का उपयोग करने के तरीके के आधार पर प्रदर्शन अलग-अलग होगा। कई पुस्तकालयों के एपीआई "आसान, धीमी" तरीके और "तेज़, कठिन" तरीके के बीच एक व्यापार-बंद प्रदान करते हैं। अनुकूलन करते समय, आप दस्तावेज़ीकरण का ध्यानपूर्वक अध्ययन करना चाहते हैं और अधिकतम प्रदर्शन को निचोड़ने के तरीके के बारे में जानने के लिए पुस्तकालयों के लेखकों से उदाहरण कोड देखें।

अंत में - और सबसे महत्वपूर्ण बात यह है कि आप जिस डेटा के साथ काम कर रहे हैं उसके आधार पर प्रदर्शन बेहद अलग है। विभिन्न प्रारूपों और कार्यान्वयन विभिन्न प्रकार के डेटा के लिए अनुकूलन। उदाहरण के लिए, स्ट्रिंग-भारी डेटा संख्या-भारी डेटा से बहुत अलग कोड पथ का उपयोग करने जा रहा है। प्रत्येक प्रारूप के लिए - यहां तक ​​कि JSON और XML * - हमेशा एक उपयोग केस ढूंढना हमेशा संभव होता है जहां वे अन्य सभी की तुलना में बेहतर प्रदर्शन करते हैं। पुस्तकालयों के लेखकों से आने वाले बेंचमार्क से सावधान रहें क्योंकि इससे उनके लिए अनुकूल मामलों का उपयोग करने पर जोर दिया जाएगा।

दुर्भाग्यवश, यदि आप वास्तव में जानना चाहते हैं कि कौन सा प्रारूप आपके लिए बेहतर प्रदर्शन करेगा, तो आप जिस तरीके से बाहर निकलने जा रहे हैं, वह आपके कोड के दो संस्करणों को लिखकर, प्रत्येक लाइब्रेरी का उपयोग करके और उनकी तुलना करके है। कोई बाहरी बेंचमार्क आपको वास्तविक जवाब देने में सक्षम नहीं होगा।

(मैं Protobuf v2 और Cap'n Proto के लेखक हूँ, इसलिए मैं बहुत समय बिताया है क्रमबद्धता मानक देख रही है और प्रदर्शन के बारे में सोच।)

* बस एक्सएमएल के बारे में मजाक कर रहे।

+0

यह आपके लिए यह सुनकर बहुत अच्छा है, हम प्रोटोबफ में स्थानांतरित हो गए हैं और यह बहुत अच्छा कर रहा है, बीटीडब्ल्यू प्रोटोटा टाइमस्टैम्प को रूबी डेट-टाइम ऑब्जेक्ट में बदलने का एक अच्छा तरीका है? –

+0

@ आदित्यसंघी क्षमा करें, मुझे रुबी प्रोटोबफ कार्यान्वयन के बारे में कुछ भी पता नहीं है। संभवतः वहां कहीं लाइब्रेरी फ़ंक्शन होना चाहिए, हालांकि आधिकारिक टाइमस्टैम्प.प्रोटो अपेक्षाकृत नया है, इसलिए इसे अभी तक जोड़ा नहीं गया है। –

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