ক্যাচিং এবং স্মৃতিচারণের মধ্যে পার্থক্য কী?


114

আমি জানতে চাই যে এর মধ্যে আসল পার্থক্য কী cachingএবং memoization
আমি এটি দেখতে পেয়েছি, উভয়ই স্টোর করে ডেটা পেতে বারবার ফাংশন কলগুলি এড়ানো জড়িত ।

দুজনের মধ্যে মূল পার্থক্য কী?


আমি আশ্চর্য হই যে আপনি যদি "মেমোয়েজেশন হ'ল ক্যাশে" হিসাবে বলতে পারেন তবে "অ্যারেটি স্প্রে করা অ্যারে"। অন্য কথায়, আপনি কেবলমাত্র প্রতিটি সম্ভাব্য ইনপুট সংমিশ্রণকে গণ্য করার পরিবর্তে "চাহিদা অনুযায়ী" জিনিসগুলি সঞ্চয় করেন।
শ্রীধর সারনোবাত

উত্তর:


110

মেমোয়েজেশন হল ক্যাচিংয়ের একটি নির্দিষ্ট ফর্ম যা এর পরামিতিগুলির উপর ভিত্তি করে কোনও ফাংশনের রিটার্ন মান ক্যাচিংয়ের সাথে জড়িত ।

ক্যাচিং আরও সাধারণ শব্দ; উদাহরণস্বরূপ, এইচটিটিপি ক্যাচিং ক্যাশ করছে তবে মেমোয়েজেশন নয়।

উইকিপিডিয়া বলেছেন :

যদিও ক্যাশে সম্পর্কিত, মেমোয়েজেশন বলতে এই অপটিমাইজেশনের একটি নির্দিষ্ট কেসকে বোঝায়, এটিকে বাফারিং বা পৃষ্ঠা প্রতিস্থাপনের মতো ক্যাশিংয়ের ফর্ম থেকে আলাদা করে।


2
তবে আপনি যে অংশটি কোনও ক্রিয়াকলাপের সাথে ক্যাশে ব্যবহার করা হয় এবং এটি 'স্মৃতিচারণ' নামকরণ করে সে অংশটি আপনি সর্বদা সুরেন্ড করতে পারেন। যদিও পার্থক্যটি হ'ল আপনি নিজের ফাংশনে ক্যাশে নীতি নিয়ন্ত্রণ করছেন, অন্যদিকে মেমোয়েজেশন উচ্চতর ক্রম এবং আমার ধারণা ফাংশনের বাইরে ঘটে।
নিকোলাস

এইচটিটিপি ক্যাচিং কেন মুখস্থ নয়? এটি প্যারামিটারের ভিত্তিতেও (অনুরোধ করা সংস্থার URL)।
টোপো পুনরায় ইনস্টল করুন মনিকা

@ টোমোর্টো: পছন্দ If-Matchএবং মেয়াদ শেষ হওয়ার কারণে features স্মৃতিচারণ শুধুমাত্র খাঁটি ফাংশনটির জন্য অর্থবোধ করে, যা এইচটিটিপি খুব কমই হয়।
স্ল্যাक्स

@নিকোলস, বেশ নয়, আমি মনে করি। আমি মনে করি যে স্মৃতিকথায় "ফাংশন" শব্দটি শুদ্ধ / গাণিতিক অর্থে ব্যবহৃত হয় is প্রদত্ত ঠিকানা থেকে একটি ওয়েব পৃষ্ঠা ডাউনলোড করা কোনও ফাংশন হিসাবে বিবেচনা করা যায় না, কারণ পৃষ্ঠাটি পরিবর্তিত হতে পারে।
আলেক্সি

@ আলেক্সি একই মন্তব্যটি ক্যাশে প্রযোজ্য নয়? এই সমস্ত কৌশল একই ফাংশন কল একই ফলাফল প্রদান উপর নির্ভর করে, ওরফে কোন প্রবাহের পার্শ্ব প্রতিক্রিয়া।
নিকোলাস

47

যেহেতু আমি তাদের ব্যবহার করতে দেখেছি, "স্মৃতিচারণ" হ'ল "একটি ডিটারমিনিস্টিক ফাংশনের ফলাফলকে ক্যাশে করা" যা একই ফাংশন এবং ইনপুটগুলির পরে যে কোনও সময়ে পুনরুত্পাদন করা যেতে পারে।

"ক্যাশিং" এর মধ্যে মূলত কোনও আউটপুট-বাফারিং কৌশল অন্তর্ভুক্ত থাকে, উত্সের মান একটি নির্দিষ্ট সময়ে পুনরুত্পাদনযোগ্য কিনা। প্রকৃতপক্ষে, ক্যাচিংটি ইনপুট বাফারিং কৌশলগুলি যেমন ডিস্ক বা মেমরির লিখন-ক্যাশে হিসাবে উল্লেখ করতে ব্যবহৃত হয় । সুতরাং এটি অনেক বেশি সাধারণ শব্দ।


আপনি কি নিশ্চিত যে ফাংশনটি ডিটারমিনিস্টিক হতে হবে?
Gherman

4
@ জার্মান, হ্যাঁ, স্মৃতিচারণ নির্ধারণের উপর নির্ভর করে। ক্লাসিক উদাহরণটি ফিরোনাচি সিকোয়েন্স বা ফ্যাকটোরিয়াল এর মতো একটি পুনরাবৃত্ত আলগোরিদিম। বেস কেস পর্যন্ত সমস্ত উপায়ে পুনরায় কম্পিউটিংয়ের পরিবর্তে, একটি মেমোজাইজড ফাংশন শর্ট সার্কিটের সাথে এর মানগুলি ইতিমধ্যে গণনা করা মানগুলির জন্য পূর্ববর্তী ফলাফলগুলি পুনরায় ব্যবহার করে শর্ট সার্কিট করবে। এটি স্পষ্টতই একই ইনপুটটির উপর নির্ভর করে সর্বদা একই আউটপুট দেয় যা নির্ধারণবাদের সংজ্ঞা। অন্যদিকে, ক্যাচিং প্রায়শই অ-নিরস্তুত্ববাদী (উদাহরণস্বরূপ এলোমেলো বা টাইমস্ট্যাম্পড) প্রক্রিয়াগুলির জন্য ব্যবহৃত হয়, এই বোঝার ফলে ফলাফলগুলি কোনও "রিফ্রেশ" মানের সাথে মেলে না।
হার্পো

6

আমি মনে করি আপনি যখন আইও অপারেশনের ফলাফলগুলি সংরক্ষণ করেন বা মূলত বাইরে থেকে আপনার কাছে আসা কোনও ডেটা (ফাইল, নেটওয়ার্ক, ডিবি কোয়েরি) ব্যবহার করেন তখন সাধারণত ক্যাশিং শব্দটি ব্যবহৃত হয়। টার্ম মেমোইজেশন সাধারণত আপনার নিজস্ব গণনার ফলাফল সংরক্ষণের ক্ষেত্রে প্রযোজ্য, উদাহরণস্বরূপ ডায়নামিক প্রোগ্রামিংয়ের প্রসঙ্গে।


1

স্মৃতিচারণ একটি ডিস্ট্রিমেন্টিক ফাংশনের ফলাফলকে ক্যাশে করার একটি বিশেষ ফর্ম। এর অর্থ হল যে ফাংশনের বাইরে ফলাফলের ক্যাশে করা স্মৃতিচারণ নয় কারণ ফাংশনটিকে নতুন ফলাফল গণনা করার সময় ক্যাশেটিকে পরিবর্তন করতে হবে (ইতিমধ্যে ক্যাশে নেই) সুতরাং এটি আর কোনও (শুদ্ধ) ফাংশন হবে না। মেমোয়েজেশন সাধারণত অতিরিক্ত আর্গুমেন্ট হিসাবে (কোনও সহায়ক কার্যক্রমে) ক্যাশে পাস করার অর্থ দেয়। মেমোয়েজেশন এমন একক ক্রিয়াকলাপকে অনুকূল করবে যা একক অ্যাক্সেসের জন্য কয়েকবার মান গণনা করতে হবে। ক্যাচিং একই পরামিতিগুলির সাথে কয়েকবার ডাকা ফাংশনগুলি অনুকূল করে তোলে। অন্য কথায়, মেমোয়েজেশন প্রথম অ্যাক্সেসকে অনুকূল করে তুলবে যে ক্যাচিং কেবল পুনরাবৃত্তির অ্যাক্সেসগুলিকে অনুকূল করবে।


0

আমি অন্য মহান উত্তরগুলি যুক্ত করতে চাই memoization এছাড়াও হিসাবে পরিচিত হয় সারণীকরণ । আমি মনে করি যাঁরা স্মৃতিচারণ এবং ক্যাশিং তা কী শিখেন তাদের জন্য সেই শব্দটি জানাও জরুরী।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.