পটভূমি: আমি একটি EBML ফাইল লেখার জন্য মাইক্রো কন্ট্রোলার সি কোড লিখছি। ইবিএমএল নেস্টেড উপাদানগুলির সাথে বাইনারি এক্সএমএলের মতো, তবে শুরু এবং শেষ ট্যাগগুলির পরিবর্তে একটি শুরু আইডি, দৈর্ঘ্য এবং তারপরে ডেটা থাকে। আমি এটি একটি কম পাওয়ার অ্যাপ্লিকেশনে বহিরাগত ফ্ল্যাশে লিখছি, তাই আমি ফ্ল্যাশ অ্যাক্সেসগুলি সর্বনিম্ন রাখতে চাই। স্মৃতিও সীমিত, কারণ কিছুই কখনও সহজ হয় না।
আমি যখন পুরো ইবিএমএল উপাদানটি মেমরিতে রাখতে পারি, তারপরে এটিকে উত্পন্ন করা সহজ কারণ আমি ফিরে যেতে পারি এবং প্রতিটি এলিমেন্টের দৈর্ঘ্য পূরণ করতে পারি তার পরে আমি জানি যে সেই দৈর্ঘ্যটি কী। সমস্যাটি হ'ল আমি যখন পুরো উপাদানটিকে মেমরির মধ্যে রাখতে পারি না তখন করণীয়। আমি যে বিকল্পগুলি দেখছি তা হ'ল:
- আমি যা জানি তা লিখুন, তারপরে ফিরে যান এবং দৈর্ঘ্যে যুক্ত করুন (সবচেয়ে সহজ, তবে আমার চেয়ে বেশি ফ্ল্যাশ অ্যাক্সেস যুক্ত করুন)
- আমি লিখতে শুরু করার আগে প্রতিটি উপাদানটির দৈর্ঘ্য গণনা করুন (তুলনামূলক সহজ, তবে প্রসেসরের অনেক সময়)
- আমার স্মৃতি একবারে পূর্ণ হয়ে গেলে মোডগুলি স্যুইচ করুন, যাতে আমি তখন ডেটা দিয়ে চালিয়ে যাই তবে কেবল মেমরিতে ইতিমধ্যে সংরক্ষিত উপাদানগুলির দৈর্ঘ্য গণনা করতে। তারপরে স্মৃতিতে আমার যা আছে তা লিখুন এবং ফিরে যান এবং আমি যেখান থেকে ছেড়ে এসেছি সেই ডেটা প্রক্রিয়া চালিয়ে যান। (আমার প্রিয় বিকল্পটি এখনও অবধি)
- যখন উপাদানগুলি লেখার প্রয়োজন হয় তাদের সর্বোচ্চ বা সবচেয়ে খারাপ ক্ষেত্রে দৈর্ঘ্য দিন এবং তাদের চূড়ান্ত দৈর্ঘ্য এখনও জানা যায় নি। (উপরের চেয়ে সহজ, তবে ব্যাকফায়ার এবং স্থান নষ্ট করতে পারে)
প্রশ্ন: এটি দেখে মনে হচ্ছে এটি একটি তুলনামূলক সাধারণ সমস্যা হওয়া উচিত যা সম্পর্কে লোকেরা ভেবেছিল। আমি জানি কিছু ডেটা প্যাকেট তৈরি করার সময় এটিও ঘটতে পারে। আমি এখানে কি অনুপস্থিত কোন আরও ভাল / আরও সাধারণ / আরও গ্রহণযোগ্য কৌশল আছে? বা ইস্যুটির জন্য কেবল কিছু শর্তাবলী যা আমি অনুসন্ধান করতে পারি?