innovationM
← Back to Blogs

Java Application

Memoization in Javascript

InnovationM Admin 08 Jun 2023 3 min read
Memoization in Javascript

Memoization is a powerful technique used in computer science to optimize the
performance of functions that are called repeatedly with the same arguments. In
JavaScript, memoization is particularly useful for expensive computations that
involve complex algorithms or data structures.

At its core, memoization involves caching the result of a function based on its
input arguments. If the function is called again with the same arguments, the
cached result is returned instead of recomputing the result from scratch. This can
significantly improve performance and reduce the amount of time and resources
required to execute the function.

To implement memoization in Javascript, there are a few different approaches you
can take. One common technique is to use a simple object to store the cached
results.

Here’s an example:

function memoize(func) {
const cache = {};
return function(num) {
if (cache[num]) {
return cache[num];
} else {
const result = func(num);
cache[num] = result;
return result;
}
};
}

In this example, we define a higher-order function ‘memoize’ that takes a function
‘func’ as its argument. The ‘memoize’ function returns a new function that wraps
the original ‘func’ function.

The wrapper function uses a cache object to store the results of previous
function calls. Each time the wrapped function is called with a new set of

arguments, it checks whether the result has already been cached. If it has, the
cached result is returned. If not, the wrapped function calls the original ‘func’
function with the arguments caches the result and returns it.

Here’s an example of how can use the memoize function to optimize a function
that calculates Fibonacci numbers:

function fibonacci(n) {
if (n <= 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
const memoizedFibonacci = memoize(fibonacci);
console.log(memoizedFibonacci(40)); // returns 165580141

In this example, we define a function ‘Fibonacci’ that recursively calculates
Fibonacci numbers. We then use the ‘memoize’ function to create a new function
‘memoizedFibonacci’ that caches the result of previous function calls.

When we call the ‘‘memoizedFibonacci(40)’’, the results are returned almost
instantaneously because the result has already been cached from previous
function calls. Without memoization, calculating the 40th Fibonacci number
would take several seconds or even minutes.

In conclusion, memoization is a powerful technique for optimizing the
performance of functions that are called repeatedly with the same arguments. In
JavaScript, memoization can be implemented using a simple object to store
cached results. By using memoization, you can significantly improve the
performance of your code and reduce the amount of time and resources required
to execute complex algorithms or data structures.

About the Author

InnovationM Admin

Contributor at InnovationM.

LinkedIn

Transform Your Ideas with Expert Guidance

icon
15+ Years of Expertise

Delivering high-impact solutions with years of industry experience.

icon
100+ Satisfied Clients

Helping contact industry software experts to achieve their brand goals.

icon
250+ In-House Team Members

A skilled team ready to tackle projects of any scale.

Book a consultation call with our experts today