DEV Community

Avinash Maurya
Avinash Maurya

Posted on

Memoization

Memoization is a technique used to optimize function calls by caching the results of expensive function calls and returning the cached result when the same inputs occur again. This can be especially useful in React applications to optimize the rendering performance.

In JavaScript and React (ES6 and later), you can implement memoization in various ways. One common approach is to use a cache object to store the results of function calls. Here's a simple example:


// Memoization cache

const cache = new Map();



// Example function to be memoized

const expensiveFunction = (param) => {

 if (cache.has(param)) {

  console.log('Fetching from cache:', param);

  return cache.get(param);

 }



 // Perform expensive computation

 const result = /* perform computation based on param */;



 // Cache the result

 cache.set(param, result);

 console.log('Result not in cache. Calculating and caching:', param);



 return result;

};



// Example usage

const result1 = expensiveFunction('input1'); // Expensive computation

const result2 = expensiveFunction('input2'); // Expensive computation



// Subsequent calls with the same input will use the cached result

const result1Cached = expensiveFunction('input1'); // Fetching from cache

const result2Cached = expensiveFunction('input2'); // Fetching from cache

Enter fullscreen mode Exit fullscreen mode

In the context of React, you can use the useMemo hook for memoization. Here's an example:


import React, { useMemo } from 'react';



const MyComponent = ({ data }) => {

 // Memoize the result of the expensive computation based on data

 const result = useMemo(() => {

  console.log('Performing expensive computation based on data:', data);

  // Expensive computation based on data

  return /* result */;

 }, [data]); // Memoize only when data changes



 return (

  <div>

   {/* Render using the memoized result */}

   <p>Result: {result}</p>

  </div>

 );

};



export default MyComponent;

Enter fullscreen mode Exit fullscreen mode

In this example, the useMemo hook is used to memoize the result of the expensive computation based on the data prop. The computation is only recalculated when the data prop changes.

Keep in mind that memoization is a trade-off between memory and computation. It reduces redundant computations but increases memory usage to store cached results. Always assess the specific needs and characteristics of your application when deciding whether to apply memoization.

Top comments (0)