আমি একটি নেট নেট অ্যাপ্লিকেশনটিতে কাজ করছি, এটি দ্বিগুণ ফিরতে দুটি ডাবলগুলির জন্য একটি ব্যয়বহুল গণনা করে। এই গণনা কয়েক হাজার আইটেমের প্রতিটি জন্য সঞ্চালিত হয় । এই গণনাগুলি Task
থ্রেডপুলের থ্রেডে একটিতে সঞ্চালিত হয় ।
কয়েকটি প্রাথমিক পরীক্ষায় দেখা গেছে যে একই গণনাগুলি বারবার সম্পাদিত হয়, তাই আমি এন ফলাফলগুলি ক্যাশে করতে চাই । যখন ক্যাশে পূর্ণ হয়, আমি সর্বনিম্ন- প্রায়শই ব্যবহৃত ব্যবহৃত আইটেমটি ফেলে দিতে চাই । ( সম্পাদনা: আমি বুঝতে পেরেছিলাম যে প্রায়শই প্রায়শই বোঝা যায় না, কারণ যখন ক্যাশে পূর্ণ থাকে এবং আমি একটি ফলাফল নতুন সুনির্দিষ্ট সাথে প্রতিস্থাপন করতাম, তবে প্রায়শই ব্যবহৃত হত এবং পরের বার একটি নতুন ফলাফল গণনা করার সাথে সাথে প্রতিস্থাপন করা হত এবং ক্যাশে যুক্ত)
এটি বাস্তবায়নের জন্য, আমি ইনপুট এবং ক্যাশেড ফলাফলগুলি সংরক্ষণ করার জন্য একটি Dictionary<Input, double>
(যেখানে Input
দুটি শ্রেণির ইনপুট ডাবল ভ্যালু সংরক্ষণ করে একটি মিনি-ক্লাস হবে ) ব্যবহার করার কথা ভাবছিলাম । যাইহোক, আমাকে শেষ বার কখন ফলাফল ব্যবহার করা হয়েছিল সে সম্পর্কেও নজর রাখতে হবে। এর জন্য আমি মনে করি ক্যাশে পূর্ণ হওয়ার সময় ডিকোনারি থেকে কোনও ফলাফল সরিয়ে ফেলতে আমার প্রয়োজনীয় তথ্য সংরক্ষণের জন্য আমার দ্বিতীয় সংগ্রহের প্রয়োজন হবে। আমি উদ্বিগ্ন যে এই তালিকাটি ক্রমাগত বাছাই করা নেতিবাচকভাবে প্রভাব ফেলবে।
এটি করার কি আরও ভাল (অর্থাত্ আরও পারফরম্যান্ট) উপায় আছে, বা এমন একটি সাধারণ ডেটা স্ট্রাকচার, যা সম্পর্কে আমি অজানা? আমার সমাধানটির অনুকূলতা নির্ধারণ করতে আমার কী ধরণের জিনিসগুলি প্রোফাইল / মাপ করা উচিত?