2010-08-25 11 views
8

मैं एक खेल के लिए विभिन्न वस्तुओं का एक ग्राफ स्टोर करना चाहता हूं, उनके वर्ग संबंधित हो सकते हैं या नहीं भी हो सकते हैं, वे सरल संरचनाओं के वैक्टर शामिल कर सकते हैं या नहीं।बाइनरी पार्सर या क्रमबद्धता?

  • मैं पार्सिंग ऑपरेशन तेज़ होना चाहता हूं, डेटा बहुत बड़ा हो सकता है।
  • नई चीजें जोड़ना कठिन नहीं होना चाहिए, और इसे पिछड़े संगतता को तोड़ना नहीं चाहिए।
  • छोटे फ़ाइल आकार महत्वपूर्ण
  • पठनीयता की तरह है मायने रखता है

क्रमबद्धता मेरा मतलब रखकर बनाने खुद वस्तुओं को क्रमानुसार, जो प्रभावी है, लेकिन मुझे लगता है कि के लिए विभिन्न वस्तुओं के लिए अलग क्रमबद्धता तरीकों लिखने के लिए की आवश्यकता होगी।

बाइनरी पार्सिंग/कंपोज़िंग द्वारा मेरा मतलब है, इन वस्तुओं के लिए डेटा धारण करने और पढ़ने वाले पार्सर्स/संगीतकारों का एक नया पेड़ बनाना, और मेरे ऑब्जेक्ट्स को अपने डेटा को पुश/खींचने के लिए इसे पास करना।

मैं जेसन का भी उपयोग कर सकता हूं, लेकिन यह पढ़ने के लिए बहुत धीमा हो सकता है, और जब मैट्रिस के बहुत बड़े सेट और संख्याओं की बात आती है तो यह बहुत आकार प्रभावी नहीं होता है।

+0

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

उत्तर

3

प्वाइंट:

  • फास्ट पार्सिंग: बाइनरी (जब से तुम जरूरी "पार्स" की जरूरत नहीं है, तो आप सिर्फ deserialize कर सकते हैं)
  • जोड़ना नई चीजें: पाठ
  • छोटे: पाठ (भले ही gzipped पाठ द्विआधारी से बड़ा है, यह बहुत बड़ा नहीं होगा)।
  • पठनीयता: पाठ

ताकि पाठ के लिए तीन वोट, द्विआधारी के लिए एक अंक है। व्यक्तिगत रूप से, मैं छवियों को छोड़कर सब कुछ के लिए पाठ के साथ जाऊंगा (और अन्य डेटा जो "स्वाभाविक रूप से" बाइनरी है)। फिर, सब कुछ एक बड़ी ज़िप फ़ाइल में स्टोर करें (मैं कई गेमों के बारे में सोच सकता हूं या इसके करीब कुछ)।

अच्छा पढ़ता है: The Importance of Being Textual और Power Of Plain Text

1

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

+0

बहुत अच्छा लगता है, मैं इसे जांचने जा रहा हूं। –

+0

अच्छी तरह से 1 एमबी से अधिक संदेशों के लिए अनुशंसित नहीं है, एकल जाल डेटा आसानी से पार हो सकता है, डाइविंग डेटा को संदेशों के लिए जटिल पेड़ संरचना की आवश्यकता होती है जो चीजों को जटिल कर सकती हैं। –

0

हम Boost.Serialization का उपयोग कर रहे हैं। यह नहीं पता कि यह समकस द्वारा पेश किए गए लोगों के बगल में कैसा प्रदर्शन करता है। बिंदु से

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