2011-11-08 14 views
15

मैंने वर्तमान में हमारे वर्तमान बाइनरी प्रोटोकॉल को बनाए रखने वाले हमारे वर्तमान सी ++ नेटवर्क हाथ से बने क्रमबद्धीकरण तंत्र को बेहतर बनाने के तरीकों की जांच कर रहे हैं। बाउरी सीरियलाइजेशन का उपयोग करके Boost.Serialisation के साथ Boost.Asio का उपयोग करके इसे पहला कोड लिया गया था। वैसे भी यह चालू हो गया कि यह कुछ हद तक धीमा (10%) है जो हमारे वर्तमान हाथ से बने कार्यान्वयन। Boost.Asio के साथ Google protobuf का उपयोग करने के बारे में किसी के पास वास्तविक _real_work_ अनुभव है?Boost.Asio Google प्रोटोकॉल बफर के साथ

मैं नमूनों के लिए गूगल खोज की, लेकिन केवल आने-अप करने के लिए इस उदाहरण के साथ कर रहा था:

Boost Asio with google protocol buffers sample

करता है किसी को भी किसी भी वास्तविक परियोजना में ऐसा किया? मुझे बहुत अधिक प्रदर्शन आंकड़े हैं क्योंकि यह काफी तेजी से होना चाहिए ...

+0

आप आंकड़ा दिखा छवि संलग्न कर सकते हैं? –

+0

क्षमा करें मैं इसे प्रकट नहीं कर सकता :( – jvaz

उत्तर

22

हम जटिल, कम संदेश दर प्रोटोकॉल के लिए boost :: asio और Protobuf का उपयोग करते हैं। सरल, उच्च संदेश दर प्रोटोकॉल के लिए हम boost :: asio और कस्टम serialization को बढ़ावा देते हैं।

सी ++ प्रोटोबफ लाइब्रेरी std :: स्ट्रिंग का उपयोग स्ट्रिंग फ़ील्ड्स का प्रतिनिधित्व करने के लिए करता है जो संदेशों को deserializes, जिसका मतलब है कि आपके द्वारा प्राप्त हर संदेश में प्रत्येक स्ट्रिंग फ़ील्ड के लिए प्रोटोबफ द्वारा एक फ्री स्टोर आवंटन किया जाता है। यह वास्तव में उच्च आवृत्ति संदेश के लिए Protobuf बहुत प्रदर्शन नहीं करता है।

यदि मैं कर सकता हूं तो मैं प्रोटोबफ का हर जगह उपयोग करूंगा। यह अमीर, जटिल, मंच स्वतंत्र, आगे और पीछे-संगत प्रोटोकॉल बनाने के लिए एक अद्भुत उपकरण है।

परिशिष्ट

के बाद से ऐसा लगता है लोगों को इस सवाल का जवाब पढ़ रहे हैं की तरह, मैं साझा करना चाहिए मैंने सीखा है कि सी ++ Protobuf में आप फिर से उपयोग जब पढ़ने अक्रमांकन संदेश वस्तुओं malloc आवृत्ति को कम करने के लिए कर सकते हैं कि ।

देखें अनुकूलन युक्ति:

https://developers.google.com/protocol-buffers/docs/cpptutorial

+0

धन्यवाद आपके इनपुट के लिए जेम्स, बहुत सराहना की :) – jvaz