Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Advanced
  5. Q30. Explain the concept of memoization with an example.
JavaScriptAdvanced

Q30. Explain the concept of memoization with an example.

একই হিসাব বারবার না করে ফল মনে রাখার কৌশল, Map দিয়ে বাস্তব উদাহরণ।

Memoization মানে কোনো ফাংশনকে দিয়ে একবার হিসাব করা হলে সেই ফলত্র মনে রাখা — পরে একই ইনপুট এলে আবার হিসাব না করে সঙ্গে সঙ্গে ফলত্র ফেরত দেওয়া।

memoization ছাড়াjavascript
javascript
function slowSquare(n) {
  console.log("হিসাব হচ্ছে:", n);
  return n * n;
}

slowSquare(4); // হিসাব হচ্ছে: 4 → 16
slowSquare(4); // আবার হিসাব হচ্ছে: 4 → 16
slowSquare(5); // হিসাব হচ্ছে: 5 → 25
memoize করাjavascript
javascript
function memoize(fn) {
  const cache = new Map();

  return function (...args) {
    // key হিসাব করা
    const key = JSON.stringify(args);

    if (cache.has(key)) {
      console.log("cache থেকে:", key);
      return cache.get(key);
    }

    console.log("নতুন করে হিসাব:", key);
    const result = fn(...args);
    cache.set(key, result);
    return result;
  };
}

const fastSquare = memoize(slowSquare);

fastSquare(4); // নতুন করে হিসাব: [4] → 16
fastSquare(4); // cache থেকে: [4] → 16
fastSquare(5); // নতুন করে হিসাব: [5] → 25

ধাপে ধাপে — প্রথমবার fastSquare(4) ডাকলে cache-এ কিছু নেই, তাই আসল হিসাব হয় এবং ফল 16 cache-এ জমা হয়। দ্বিতীয়বার একই আর্গুমেন্ট এলে cache-এ ফল পাওয়া যায়, তাই আর হিসাব হয় না। 5-এর জন্য নতুন key, তাই সেটা আবার হিসাব হয়।

মূল শর্ত হলো — cache-এর key তৈরি হতে হবে ইনপুটের সব তথ্য ধরে। শুধু প্রথম আর্গুমেন্ট ধরলে বাকিগুলো বদলে গেলে ভুল ফলত্র ফিরে যাবে।

key বানানোর নিয়মjavascript
javascript
// বহু আর্গুমেন্ট থাকলে সব ধরতে হবে
const memoSum = memoize((a, b) => a + b);

memoSum(2, 3); // 5
memoSum(2, 3); // cache থেকে 5

// শুধু একটা আর্গুমেন্ট ধরলে ভুল হতো
// memoSum(4, 1) আর memoSum(4, 9) একই ফল দিত

Map-এর বদলে WeakMap ব্যবহার করলে cache দীর্ঘদিন টিকে থাকে না — key object মুছে গেলে entry-ও মুছে যায়, ফলে মেমরি ফাঁকা হয় না।

Memoization শুধু ফাংশনের জন্য নয়, React-এর useMemo ও useCallback ধারণাটিও একই ধরনের পুনরায় হিসাব এড়ানো।

বিষয়Memoizedসাধারণ
একই ইনপুটে সময়প্রথমটির সমাননতুন করে হিসাব
মেমরিবাড়েবাড়ে না
উপযুক্তব্যয়বহুল, ইনপুট সীমিতসবসময়
সতর্কতা

Memoization শুধু তখনই লাভবান, যখন ইনপুট সীমিত থাকে — যেমন সংখ্যা বা ছোট string। ইনপুট অসীম (যেমন timestamp) হলে cache কখনো মিলে না, বরং মেমরি উপচে পড়ে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Advanced বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com