July 16, 2019

hosein

Tutorials

Calculating how much time does a js function take to run

In programming, performance is always one of the most important factors to consider, there are usually different solutions to a problem, but how to know which approach is the fastest? Is just getting the code to work enough?

In today’s short tutorial we’ll learn how to calculate how much time a function takes to run so that we can prevent potential lags and freezes.

JS has a reliable built in function for doing that and that is performance.now()

imagine we need a function to calculate sum of all numbers from 1 to n

the first solution that comes to mind is doing that with a for loop, let’s calculate how much does this function take to run:

function sumNumber(n) {
  let sum = 0;
  for (let i = 1; i <= n; i++) {
    total += i;
  }
  return sum;
}

var t1 = performance.now();
sumNumber(1000000000);
var t2 = performance.now();
console.log(`Time Elapsed: ${(t2 - t1) / 1000} seconds.`) //almost 0.9s

so by subtraction t1 from t2 we find out that this function takes about 0.9 seconds to run which isn’t good.

now let’s try a different solution and use a mathematical formula instead of looping for 1 billion times!

function sumNumberNew(n) {
  return n * (n+1) / 2;
}

var t1 = performance.now();
var gg = sumNumberNew(1000000000);
var t2 = performance.now();
console.log(`Time Elapsed: ${(t2 - t1) / 1000} seconds.`) //almost 0.00001s!

so whenever we doubt that if a function we wrote runs fast enough we can do a quick check by running performance.now before and after running the function.