প্রতিটি সিস্টেমের জন্য স্থানীয় তালিকাগুলি ক্লাসগুলির জন্য মেমরির ব্যবহার বাড়িয়ে তুলবে।
এটি একটি traditional তিহ্যবাহী স্পেস-টাইম ট্রেড অফ ।
সমস্ত সত্তাটির মাধ্যমে পুনরাবৃত্তি হওয়া এবং তাদের স্বাক্ষরগুলি পরীক্ষা করা সরাসরি কোডের ক্ষেত্রে, আপনার সিস্টেমগুলির সংখ্যা বাড়ার সাথে সাথে এটি অকার্যকর হয়ে উঠতে পারে - এমন একটি বিশেষ সিস্টেমের কল্পনা করুন (এটি ইনপুট হতে দিন) এটি হাজারো সম্পর্কযুক্ত সংস্থার মধ্যে সম্ভবত তার একক স্বার্থের সন্ধান করে imagine ।
এটি বলেছিল, আপনার লক্ষ্যগুলির উপর নির্ভর করে এই পদ্ধতিটি এখনও যথেষ্ট ভাল হতে পারে।
যদিও, আপনি যদি গতি সম্পর্কে চিন্তিত হন তবে অবশ্যই বিবেচনার জন্য আরও একটি সমাধান রয়েছে।
প্রতিটি সিস্টেমে তাদের আগ্রহী সত্তাগুলির স্থানীয় তালিকা থাকা উচিত?
যথাযথভাবে। এটি একটি স্ট্যান্ডার্ড পদ্ধতির যা আপনাকে শালীন পারফরম্যান্স দেয় এবং এটি কার্যকরভাবে কার্যকর করা উচিত। মেমরির ওভারহেড আমার মতে উপেক্ষণীয় - আমরা পয়েন্টারগুলি সঞ্চয় করার বিষয়ে কথা বলছি।
এখন কীভাবে এই "আগ্রহের তালিকাগুলি" বজায় রাখা যায় তা স্পষ্ট নাও হতে পারে। ডেটা কনটেইনার হিসাবে std::vector<entity*> targets
সিস্টেমের শ্রেণীর অভ্যন্তর পুরোপুরি যথেষ্ট। এখন আমি যা করি তা হ'ল:
কোনও সত্তা অপসারণ করা সম্পূর্ণরূপে সাদৃশ্যপূর্ণ, কেবলমাত্র সেই ব্যবধানের সাথে আমরা যদি মুছে ফেলি তবে যদি কোনও সিস্টেম আমাদের বর্তমান স্বাক্ষরের সাথে মিলিত হয় (যার অর্থ হ'ল সত্তাটি ছিল) এবং নতুন স্বাক্ষরের সাথে মেলে না (যার অর্থ সত্তা আর থাকা উচিত নয়) )।
এখন আপনি স্টাডি :: তালিকার ব্যবহার বিবেচনা করছেন কারণ ভেক্টর থেকে অপসারণ করা ও (এন), এটি উল্লেখ না করে প্রতি বার আপনি মধ্য থেকে সরানোর সময় আপনাকে বড় পরিমাণে ডেটা স্থানান্তর করতে হবে। আসলে, আপনার দরকার নেই - যেহেতু আমরা এই স্তরের প্রক্রিয়াকরণ আদেশের বিষয়ে চিন্তা করি না আমরা কেবল এসটিডি কল করতে পারি :: সরানো এবং এই সত্যের সাথে বাঁচতে পারি যে প্রতিটি মুছে ফেলার পরে আমাদের কেবল ও (এন) অনুসন্ধান করতে হবে থেকে সরানো সত্তা।
স্টাড :: তালিকা আপনাকে ও (1) মুছে ফেলবে কিন্তু অন্যদিকে আপনার অতিরিক্ত মেমরির ওভারহেডের পরিমাণ রয়েছে। এছাড়াও মনে রাখবেন যে বেশিরভাগ সময় আপনি সত্তাগুলি প্রক্রিয়াকরণ করবেন এবং তাদের অপসারণ করবেন না - এবং এটি অবশ্যই স্ট্যান্ড :: ভেক্টর ব্যবহার করে দ্রুত সম্পন্ন করা হবে।
যদি আপনি খুব কার্য সম্পাদন সমালোচনা করে থাকেন তবে আপনি অন্য ডেটা অ্যাক্সেস করার ধরণটি বিবেচনা করতে পারেন , তবে উভয় উপায়েই আপনি কিছু ধরণের "আগ্রহের তালিকাগুলি" বজায় রেখেছেন। তবে মনে রাখবেন যে আপনি যদি আপনার সত্তা সিস্টেম এপিআই যথেষ্ট পরিমাণ বিমূর্ত রাখেন তবে সিস্টেমের সত্তা প্রক্রিয়াকরণ পদ্ধতির উন্নতি করতে সমস্যা হওয়া উচিত নয় যদি আপনার ফ্রেমরেট তাদের কারণে ড্রপ করে - তবে আপাতত, কোডটি আপনার পক্ষে সহজতর পদ্ধতিটি বেছে নিন - কেবলমাত্র তারপরে প্রোফাইল এবং প্রয়োজনে উন্নত করুন।